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

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

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

#define Fcco            (Fcclk * 4)  //CCO頻率,必須為Fcclk的2、4、8、16倍,范圍為156MHz~320MHz

#define Fpclk           (Fcclk / 4) * 1   //VPB時鐘頻率,只能為(Fcclk / 4)的1、2、4倍

#include    'target.h'             

#endif

5.target.h

#ifndef __TARGET_H 

#define __TARGET_H

    #ifdef __cplusplus

    extern 'C' {

    #endif

    #ifndef IN_TARGET 

extern void Reset(void); //復位

extern void TargetInit(void); //目標板初始化

    #endif

    #ifdef __cplusplus

    }

    #endif

#endif

__swi(0x00) void SwiHandle1(int Handle); //軟件中斷

#define IRQDisable() SwiHandle1(0) //禁止IRQ中斷

#define IRQEnable() SwiHandle1(1) //使能IRQ中斷

#define FIQDisable() SwiHandle1(2) //禁止FIQ中斷

#define FIQEnable() SwiHandle1(3) //使能FIQ中斷

6.LPC2294.H

/* 向量中斷控制器(VIC)的特殊寄存器 */

#define VICIRQStatus    (*((volatile unsigned long *) 0xFFFFF000))

#define VICFIQStatus    (*((volatile unsigned long *) 0xFFFFF004))

#define VICRawIntr      (*((volatile unsigned long *) 0xFFFFF008))

#define VICIntSelect    (*((volatile unsigned long *) 0xFFFFF00C))

#define VICIntEnable    (*((volatile unsigned long *) 0xFFFFF010))

#define VICIntEnClr     (*((volatile unsigned long *) 0xFFFFF014))

#define VICSoftInt      (*((volatile unsigned long *) 0xFFFFF018))

#define VICSoftIntClear (*((volatile unsigned long *) 0xFFFFF01C))

#define VICProtection   (*((volatile unsigned long *) 0xFFFFF020))

。。。。。。省略

7.men_a.Scf適用于片內Flash發布

ROM_LOAD 0x00000000 ;加載區,從0x00000000開始

{

    ROM_EXEC 0x00000000 ;執行區,起始地址,空間大小要和加載區一致

    {

        Startup.o (vectors, +First) ;startup.S中的向量表

        * (+RO) ;其他代碼

    }

    IRAM 0x40000000 ;變量區,內部RAM開始

    {

        Startup.o (MyStacks) ;startup.S中的MyStacks

        * (+RW,+ZI) ;文件中的其他變量

    }

    HEAP +0 UNINIT ;系統堆空間

    {

        Startup.o (Heap) ;startup.S中的Heap

    }

    STACKS 0x40002000 UNINIT ;LPC2131片內RAM最高端

    { ;系統的堆空間

        Startup.o (Stacks) ;startup.S中的Stacks

    }

}

8.men_c.Scf適用于片內Flash調試

ROM_LOAD 0x0

{

    ROM_EXEC 0x00000000

    {

        Startup.o (vectors, +First)

        * (+RO)

    }

    IRAM 0x40000000

    {

        Startup.o (MyStacks)

        * (+RW,+ZI)

    }

    HEAP +0 UNINIT

    {

        Startup.o (Heap)

    }

    STACKS 0x40002000 UNINIT

    {

        Startup.o (Stacks)

    }

}

2.啟動代碼工作流程

1.芯片復位后,PC=0x00000000,在異常向量表0x00000000處

2.芯片根據異常處理程序地址表,得到復位程序的地址

3.跳轉到復位處理程序處

4.調用InitStack()函數,初始化個模式的堆棧

5.調用Target.c中的TargetResetInit函數,初始化目標板:設置Remap,各部分時鐘,存儲器加速模塊和VIC等

6.跳轉到用戶C程序入口main()處

3.修改uC/OSII代碼(完成移植)

1.要移植一個操作系統到一個特定的CPU體系結構上,并不是一件很容易的事情。對移植者有以下要求:

(1)對目標體系結構要有深入的了解:

     參考資料:ARM公司。ARM Architecture Reference Manual。

(2)對OS原理要有深入的了解;

 參考資料:Labrosse J Jean。嵌入式實時操作系統uC/OS-II(第二版)。邵貝貝等譯。

(3)對所使用的編譯器要有較深的了解;

   參考資料:ADS自帶的編譯器和連接器的手冊

(4)對需要移植的操作系統要有相當的了解;

 參考資料:Labrosse J Jean。嵌入式實時操作系統uC/OS-II(第二版)。邵貝貝等譯。

(5)對具體使用的芯片也要一定的了解;

 參考資料:LPC2131的數據手冊和使用手冊

2.需要移植的文件有:OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C,IRQINC

(1).OS_CPU.H文件:定義與編譯器無關的數據類型和堆棧的數據類型,以及一些開關中斷的宏代碼,例如:BOOLEAN,INT8U等數據類型,OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()開關中斷宏,OS_STK_GROWTH堆棧的增長方向,OS_TASLK_SW任務切換時執行的代碼。源代碼如下:

