Github
 
 

作業要求 (A)

  • 安裝和設定 QEMU
  • 依據指示,將 00-Semihosting, 00-HelloWorld, …, 07-Threads 均實際測試並研讀程式碼
  • 在 github 上 fork mini-arm-os,並修改07-Threads(不要增加新的目錄!),提供基本的 shell,然後能夠用新建立的 thread 計算 fibonacci 數列
  • shell 程式碼可參照 rtenv+ main.c,裡頭提供 shell 實做
  • 建立新的 Hackpad,列於「+作業區」,需要標注「開發紀錄 (A)」
 
  • ARM Cortex-M3處理器核心只支援Thumb-2指令集
  • 其優點如下
  • No state switching overhead, saving both execution time and instruction space
  • No need to separate ARM code and Thumb code source files, making software development and maintenance easier
  • It’s easier to get the best efficiency and performance, in turn making it easier to write software, because there is no need to worry about switching code between ARM and Thumb to try to get the best density/performance
  • LSB = Least significant bit
  • 最低有效位(英語:Least Significant Bit,lsb)是指一個二進位數字中的第0位(即最低位),權值為2^0,可以用它來檢測數的奇偶性。與之相反的稱之為最高有效位。在大端序中,lsb指最右邊的位。
  • 最低有效位代表二進位數中的最小的單位,可以用來指示數字很小的變化。
  • startup.c 為啟動程式碼 (以00-HelloWorld為例)
  • 然後會根據內容找到進入點函式 main() 
  • 再編譯時需要加上此參數
  • -nostartfile: 
  • 要求連結階段不要使用標準系統起始檔案(starup file),這在沒有作業系統支援的環境是必要的,因為我們自己處理C語言程式main()函式之前的種種準備動作
  • mini-arm-os/00-HelloWorld/reg.h 裡面的RCC是 Reset and clock control 
  • 用來進行暫存器設定
R00=00000000 R01=00000000 R02=02000000 R03=40011410
R04=00000000 R05=00000000 R06=00000000 R07=20000ff0
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=20000ff0 R14=00000000 R15=00000040
PSR=20000173 --C- T svc32
qemu stm32: hardware warning: Warning: You are attempting to use the GPIOD peripheral while its clock is disabled.
 
R00=00000000 R01=00000000 R02=00000200 R03=40011410
R04=00000000 R05=00000000 R06=00000000 R07=20000ff0
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=20000ff0 R14=00000000 R15=00000040
PSR=20000173 --C- T svc32
qemu stm32: hardware warning: Warning: You are attempting to use the GPIOD peripheral while its clock is disabled.
 
R00=00000000 R01=00000000 R02=02000000 R03=40011410
R04=00000000 R05=00000000 R06=00000000 R07=20000ff0
R08=00000000 R09=00000000 R10=00000000 R11=00000000