<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > SmartARM2200開發(fā)板的RedBoot的移植

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/157884.htm

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


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



          關(guān)鍵詞: 移植 RedBoot 開發(fā) SmartARM2200

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();