/****************************************Copyright (c)************************************

**                              FreshAir嵌入式軟件開發團隊

**                                     軟件開發團隊

**                                        技術部 

**                                 http://www.freshiair.com

**--------------文件信息-------------------------------------------------------------------

**文   件   名: os_cpu.h

**創   建   人: 吳友強

**最后修改日期: 2009年7月28日

**描        述: μCOS-II在LPC210x上的移植代碼CPU配置部分,用ADS1.2編譯

**--------------當前版本修訂---------------------------------------------------------------

** 修改人: 吳友強

** 日 期: 2009年7月18日

** 描 述: 增加函數

**-----------------------------------------------------------------------------------------

******************************************************************************************/

#ifdef OS_CPU_GLOBALS

#define OS_CPU_EXT

#else

#define OS_CPU_EXT extern

#endif

/******************************************************************************************

*                    定義與編譯器無關的數據類型

******************************************************************************************/

typedef  unsigned char  BOOLEAN;

typedef unsigned char  INT8U;

typedef  signed char  INT8S;

typedef  unsigned short  INT16U;

typedef  signed short  INT16S;

typedef unsigned int INT32U;

typedef signed int INT32S;

typedef float FP32;

typedef double FP64;

typedef unsigned int OS_STK;

/******************************************************************************************

*                    與ARM7體系結構相關的一些定義

******************************************************************************************/

#define OS_CRITICAL_METHOD 2 /*選擇開、關中斷的方式*/

__swi(0x00) void OS_TASK_SW(void); /*任務級任務切換函數*/

__swi(0x01) void _OSStartHighRdy(void); /*運行優先級最高的任務*/

__swi(0x02) void OS_ENTER_CRITICAL(void); /*關中斷*/

__swi(0x03) void OS_EXIT_CRITICAL(void); /*開中斷*/

__swi(0x80) void ChangeToSYSMode(void); /*任務切換到系統模式*/

__swi(0x81) void ChangeToUSRMode(void); /*任務切換到用戶模式*/

__swi(0x82) void TaskIsARM(INT8U prio); /*任務代碼是ARM代碼*/

__swi(0x83) void TaskIsTHUMB(INT8U prio); /*任務代碼是Thumb代碼*/

__swi(0x40) void *GetOSFunctionAddr(int Index); /*獲取系統服務函數入口*/

__swi(0x41) void *GetUsrFunctionAddr(int Index);/*獲取自定義服務函數入口*/

__swi(0x42) void OSISRBegin(void); /*中斷開始處理*/

__swi(0x43) void OSISRNeedSwap(void); /*判斷中斷是否需要切換*/

#define OS_STK_GROWTH 1 /*堆棧是從上往下長的*/

#define USR32Mode 0x10

#define SYS32Mode 0x1f

#define NoInt 0x80

#ifndef USER_USING_MODE

#define USER_USING_MODE USER32Mode /*任務缺省模式*/

#endif

#ifndef OS_SELF_EN

#define OS_SELF_EN 0 /*允許返回OS與任務分別編譯、固化*/  

#endif

OS_CPU_EXT INT32U OsEnterSum; /*關中斷計數器(開關中斷的信號量)*/

(2).OS_CPU_C.C文件:OSTaskStkInit()任務堆棧初始化函數和一些uC/OS-II在執行某些操作時調用的用戶函數,一般為空,但是需要,避免編譯警告。源代碼如下:

