娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

基于ARM7(LPC2131)平臺的μC/OS-Ⅱ的移植

發布者:CreativeMind最新更新時間:2024-11-08 來源: cnblogs關鍵字:ARM7  LPC2131  μC  OS-Ⅱ  移植 手機看文章 掃描二維碼
隨時隨地手機看文章

一.準備工作

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         ;計算返回地址

;/*****************************************************************************************

[1] [2] [3] [4] [5] [6] [7] [8] [9]
關鍵字:ARM7  LPC2131  μC  OS-Ⅱ  移植 引用地址:基于ARM7(LPC2131)平臺的μC/OS-Ⅱ的移植

上一篇:Windows CE6.0中斷實驗過程
下一篇:arm linux 移植 mtd-utils 1.x

推薦閱讀最新更新時間:2025-06-25 01:39

如何將μClinux移植ARM7體系微處理器S3C4510B上
Linux是一種支持多種體系結構處理器的操作系統,有很強的移植性。描述了將μClinux移植到基于S3C4510B處理器目標板上的方法與過程。首先介紹了S3C4510B處理器和μClinux,并簡單說明了如何搭建移植環境,然后著重討論了在該開發板上Bootloader的設計實現以及μClinux內核的移植方法,最后對在這種基于μClinux的嵌入式系統環境下如何開發應用程序做了簡單說明。 1引言 ARM(AdvancedRISCMachines),既可以認為是一個公司的名字,也可以認為是對一微處理器的通稱,還可以認為是一種技術的名字。 1991年ARM公司成立于英國劍橋,主要出售芯片設計技術的授權。目前,采用A
[單片機]
如何將μClinux<font color='red'>移植</font>到<font color='red'>ARM7</font>體系微處理器S3<font color='red'>C</font>4510B上
s3c2440上linux-2.6.28.7內核配置及Qtopia文件系統移植和搭建
一、linux-2.6.28.7內核配置過程 1,新編譯好的內核下載到FLASH中,啟動linux以后報錯,說找不到rootfs入口,解決方法是內核編譯選項中選中“file system- yaffs2 fs support”,以及 let yaffs to its ecc . 2,燒寫好內核及文件系統后,發現無論怎么點擊觸摸屏,系統都沒有反應,可是開發板自帶的kernel燒上去后就沒有問題,所以,判斷問題還是出于內核配置的問題。解決辦法是內核配置“device drivers- input device- (*)touchscreen interface并且(*)touchscreen event”, 以及“device
[單片機]
linux 2.6.32 在arm9(s3c2440)平臺的移植2 -- Kconfig和Makefile(2)linux
Linux內核源碼樹的每個目錄下都有一個Kconfig和Makefile, 分布到各目錄的Kconfig構成了一個分布式的內核配置數據庫, 每個Kconfig分別描述了所屬目錄源文檔相關的內核配置菜單. 在linux目錄執行內核配置make menuconfig時, 從Kconfig中讀出菜單, 用戶選擇后保存到linux-2.6/.config的內核配置文檔中. 在內核編譯時, 主Makefile調用這個.config, Kconfig就是對應著內核的每級配置菜單. 添加新的驅動時需要修改有兩種( 1如果添加的只是文件, 則只需修改當前層Kconfig和Makefile文件; 2如果添加的是目錄, 則需修改當前層和新添目
[單片機]
s3c2440 ads程序移植到keil中(二) 初步完成
如果我把參數配置發生改變呢 然后再一次編譯 要包錯誤 如下所示 錯誤如下 這個錯誤解決不了 最后查看了網上網友的方法 又可以修改 但是引入了nand文件 最后反正知道了2440init.s文件要修改許多 所以我就不再這里繼續整了 浪費時間 直接運用網上網友的東西即可 網友編寫的地址 https://blog.csdn.net/hannibaychty/article/details/44873327 從買板子到現在,想想也有2個月啦,開始就想跑裸奔的,可是工程都是在ADS下,win7系統根本不能用,于是就想著怎么在MDK跑,可是MDK上s3c2440的啟動文件是不完整的,因此不推薦使用,為此蛋疼聊好長一段時間,查了很
[單片機]
s3<font color='red'>c</font>2440 ads程序<font color='red'>移植</font>到keil中(二) 初步完成
移植嵌入式Linux到ARM處理器S3C2410:設備驅動
設備驅動程序是操作系統內核和機器硬件之間的接口,它為應用程序屏蔽硬件的細節,一般來說,Linux的設備驅動程序需要完成如下功能:   ·設備初始化、釋放;   ·提供各類設備服務;   ·負責內核和設備之間的數據交換;   ·檢測和處理設備工作過程中出現的錯誤。   Linux下的設備驅動程序被組織為一組完成不同任務的函數的集合,通過這些函數使得Windows的設備操作猶如文件一般。在應用程序看來,硬件設備只是一個設備文件,應用程序可以象操作普通文件一樣對硬件設備進行操作,如open ()、close ()、read ()、write () 等。   Linux主要將設備分為二類:字符設備和塊設備。字符設備是指設備發送和接收數據以
[單片機]
<font color='red'>移植</font>嵌入式Linux到ARM處理器S3<font color='red'>C</font>2410:設備驅動
μC/OS-II在凌陽單片機SPCE061A上的移植
摘要:以凌陽單片機為例詳細介紹μC/OS-II的移植方法;重點講解在系統移植過程中一些難以理解的概念,并首次實現了μC/OS-II在凌陽SPCE061A單片機上的移植。 關鍵詞:μC/OS-II 凌陽單片機 嵌入式系統   目前,實時操作系統已廣泛應用于工業控制的各個領域。μC/OS-II作為一個實時內核,由于其源碼公開、代碼規范,廣受開發人員的喜愛。SPCE061A是凌陽公司繼μ’nSPTM系列產品SPCE500A等之后新推出的一款16位單片機,內部集成A/D、D/A等多種接口電路,能很方便地嵌入工業控制的各種場合。更重要的是,其內嵌2K字的SRAM和32K的Flash ROM,因此,在不需要擴展外部存儲器的情況下就可以實現
[嵌入式]
U-Boot在S3C2410上的移植
引言 U-Boot是用于初始化目標板硬件,為嵌入式操作系統提供目標板硬件配置信息,完成嵌入式操作系統裝載、引導和運行的固件程序。它能夠將系統的軟硬件緊密銜接在一起。S3C2410是三星公司的一款基于ARM920T核的嵌入式通用處理器。本文將詳細介紹U-Boot在S3C2410開發板上的移植與運行。 U-BOOT簡介 U-Boot支持ARM、 PowerPC等多種架構的處理器,也支持Linux、NetBSD和VxWorks等多種操作系統。它提供啟動加載和下載兩種工作模式。啟動加載模式也稱自主模式,一般是將存儲在目標板Flash中的內核和文件系統的鏡像裝載到SDRAM中,整個過程無需用戶的介入。在使用嵌入式產品時,一
[應用]
arm7 LPC2103 中斷的處理方法
向量中斷控制器(VIC)具 有 32 個中斷請求輸入,可將其編程分為3 類:FIQ 、向量IRQ和非向量IRQ ??删幊谭峙錂C制意味著不同外設的中斷優先級可以動態分配并調整。 快速中斷請求(FIQ )要求具有最高優先級。如果分配給 FIQ 的請求多于1 個,VIC 將中斷請求“相或”后向ARM處理器產生 FIQ 信號。當只有一個中斷被分配為 FIQ 時可實現 最短的FIQ 等待時間,因為FIQ 服務程序只要簡單地啟動器件的處理就可以了。但如果分配給FIQ 級的中斷多于1 個,FIQ 服務程序從 VIC 中讀出一個字來識別產生中斷請求的 FIQ中斷源是哪一個。 向量IRQ 具有中等優先級。該級別可分配32 個請求中的
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 保德县| 西城区| 福鼎市| 青田县| 驻马店市| 濉溪县| 江油市| 阿城市| 武汉市| 竹溪县| 临沭县| 策勒县| 晋州市| 乌拉特前旗| 乡城县| 长泰县| 灌阳县| 阿城市| 佛山市| 米脂县| 阳城县| 盘锦市| 双辽市| 北碚区| 吉林省| 安义县| 山东| 平罗县| 久治县| 拉萨市| 陆川县| 诏安县| 榆中县| 交城县| 泰州市| 教育| 进贤县| 保康县| 彝良县| 墨玉县| 丽江市|