選擇開發工具在嵌入式系統設計中,開發工具的選取是一個重要的考慮因素,通常這是與開發項目的需求和應用背景相關。一般嵌入式開發工具包含用於目標系統的交叉編譯器、連接器、調試器以及輔助處理用的二進位文件分析工具等。
目前可以用來編譯連結產生 ARM 處理器執行代碼的開發工具主要有如下幾類:1. ARM 公司提供的 ARM Developer Suite 集成開發環境主要工具有 armasm、armcc、armlink、fromelf 等。
2. GNU 組織提供的 tool chain for arm主要工具有 arm-elf-gcc、arm-elf-gdb、arm-elf-objcopy 等3. Microsoft公司提供的 eMbedded Visual Tools主要工具有 clarm、clthumb、c2_arm、link、lib等這裡我們選用 ARM 公司提供的 ADS 下的工具集來編譯我們的程序和連結目標代碼並最終生成可執行的二進位映像。這裡介紹一下主要會用到的一些工具:armasm.exe : 彙編文件編譯器armcc.exe : C 文件編譯器armlink.exe : 目標文件連接器fromelf.exe : 用於將 axf 或者 elf 格式轉換成其他格式的文件,例如二進位映像。
armprof.exe : 對調試過程中生成的 profiling 記錄文件做分析用的工具軟體啟動代碼由於板子的 0x0 地址處是 32M 的Flash ROM,因此在板子加電後,會從 Flash 中順序執行啟動代碼。為了能使得mC/OS-II 運行,啟動代碼需要完成如下工作:1. 設置 異常向量表,即在 0x0-0x1c 位置放置7條跳轉指令(其中 0x14 為空)
2.分別實現每種異常的處理程序,其中包括 Reset_Handler、Undefined_Handler、SWI_Handler、Prefetch_Handler、Abort_Handler、IRQ_Handler、FIQ_Handler. 3. 程序從 Reset_Handler 進入後,需要首先進行相關硬體的初始化操作,例如 初始化SDRAM、CPU speed、Interrupt Controller、UART、timer 等。
4. 建立每種異常狀態下的系統堆棧,為了簡單起見可以只在 svc 態 和 irq 態下建立堆棧:setup_svc_stack,setup_irq_stack. 5. 強制 arm 處理器狀態轉換為 svc 管理態。
6. 跳轉到mC/OS-II 代碼的 main 入口,實際上是編譯連結後產生的 __main 入口。
時鐘與中斷處理時鐘控制邏輯在圖1中,有4種和系統時鐘相關寄存器,它們的含義如下:● OSCR: 一個自動遞增計數的 32 位計數器。
● OSMR3-0: 4 個 32 位的匹配寄存器,當 OSCR 的值匹配時產生中斷。
● OSSR: 狀態寄存器,當 OSCR 和 OSMR 匹配時,會對 OSSR 做標誌。
● OIER: 使能寄存器,表示當匹配發生時,允許在 OSSR 設置一個標識位。
OSCR 在自動累加的過程中,與OSMR裡面設定的那些匹配寄存器進行匹配,發現有匹配的事件時,就會對 OSSR 中的相應位置設一個標誌位「1」,表示OSCR與對應的OSMR 發生了匹配。當然這個匹配發生的前提是發生匹配的那個OSMR在OIER中的相應位被使能,否則OSMR中的設置將不起作用。