新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > uClinux在嵌入式系統中的移植研究

        uClinux在嵌入式系統中的移植研究

        作者: 時間:2012-05-21 來源:網絡 收藏

        3.3 內核的修改

        目前已被成功到S3C44B0及其他多款ARM芯片上,但由于嵌入式操作系統的運行是與的硬件密切相關的,而硬件的設計則會因為使用場合的不同而千差萬別,因此,內核源代碼中和硬件緊密相關的部分就應該針對特定的硬件作出適當的修改。

        首先,從網站(www.uClinx.org)下載源碼uClinux-dist-20040408,但這個發行包中的內核對S3C44B0X處理器的支持是不完整的,必須為內核打上補丁uClinux-2.4.24.patch(可以從http://www.hzlitai.com.cn下載),然后在終端下執行:patch –p0uClinux

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

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

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

        ifeq ($(CONFIG_BOARD_MBA44),y)

        ZTEXTADDR = 0x0c300000

        ZRELADDR = 0x0c008000

        Endif

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

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

        修改目錄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的大小,FLASH_MEM_BASE代表Flash的起始地址, FLASH_SIZE代表Flash的大小。要根據自己的Flash和SDRAM來設定這些值

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

        修改目錄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代表內核起始地址,與image.rom自解壓后代碼輸出起始地址(ZRELADDR)相同。

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

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

        #ifdef CONFIG_BOARD_MBA44

        {0, 0x00100000, -1},

        #endif

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

        矢量控制相關文章:矢量控制原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 丹凤县| 新源县| 理塘县| 宝清县| 连云港市| 渭源县| 根河市| 淮滨县| 横山县| 浦江县| 五家渠市| 潞城市| 阿鲁科尔沁旗| 眉山市| 唐河县| 枣阳市| 浮梁县| 洞头县| 昌图县| 大名县| 南溪县| 肇源县| 陆川县| 克东县| 吴忠市| 湖南省| 漠河县| 平乐县| 阿合奇县| 新兴县| 芷江| 孟津县| 天门市| 会宁县| 舒城县| 兰溪市| 辽宁省| 甘南县| 娱乐| 福泉市| 梁河县|