中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux內(nèi)核在S3C2410上移植的研究

        Linux內(nèi)核在S3C2410上移植的研究

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

        當(dāng)上電或復(fù)位后,VIVI啟動(dòng),位于NANDFLASH中的前4 KB程序便從NANDFLASH中由自動(dòng)拷貝到一個(gè)叫SteppingStone的4 KB的內(nèi)部RAM中,該RAM之后被映射到地址0x00處。此時(shí),也就是VIVI前4 KB代碼開始運(yùn)行,進(jìn)行第一階段的硬件初始化,主要工作為:關(guān)Watchdog Timer,關(guān)中斷,初始化PLL和時(shí)鐘主頻設(shè)定,初始化存儲(chǔ)器控制器。VIVI初始化的主要內(nèi)容:
        VIVI初始化階段一(在/arch/s3C2410/head.s文件內(nèi)):
        硬件初始化
        配置串口
        復(fù)制自身到SDRAM中(跳轉(zhuǎn)到C代碼入口函數(shù))
        VIVI初始化階段二(在/init/main.c文件內(nèi)):
        對(duì)硬件系統(tǒng)繼續(xù)初始化
        內(nèi)存映射初始化、內(nèi)存管理單元MMU初始化
        初始化堆
        初始化mtd設(shè)備
        初始化私有數(shù)據(jù)
        初始化內(nèi)置命令
        啟動(dòng)VIVI

        3
        3.1
        實(shí)驗(yàn)系統(tǒng)運(yùn)行的版本是針對(duì)2.4.18進(jìn)行-2.4.18.-rm7-pxal版本。本實(shí)驗(yàn)是把該移植好的,讓它如何在自己的硬件系統(tǒng)上正常的運(yùn)轉(zhuǎn)起來。
        Linux內(nèi)核主要由5個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度子系統(tǒng)、進(jìn)程間通信子系統(tǒng)、內(nèi)存管理子系統(tǒng)、虛擬文件系統(tǒng)子系統(tǒng)、網(wǎng)絡(luò)接口子系統(tǒng)。
        (1)設(shè)置目標(biāo)平臺(tái)和指定交叉編譯器:在最上層的根目錄/Makefile文件中,首先要指定所移植的硬件平臺(tái),以及所使用的交叉編譯器。改為如下:
        ARCH:=arm
        CROSS_COMPILE=/opt/host/armv41/bin/armv41-unknown-Linux-
        也就是說,所移植的硬件平臺(tái)是ARM,所使用的交叉編譯器是存放在目錄/opt/host/armv41/bin/下的armv41-unknown-Linux-xxx等工具。
        (2)arch/arm目錄下Makefile修改。系統(tǒng)的啟動(dòng)代碼是通過這個(gè)文件產(chǎn)生的。在Linux-2.4.18內(nèi)核中要添加如下代碼:
        ifeq(MYM(CONFIG_ARCH_),y)
        TEXTADDR =0 xC0008000
        MACHINE =s3c2410
        endif
        這里TEXTADDR確定內(nèi)核開始運(yùn)行的虛擬地址。
        (3)arch/arm目錄下config.in修改。配置文件config.in能夠配置運(yùn)行“make menuconfig”命令時(shí)的菜單選項(xiàng),由于2.4.18內(nèi)核中沒有的相關(guān)信息,所以要在該文件中進(jìn)行有效的配置。
        (4)arch/arm/boot目錄下Makefile修改。編譯出來的內(nèi)核存放在該目錄下,這里指定內(nèi)核解壓到實(shí)際硬件系統(tǒng)上的物理地址。要根據(jù)實(shí)際的硬件系統(tǒng)修改解壓后,內(nèi)核開始運(yùn)行實(shí)際的物理地址。
        (5)arch/arm/boot/compressed目錄下Makefile修改。該文件從vmLinux中創(chuàng)建一個(gè)壓縮的vmlinuz鏡像文件。該文件中用到的SYSTE M,ZTEXTADDR,ZBSSADDR和ZRELADDR是從arch/arm/boot/Makefile文件中得到的。添加如下代碼:
        ifeq(MYM(CONFIG_ARCH_S3C2410),y)
        OBJS+=head-s3c2410.o
        Endif
        (6)arch/arm/boot/compressed目錄下添加head-s3c2410.s。該文件主要用來初始化處理器。
        (7)arch/arm/def-configs目錄下添加配置好的S3C2410的配置文件。
        (8)arch/arm/kernel目錄下Makefile修改。該文件主要用來確定文件類型的依賴關(guān)系。
        (9)arch/arm/kernel目錄下的文件debug-armv.s修改。在該文件中添加如下代碼,目的是關(guān)閉外圍設(shè)備的時(shí)鐘,以保證系統(tǒng)正常運(yùn)行。
        (10)arch/arm/kernel目錄下的文件entry-armv.s修改,CPU初始化時(shí)處理中斷的匯編代碼。
        (11)arch/arm/ram目錄下的相關(guān)文件。那里面則是移植好的有關(guān)arm的內(nèi)存管理代碼。
        (12)arch/arm/mach-s3c2410目錄下的相關(guān)文件。
        那里面則是針對(duì)s3c2410這款處理器編寫的所需代碼。
        3.2 制作cramfs文件系統(tǒng)
        利用工具軟件MKCRAMFS制作cramfs文件系統(tǒng),MKCRAMFS工具在/實(shí)驗(yàn)軟件/tools/目錄下,該文件系統(tǒng)是一個(gè)只讀壓縮的文件系統(tǒng),文件系統(tǒng)類型可以是ext2,ext3等。這里提供的一個(gè)系統(tǒng)目錄是root_tech,它里面包含將來要用到的所有文件,它在/實(shí)驗(yàn)軟件/source_ code/的目錄內(nèi),為root.tar.bz2。把制作工具和root_tech放在同一個(gè)文件夾下并對(duì)root.tar.bz2進(jìn)行解壓,在終端下切換到那個(gè)文件夾目錄下使用命令MKCRAMFS root_tech rootfs.cramfs,就可把root_tech制作成文件名為rootfs.cramfs的只讀的壓縮的cramfs文件系統(tǒng)了。系統(tǒng)啟動(dòng)后,內(nèi)核將把它加載到內(nèi)存中,解壓。

        4 結(jié)語
        本文針對(duì)一個(gè)特定的目標(biāo)平臺(tái),提供了構(gòu)建一個(gè)基本嵌入式Linux系統(tǒng)的過程與方法。對(duì)Linux 2.4內(nèi)核版本進(jìn)行裁減、移植,編譯生成的內(nèi)核在S3C2410處理器的目標(biāo)板上成功運(yùn)行,且保留了Linux原有的工作穩(wěn)定的特點(diǎn)。將Linux操作系統(tǒng)移植于嵌入式系統(tǒng)中作為嵌入式系統(tǒng)的底層研發(fā)平臺(tái)是一個(gè)復(fù)雜的問題,移植后系統(tǒng)的實(shí)時(shí)性、穩(wěn)定性、安全性和精簡程度等方面問題還需要在以后的設(shè)計(jì)中進(jìn)一步。

        本文引用地址:http://www.antipu.com.cn/article/148756.htm

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        上一頁 1 2 下一頁

        關(guān)鍵詞: 研究 移植 S3C2410 內(nèi)核 Linux

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