• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 移植標準Linux到S3C2410

    移植標準Linux到S3C2410

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

    1 引言

    本文引用地址:http://www.czjhyjcfj.com/article/171432.htm

    目前 , 在嵌入式系統里基于ARM核的嵌入式處理器已經成為市場主流。隨著ARM技術的廣泛應用 , 建立面向ARM構架的嵌入式操作系統也就成為當前研究的熱點。是SAMSUNG公司基于ARM920T處理器內核開發的一款16/32位嵌入式處理器,運行頻率高達200多M,具有MMU和高速緩存等豐富片上資源,是目前基于ARM920T內核的出貨量最大的一款芯片。目前嵌入式操作系統也較多,如 Tor2nado 的VxWork、微軟的 Windows CE等等。大量開發人員選擇的卻都是,這是因為它源代碼開放,可以輕松修改到自己的目標平臺系統里使用。并且事實證明,效果令人滿意。兩者的結合必將在嵌入式系統的世界里打出一片天地。

    2 操作系統的

    2.1的含義

    要使得能在ARM嵌入式處理器上運作,勢必要經過移植 (porting) 的過程。所謂移植,就是讓一套軟件可以在一套選定硬件平臺上正常運作,也就是要將平臺相依 (platform dependent) 的部分做適當的修改。內核源碼arch子目錄包括了所有和平臺體系結構相關的核心代碼,它的每一個子目錄都代表所支持的一種體系結構,arm就是關于我們所選處理器體系結構的子目錄。我們的移植工作主要集中于此目錄下。

    2.2移植的具體實現

    如果我們已經搭建起完整的交叉編譯平臺,移植工作便可開始了(以當前使用最廣的linux-2.4為例,放于/usr/src/ linux-2.4.18之下)。

    / Makefile文件

    一個工程往往包含很多的文件,按照一定的規則放在多個目錄中。Makefile文件用來指定編譯規則,例如哪些需要編譯,哪些要先編譯。在此處要做的是:

    指定目標平臺ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)

    設置為ARCH :=arm

    指定交叉編譯器CROSS_COMPILE =

    設置為CROSS_COMPILE =arm-linux-

    /arch/arm/Makefile

    啟動代碼的產生要通過此一文件,由于2.4內核還沒有對的支持,自行加入如下代碼

    ifeq ((CONFIG_ARCH_ ),y)

    TEXTADDR = xxx

    MACHINE = s3c2410

    Endif

    TEXTADDR是內核的虛擬起始地址[6],也是內核最終運行地址,通常設為PAGE_OFFSET +0x8000,須根據實際情況相結合[2]。

    /arch/arm/config.in

    config.in是配置文件,決定了我們在配置菜單中看到的內容。自行加入$CONFIG_ARCH_S3C2410子選項[5]。

    if [ $CONFIG_ARCH_S3C2410 = y ]; then

    comment'Archimedes/A5000 Implementations'

    dep_bool 'SMDK (MERI TECH BOARD) '

    CONFIG _S3C2410_SMDK//

    $CONFIG_ARCH_S3C2410

    //其他

    fi

    在if [ $CONFIG_FOOTBRIDGE_HOST = y -o

    ……

    $CONFIG_ARCH_SA1100 = y ]; then

    define_bool CONFIG_ISA y

    else

    define_bool CONFIG_ISA n

    fi

    中依樣加入$CONFIG_ARCH_s3c2410 = y-o。

    /arch/arm/boot/Makefile

    ZTEXTADDR 是解壓前image.rom的位置,ZRELADDR是內核解壓并最終執行的位置。ZRELADDR與TEXTADDR之間符合如下映射關系:__virt_to_phys(TEXTADDR) == ZRELADDR[6]。

    ifeq ((CONFIG_ARCH_s3c2410),y)

    ZTEXTADDR = xxx

    ZRELADDR = xxx

    Endif

    /arch/arm/boot/compressed/ Makefile

    依樣加入 ifeq ($(CONFIG_ARCH_S3C2410),y)

    OBJS +=head-s3c2410.o

    endif

    /arch/arm/boot/compressed/head-s3c2410.s

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

    上一頁 1 2 3 下一頁

    關鍵詞: S3C2410 Linux 標準 移植

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 司法| 凭祥市| 额敏县| 安阳市| 珲春市| 芦溪县| 修水县| 南川市| 库车县| 政和县| 尉氏县| 奉化市| 池州市| 肥乡县| 措美县| 盐津县| 惠州市| 罗源县| 宜昌市| 清苑县| 尼木县| 乐东| 黎川县| 大余县| 怀集县| 新宁县| 桐柏县| 贺州市| 酒泉市| 陆良县| 广汉市| 内黄县| 中宁县| 古蔺县| 宁晋县| 闻喜县| 宁陵县| 开远市| 甘孜县| 郓城县| 南通市|