/****************************************Copyright (c)************************************

**                              FreshAir嵌入式軟件開發團隊

**                                     軟件開發團隊

**                                        技術部 

[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-05-10 23:43

基于μC/OS-Ⅱ和ARM的超聲波測距系統設計
1 引言   超聲波指向性強,能量消耗緩慢,在介質中傳播的距離較遠,因而用于距離測量。利用超聲波檢測往往較迅速、方便、計算簡單、易于實時控制,且測量精度能達到工業實用要求,因此在移動機器人的研制中得到廣泛應用。移動機器人要在未知和不確定環境下運行,必須具備自動導航和避障功能。超聲波傳感器以其信息處理簡單、速度快和價格低的特點廣泛用作移動機器人的測距傳感器,實現避障、定位、環境建模和導航等功能。   2 系統總體設計方案   2.1 超聲波測距原理   2.1.1 超聲波發生器   超聲波為直線傳播方式,頻率高,反射能力強。空氣中其傳播速度為340 m/s,容易控制,受環境影響小。因此采用超生波傳感器作為距離探測的“眼睛”,可
[模擬電子]
基于μ<font color='red'>C</font>/<font color='red'>OS-</font>Ⅱ和ARM的超聲波測距系統設計
uboot在s3c2440上的移植(4)
一、移植環境 主 機:VMWare--Fedora 9 開發板:Mini2440--64MB Nand,Kernel:2.6.30.4 編譯器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步驟 在這一篇中,我們首先讓開發板對CS8900或者DM9000X網卡的支持,然后再分析實現u-boot怎樣來引導Linux內核啟動。因為測試u-boot引導內核我們要用到網絡下載功能。 7)u-boot對CS8900或者DM9000X網卡的支持。 u-boot-2009.08版本已經對CS8900和DM9000X網卡有比較完善的代碼支持(代碼在drivers/ne
[單片機]
uboot在s3<font color='red'>c</font>2440上的<font color='red'>移植</font>(4)
s3c2440移植openharmony
s3c2440移植openharmony。OpenHarmony是開放原子開源基金會的一個孵化項目,OpenHarmony完全開源開放,OpenHarmony輕量和小型系統比較適合內存小的IOT設備。 OpenHarmony同時提供許多可選的系統組件,設備開發者能夠按需配置。系統能夠把這些能夠選擇的組件合成一個系列的系統能力讓設備開發者更好的理解和開發。 想對OpenHarmony進行開發、編譯、燒錄、調測能夠使用DevEco Device Tool。 現在的openharmony輕量和小型系統搭建系統環境Windows版本不支持在Windows平臺編譯,Hi3861除外,其它的只能在Ubuntu平臺下編譯。
[單片機]
μC/OS-II在PC機上移植的設計與實現
1 引言 μC/OS-II是專門為嵌入式系統應用而設計的嵌入式實時操作系統,人們在學習μC/OS-II時,一開始往往在基于PC機的DOS或 Windows環境下進行分析與研究。在這種環境中,帶有μC/OS-II內核的應用系統(簡稱μC/OS-II應用系統)的運行,讓人覺得它好像是一個 DOS程序,人們無法真實地領略實時操作系統的面貌。實際上,在PC機的DOS或Windows環境中,μC/OS-II應用系統確實是一個DOS可執行程序,它的運行離不開DOS或Windows環境。為了讓更多的人掌握和理解μC/OS-II實時操作系統,筆者對μC/OS-II進行移植,使其完全脫離DOS或Windows環境而運行。首先設計Bootload
[嵌入式]
μC/OS-II在凌陽單片機SPCE061A上的移植
??? 以凌陽單片機為例詳細介紹μC/OS-II的移植方法;重點講解在系統移植過程中一些難以理解的概念,并首次實現了μC/OS-II在凌陽SPCE061A單片機上的移植。 ??? 目前,實時操作系統已廣泛應用于工業控制的各個領域。μC/OS-II作為一個實時內核,由于其源碼公開、代碼規范,廣受開發人員的喜愛。SPCE061A是凌陽公司繼μ’nSPTM系列產品SPCE500A等之后新推出的一款16位單片機,內部集成A/D、D/A等多種接口電路,能很方便地嵌入工業控制的各種場合。更重要的是,其內嵌2K字的SRAM和32K的Flash ROM,因此,在不需要擴展外部存儲器的情況下就可以實現μC/OS-II系統的移植。 ??? 1
[單片機]
μ<font color='red'>C</font>/OS-II在凌陽單片機SPCE061A上的<font color='red'>移植</font>
μ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,因此,在不需要擴展外部存儲器的情況下就可以實現μC/
[嵌入式]
實時操作系統μC/OS-II在MCF5272上的移植
摘要:介紹了實時操作系統μC/OS-II的特點和內核結構,并首次實現μC/OS-II在Motorola嵌入式處理器MCF5272上的移值。 關鍵詞:μC/OS-II MCF5272 移植 GNU工具鏈 作為一個實時內核,μC/OS從1992年開始為人們熟悉,到現在已經發展為μC/OS-II。ΜC/OS-II最多支持56個任務,其內核為占先式,總是執行就緒態的優先級最高的任務,并支持Semaphore(信號量)、Mailbox(郵箱)、Message Queue(消息隊列)等多種常用的進程間通信機制。與大多商用RTOS不同的是,μC/OS-II公開所有的源代碼,并可以免費獲得,對商業應用收取少量License費用。一般商用操作系
[嵌入式]
ARM7入門6,LCD顯示字符
用ADS1.2編輯的,注意添加target.c,IRQ.s,Startuo.s和mem.scf文件。 主程序: /**************************************************************************** * File: main.c * 功能:向LCD輸出字符 ****************************************************************************/ #include config.h #define rs (1 8) #define rw (1 9) #define en (1 10) #d
[單片機]
<font color='red'>ARM7</font>入門6,LCD顯示字符
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 云梦县| 温宿县| 平顶山市| 常德市| 紫云| 昌吉市| 内江市| 方城县| 安西县| 霍林郭勒市| 宜宾县| 西贡区| 浙江省| 钦州市| 横山县| 河东区| 呼伦贝尔市| 虎林市| 高淳县| 桐城市| 亳州市| 全南县| 通许县| 永新县| 双城市| 溧水县| 海淀区| 高雄县| 绿春县| 富民县| 广安市| 青田县| 南京市| 商都县| 深州市| 广宗县| 青铜峡市| 天水市| 温泉县| 郴州市| 同江市|