摘要:本文介紹了使用ARM公司提供的ADS開發(fā)工具,進(jìn)行移植mC/OS-II的工作。結(jié)合基于StrongARM評估板的硬件結(jié)構(gòu),對移植工作中的若干要點做了詳細(xì)分析。最后,給出了移植體會和程序技巧分析。關(guān)鍵詞:ADS;mC/OS-II;StrongARM;移植選擇開發(fā)工具在嵌入式系統(tǒng)設(shè)計中,開發(fā)工具的選取是一個重要的考慮因素,通常這是與開發(fā)項目的需求和應(yīng)用背景相關(guān)。一般嵌入式開發(fā)工具包含用于目標(biāo)系統(tǒng)的交叉編譯器、連接器、調(diào)試器以及輔助處理用的二進(jìn)制文
&nb
sp; 摘 要: 本文介紹了使用 ARM 公司提供的 ADS 開發(fā)工具,進(jìn)行移植
mC/OS-II 的工作。結(jié)合基于 StrongARM 評估板的硬件結(jié)構(gòu),對移植工作中的若干要點做了詳細(xì)分析。最后,給出了移植體會和程序技巧分析。
關(guān)鍵詞: ADS;mC/OS-II;StrongARM;移植
選擇開發(fā)工具
在嵌入式系統(tǒng)設(shè)計中,開發(fā)工具的選取是一個重要的考慮因素,通常這是與開發(fā)項目的需求和應(yīng)用背景相關(guān)。一般嵌入式開發(fā)工具包含用于目標(biāo)系統(tǒng)的交叉編譯器、
連接器、調(diào)試器以及輔助處理用的二進(jìn)制文件分析工具等。
目前可以用來編譯鏈接產(chǎn)生 ARM 處理器執(zhí)行代碼的開發(fā)工具主要有如下幾類:
1. ARM 公司提供的 ARM Developer Suite 集成開發(fā)環(huán)境
主要工具有 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 下的工具集來編譯我們的程序和鏈接目標(biāo)代碼并最終生成可執(zhí)行的二進(jìn)制映像。這里介紹一下主要會用到的一些工具:
armasm.exe : 匯編文件編譯器
armcc.exe : C 文件編譯器
armlink.exe : 目標(biāo)文件連接器
fromelf.exe : 用于將 axf 或者 elf 格式轉(zhuǎn)換成其他格式的文件,例如二進(jìn)制映像。
armprof.exe : 對調(diào)試過程中生成的 profiling 記錄文件做分析用的工具軟件
啟動代碼
由于板子的 0x0 地址處是 32M 的
FlashROM,因此在板子加電后,會從 Flash 中順序執(zhí)行啟動代碼。為了能使得mC/OS-II 運行,啟動代碼需要完成如下工作:
1. 設(shè)置 異常向量表,即在 0x0-0x1c 位置放置7條跳轉(zhuǎn)指令(其中 0x14 為空)
2.分別實現(xiàn)每種異常的處理程序,其中包括 Reset_Handler、Undefined_Handler、
SWI_Handler、Prefetch_Handler、Abort_Handler、IRQ_Handler、FIQ_Handler。
3. 程序從 Reset_Handler 進(jìn)入后,需要首先進(jìn)行相關(guān)硬件的初始化操作,例如 初始化SDRAM、
CPUspeed、Interrupt Controller、UART、timer 等。
4. 建立每種異常狀態(tài)下的系統(tǒng)堆棧,為了簡單起見可以只在
svc態(tài) 和 irq 態(tài)下建立堆棧:setup_svc_stack,setup_irq_stack。
5. 強制 ARM 處理器狀態(tài)轉(zhuǎn)換為 svc 管理態(tài)。
6. 跳轉(zhuǎn)到mC/OS-II 代碼的 main 入口,實際上是編譯鏈接后產(chǎn)生的 __main 入口。
時鐘與中斷處理
時鐘控制邏輯
在圖1中,有4種和系統(tǒng)時鐘相關(guān)寄存器,它們的含義如下:
● OSCR: 一個自動遞增計數(shù)的 32 位
計數(shù)器。