1.μC/OS-Ⅱ簡介
uC/OS-II讀做“micro COS2”, 意為“微控制器操作系統版本2”。uC/OS-II是著名的,源代碼公開的實時內核,可用于各類8位,16位和32位單片機或DSP。從uC/OS算起,該內核已有十多年應用歷史,在諸多領域得到廣泛應用。
2.μC/OS-Ⅱ的特點
(1)提供源代碼
(2)可固化
(3)可裁剪
(4)可剝奪
(5)多任務
(6)可確定性
(7)任務棧
(8)系統服務
(9)中斷管理
(10)穩定性與可靠性
3.編譯器的選擇
ARM處理器核的C編譯器有很多,大概有SDT,ADS1.2,IAR,TASKING和GCC等。我最終選擇的是ADS1.2編譯程序和調試。
4.ARM7簡介
ARM7處理器核具有用戶,系統,管理,中止,未定義,中斷和快中斷7中工作模式。其中除了用戶模式外其他均為特權模式。同時支持兩個指令集:16位Thumb指令集和32位ARM指令集。
5.開發環境的搭建
操作系統:Windows XP
集成開發環境:ADS1.2
調試環境:AXD(ADS1.2配套的軟件)
6.項目中所運用到的技術創新
(1)實現了加密程序,保護了用戶應用程序代碼,利用在特定的地址0x1fc處寫入特定的值0x87654321實現加密
(2)通過工程配置文件加載程序代碼,實現了寫應用程序的模板工程,不用每次配置工程設置
(3)初始化程序和操作系統代碼都留有很多擴充的接口,方便不同的用戶需要實現不同的啟動代碼功能和擴充操作系統的功能
7.項目的特色
(1)在本文檔中有完整的源代碼,并且有很詳細的注釋
(2)只要具備同樣的軟硬件環境,根據我的《過程與結果總結報告》完全可以實現這個項目
(3)同時完成了引導程序和操作系統的移植
(4)涉及到軟硬件的知識,不僅僅只是軟件
二.移植過程
1.編寫bootloader(ARM啟動代碼)
1.啟動代碼綜述
在一般32位ARM應用系統中,軟件大多數采用C語言進行編程,并且以嵌入式操作系統為開發平臺,這樣大大的提高了開發效率及軟件性能。為了能夠進行系統初始化,通常會用一個匯編文件作為啟動代碼。它可以實現向量表定義、堆棧初始化、系統變量初始化、中斷系統初始化、I/O初始化、外圍初始化和地址重映射等操作。
ARM公司之設計內核,不生產芯片,只是把內核授權給其他廠商。其他廠商購買了授權后加入自己的外設,生產出各具特色的芯片。這樣就促進了基于ARM處理器核的芯片的多元化,但也使得各種芯片的啟動代碼差別很大,不易編寫出統一的啟動代碼。
2.文件的組成
匯編文件1.Startup.S:異常向量表、各模式堆棧初始化和跳到main()函數入口等
2.IRQ.S :負責管理中斷嵌套
C文件 Target.C :初始化目標板
頭文件 Config.H :系統配置和類型定義
Target.H :一些和目標板相關的聲明
LPC2294.H :LPC2000系列芯片特殊寄存器定義
分散加載文件mem_a.Scf:在片內Flash發布,RelInFLASH
Mem_b.Scf:在片內RAM調試,DebugInRAM,在uCOSII中不使用這種布局模式
Mem_c.Scf:在片內Flash調試,DebugInFLASH
3.各源代碼文件內容及其注釋
1.Startup.S:
;**--------------File Info---------------------------------------------
;** File name: Startup.s
;** Last modified Date: 2009-08-17
;** Last Version: 1.0
;** Descriptions: 為 LPC2100系列芯片的啟動代碼,從這里開始執行,包括初始化代碼,為每一種模
;** 式 的進入口和任務的堆棧
;定義堆棧的大小
SVC_STACK_LEGTH EQU 0
FIQ_STACK_LEGTH EQU 0
IRQ_STACK_LEGTH EQU 256
ABT_STACK_LEGTH EQU 0
UND_STACK_LEGTH EQU 0
NoInt EQU 0x80 ;Bit7,I位
NoFIQ EQU 0x40 ;Bit6,F位
USR32Mode EQU 0x10 ;M[4:0]=10000,用戶模式
SVC32Mode EQU 0x13 ;M[4:0]=10011,管理模式
SYS32Mode EQU 0x1f ;M[4:0]=11111,系統模式
IRQ32Mode EQU 0x12 ;M[4:0]=10010,IRQ中斷
FIQ32Mode EQU 0x11 ;M[4:0]=10001,快速中斷
IMPORT __use_no_semihosting_swi
;引入的外部標號在這聲明
IMPORT FIQ_Exception ; 快速中斷異常處理程序
IMPORT __main ; C語言主程序入口
IMPORT TargetResetInit ;目標板基本初始化
;給外部使用的標號在這聲明
EXPORT bottom_of_heap
EXPORT StackUsr
EXPORT Reset
EXPORT __user_initial_stackheap
CODE32
AREA vectors,CODE,READONLY
ENTRY
;中斷向量表
Reset
LDR PC, ResetAddr ;0x00,復位
LDR PC, UndefinedAddr ;0x04,未定義地址
LDR PC, SWI_Addr ;0x08,軟件中斷
LDR PC, PrefetchAddr ;0x0c,預取指中止
LDR PC, DataAbortAddr ;0x10,數據中止
DCD 0xb9205f80 ;0x14,保留
LDR PC, [PC, #-0xff0] ;0x18,IRQ中斷
LDR PC, FIQ_Addr ;0x1C,快速中斷
ResetAddr DCD ResetInit ;復位初始化處理程序地址
UndefinedAddr DCD Undefined ;未定義指令處理程序地址
SWI_Addr DCD SoftwareInterrupt ;軟件中斷處理程序地址
PrefetchAddr DCD PrefetchAbort ;預取指中止處理程序地址
DataAbortAddr DCD DataAbort ;數據中止處理程序地址
Nouse DCD 0 ;未使用
IRQ_Addr DCD 0 ;IRQ中斷,已在'LDR [PC,#-0xff0]'中處理
FIQ_Addr DCD FIQ_Handler
;未定義指令
Undefined
B Undefined ;死循環
;軟中斷
SoftwareInterrupt
; B SoftwareInterrupt
;//增加開/關中斷處理
CMP R0, #4 ;判斷傳過來的參數是否大于4
LDRLO PC, [PC, R0, LSL #2] ;小于4(參數正確),進行查表
MOVS PC, LR ;大于或者等于4(參數出錯),則返回
SwiFunction
DCD IRQDisable ;0號調用,禁止IRQ中斷
DCD IRQEnable ;1號調用,使能IRQ中斷
DCD FIQDisable ;2號調用,禁止FIQ中斷
DCD FIQEnable ;3號調用,使能FIQ中斷
IRQDisable
;關IRQ中斷
MRS R0, SPSR ;讀取SPSR的值
ORR R0, R0, #NoInt ;置位I位,設置關IRQ中斷
MSR SPSR_c, R0 ;回寫SPSR
MOVS PC, LR ;返回
IRQEnable
;開IRQ中斷
MRS R0, SPSR
BIC R0, R0, #NoInt ;清零I位,設置開IRQ中斷
MSR SPSR_c, R0
MOVS PC, LR
FIQDisable
;關FIQ中斷
MRS R0, SPSR
ORR R0, R0, #NoFIQ ;置位F位,設置關FIQ中斷
MSR SPSR_c, R0
MOVS PC, LR
FIQEnable
;開FIQ中斷
MRS R0, SPSR
BIC R0, R0, #NoFIQ ;清零F位,設置開FIQ中斷
MSR SPSR_c, R0
MOVS PC, LR
;取指令中止
PrefetchAbort
B PrefetchAbort ;死循環
;取數據中止
DataAbort
B DataAbort ;死循環
;快速中斷
FIQ_Handler
STMFD SP!, {R0-R3, LR} ;寄存器R0~R3,LR入棧
BL FIQ_Exception ;調用FIQ處理程序
LDMFD SP!, {R0-R3, LR} ;寄存器R0~R3,LR出棧
SUBS PC, LR, #4 ;計算返回地址
;/*****************************************************************************************
上一篇:Windows CE6.0中斷實驗過程
下一篇:arm linux 移植 mtd-utils 1.x
推薦閱讀最新更新時間:2025-06-25 01:39



設計資源 培訓 開發板 精華推薦
- L6565 過載或短路鎖定關斷的典型應用
- 使用 ON Semiconductor 的 KA7805E 的參考設計
- 具有開路檢測功能的 LT4256-3 正高壓熱插拔控制器的典型應用
- ADR420 超精密、低噪聲、5.00 Vout XFET 電壓基準作為可編程 DAC 基準的典型應用
- AM3GW-4815SZ 15V 3 瓦 DC/DC 轉換器的典型應用
- LTM8073EY 5Vout 從 7Vin 到 60Vin 降壓轉換器的典型應用電路
- NCP716MTTBGEVB,LDO 穩壓器,WDFN-6 封裝,超低靜態電流評估板
- LT1764AET-1.5 SCR 預穩壓器的典型應用可提供跨線路變化的效率
- 用于儀表的 12 位、32 通道 DAC
- 使用 IXYS 的 LTC3454EDD 的參考設計