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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > uClinux在嵌入式系統(tǒng)中的移植研究

          uClinux在嵌入式系統(tǒng)中的移植研究

          作者: 時(shí)間:2012-05-21 來源:網(wǎng)絡(luò) 收藏

          3.3 內(nèi)核的修改

          目前已被成功到S3C44B0及其他多款A(yù)RM芯片上,但由于嵌入式操作系統(tǒng)的運(yùn)行是與的硬件密切相關(guān)的,而硬件的設(shè)計(jì)則會(huì)因?yàn)槭褂脠龊系牟煌Р钊f別,因此,內(nèi)核源代碼中和硬件緊密相關(guān)的部分就應(yīng)該針對特定的硬件作出適當(dāng)?shù)男薷摹?P>首先,從網(wǎng)站(www.uClinx.org)下載源碼uClinux-dist-20040408,但這個(gè)發(fā)行包中的內(nèi)核對S3C44B0X處理器的支持是不完整的,必須為內(nèi)核打上補(bǔ)丁uClinux-2.4.24.patch(可以從http://www.hzlitai.com.cn下載),然后在終端下執(zhí)行:patch –p0uClinux

          -2.4.24.patch就可以安裝該補(bǔ)丁。該補(bǔ)丁完善了對S3C44B0的支持,但是它針對特定的硬件及Bootloader,對內(nèi)核做了相應(yīng)的修改,因此我們在做時(shí)應(yīng)該根據(jù)自己的BootLoader及硬件來修改內(nèi)核。修改部分如下:

          (1)壓縮內(nèi)核代碼起始地址修改

          修改目錄linux-2.4.x/arch/armnommu/boot/下的文件Makefile里的如下代碼:

          ifeq ($(CONFIG_BOARD_MBA44),y)

          ZTEXTADDR = 0x0c300000

          ZRELADDR = 0x0c008000

          Endif

          ZTEXTADDR代表映像文件image.rom自解壓的起始地址,它的值是由BootLoader的功能2決定的。執(zhí)行功能2,將image.rom從Flash轉(zhuǎn)移到 SDRAM的地址0x0c300000,內(nèi)核自解壓,所以ZTEXTADDR必須和這個(gè)值相同。ZRELADDR代表內(nèi)核解壓后代碼輸出起始地址。

          (2)處理器配置選項(xiàng)的修改

          修改目錄linux-2.4.x/arch/armnommu/下的文件config.in里的如下代碼:

          define_int CONFIG_ARM_CLK 64000000

          if [ "$CONFIG_SET_MEM_PARAM" = "n" ]; then

          define_hex DRAM_BASE 0x0C000000

          define_hex DRAM_SIZE 0x00800000

          define_hex FLASH_MEM_BASE 0x00000000

          define_hex FLASH_SIZE 0x00200000

          DRAM_BASE代表SDRAM的起始地址,DRAM_SIZE代表SDRAM的大小,F(xiàn)LASH_MEM_BASE代表Flash的起始地址, FLASH_SIZE代表Flash的大小。要根據(jù)自己的Flash和SDRAM來設(shè)定這些值

          (3)內(nèi)核起始地址的修改

          修改目錄linux-2.4.x/arch/armnommu/下的文件Makefile里的如下代碼:

          ifeq ($(CONFIG_BOARD_MBA44),y)

          TEXTADDR = 0x0c008000

          MACHINE = S3C44B0X

          INCDIR = $(MACHINE)

          CORE_FILES := $(CORE_FILES) #romfs.o

          Endif

          TEXTADDR代表內(nèi)核起始地址,與image.rom自解壓后代碼輸出起始地址(ZRELADDR)相同。

          (4)ROM文件系統(tǒng)的定位修改

          修改目錄linux-2.4.x/drivers/block下的文件blkmem.c里的如下代碼:

          #ifdef CONFIG_BOARD_MBA44

          {0, 0x00100000, -1},

          #endif

          0x00100000是文件系統(tǒng)的定位地址。本文中采用uClinux的文件系統(tǒng)ROM file system,它的映象文件romfs.img要燒寫到flash的某一地址。一旦該定位地址確定,在執(zhí)行BootLoader的功能1時(shí)就要將 romfs.img燒寫到flash的這個(gè)地址。定位地址不是固定不變的,可以根據(jù)flash和image.rom的大小來更改。

          矢量控制相關(guān)文章:矢量控制原理


          評論


          相關(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); })();