<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > SmartARM2200開(kāi)發(fā)板的RedBoot的移植

SmartARM2200開(kāi)發(fā)板的RedBoot的移植

作者: 時(shí)間:2009-08-17 來(lái)源:網(wǎng)絡(luò ) 收藏

(3)修改平臺抽象層的有關(guān)代碼
硬件平臺層所需編寫(xiě)的代碼文件的一般功能如下:include/plf_io.h,I/O定義和系統寄存器的宏定義。include/hal_platform_setup.h,平臺啟動(dòng)代碼。本文件主要用ARM匯編指令編寫(xiě),實(shí)現平臺上電后程序的啟動(dòng)和執行。
src/smartarm2200_misc.C,HAL的底層擴展函數,包括LCD的相關(guān)函數及控制臺初始化函數。
var/v2_0/include/包括hal_cache.h、hal_diag.h、hal_var_ints.h、lpc2xxx_misc.h、 plf_stub.h、var_arch.h、var_io.h等頭文件,定義了標準函數接口及通用I/O和寄存器。
var/v2_0/src/lpc2xxx_misc.C,HAL的底層標準函數,包括時(shí)鐘平臺初始化、時(shí)鐘延時(shí)函數、中斷使能、中斷屏蔽、中斷響應等。
var/v2_O/src/hal_diag.c,硬件抽象層診斷輸出函數,包含eCos系統中printf打印的硬件設備驅動(dòng)程序。
misc/redboot_RAM.ecru,基于RAM啟動(dòng)方式的最小配置文件。
misc/redboot_ROM.ecm,基于ROM啟動(dòng)方式的最小配置文件。

本文引用地址:http://dyxdggzs.com/article/157884.htm

3 硬件啟動(dòng)過(guò)程
編寫(xiě)硬件啟動(dòng)的初始化過(guò)程是HAL的一個(gè)難點(diǎn)。當硬件重新上電后,系統的程序指針會(huì )自動(dòng)指向地址0(通常地址0存放著(zhù)bootloader代碼段,本例中從外部Flash 0x80000000地址引導)。在eCos操作系統中,程序首先會(huì )運行vectors.S文件(該文件存在于hal/arm/arch/src/目錄下),它定義了reset_vector、start等各種啟動(dòng)標號。接著(zhù)調用平臺層的hal_platform_setup. h文件中的宏platform_setupl。
haLplatform_setup.h定義了宏platform_setupl以供vectors.S調用。該宏定義了目標板上SRAM和Flash的初始化啟動(dòng),其中包括了它們的總線(xiàn)寬度、讀寫(xiě)速度、內存大小。然后根據不同的啟動(dòng)方式執行程序。對于RAM啟動(dòng)方式,無(wú)需進(jìn)行程序段與數據段的搬移,系統已認為SRAM的起始地址即為程序的起始地址;對于ROM啟動(dòng)方式,需要拷貝數據段,而程序段無(wú)需拷貝。
在程序拷貝完成后,系統會(huì )進(jìn)行其他硬件的初始化過(guò)程,包括系統時(shí)鐘、監控串口等基本硬件設備。


4 內存布局文件編寫(xiě)
平臺的內存布局文件在include/pkgconf目錄下。通常,每個(gè)平臺包括了RAM、ROM兩種不同啟動(dòng)方式的內存布局文件集。每種啟動(dòng)方式的內存布局文件集都由3個(gè)類(lèi)型的描述文件組成:.h文件包含內存域的C宏定義;.ldi文件定義內存域和內存段位置的鏈接腳本文件;.mlt文件包括由MLT工具產(chǎn)生的對內存布局的描述。當需要手動(dòng)修改內存布局時(shí),只有.h和.ldi文件可以被修改,.mlt文件只能由MLT工具生成。
下面以的RAM啟動(dòng)方式內存布局為例,說(shuō)明mlt_arm_lpc2xxx_smartarm2200_ram.h和mlt_arm_lpc2xxx_smartarm2200_ram.ldi的程序結構。
由于板有1個(gè)16 KB的內部RAM和1個(gè)16 MB的外部SRAM,因而要定義兩個(gè)內存域ram0和ram。系統設置寄存器在初始化時(shí)已經(jīng)把內存段重新映射,因而兩個(gè)SRAM的基地址就是 0x40000000和0x81000000,分配方式都是可讀寫(xiě)的內存段。
在mlt_arm_lpc2xxx_smartarm2200_ram.ldi中分為兩大部分。首先是MEMORY部分,它定義了在RAM啟動(dòng)方式下所需要的內存域,以及該內存域的起始地址和長(cháng)度。MEMORY部分的內容必須與mlt_arm_lpc2xxx_smartarm2200_ram.h中定義的宏相一致。其次,是SECTIONS部分,它定義了RAM啟動(dòng)方式下所規定的內存段,這些內存段的定義與系統內存管理功能有關(guān)。在 SECTION_XXX后帶有相應的參數,這些參數包括了內存段所屬的內存域、起始地址(或者是對齊方式)、虛擬內存地址(VMA)和加載內存地址 (LMA)。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>