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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 移植標(biāo)準(zhǔn)Linux到S3C2410

          移植標(biāo)準(zhǔn)Linux到S3C2410

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

          1 引言

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

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

          2 操作系統(tǒng)的

          2.1的含義

          要使得能在ARM嵌入式處理器上運作,勢必要經(jīng)過移植 (porting) 的過程。所謂移植,就是讓一套軟件可以在一套選定硬件平臺上正常運作,也就是要將平臺相依 (platform dependent) 的部分做適當(dāng)?shù)男薷摹?nèi)核源碼arch子目錄包括了所有和平臺體系結(jié)構(gòu)相關(guān)的核心代碼,它的每一個子目錄都代表所支持的一種體系結(jié)構(gòu),arm就是關(guān)于我們所選處理器體系結(jié)構(gòu)的子目錄。我們的移植工作主要集中于此目錄下。

          2.2移植的具體實現(xiàn)

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

          / Makefile文件

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

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

          設(shè)置為ARCH :=arm

          指定交叉編譯器CROSS_COMPILE =

          設(shè)置為CROSS_COMPILE =arm-linux-

          /arch/arm/Makefile

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

          ifeq ((CONFIG_ARCH_ ),y)

          TEXTADDR = xxx

          MACHINE = s3c2410

          Endif

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

          /arch/arm/config.in

          config.in是配置文件,決定了我們在配置菜單中看到的內(nèi)容。自行加入$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是內(nèi)核解壓并最終執(zhí)行的位置。ZRELADDR與TEXTADDR之間符合如下映射關(guān)系:__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操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


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