• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      μCLinux操作系統(tǒng)的移植及Bootloader程序設(shè)計

      2010-07-17 07:37:24劉彥蘭
      山西電子技術(shù) 2010年3期
      關(guān)鍵詞:源碼源代碼體系結(jié)構(gòu)

      劉彥蘭

      (國營第七八五廠,山西太原030024)

      0 引言

      μCLinux在無MMU的嵌入式系統(tǒng)中具有較好的技術(shù)優(yōu)勢,而ARM7TDMI又是一種高效,低功耗的RISC處理器。本文構(gòu)造了一個μCLinux嵌入式操作系統(tǒng),將它嵌入到基于ARM7TDMI內(nèi)核的系統(tǒng)中。

      1 嵌入式系統(tǒng)硬件平臺

      1.1 TMS320VC5471評估板簡介

      TI公司提供的嵌入式芯片TMS320VC5471集成了基于TMS320C54X體系結(jié)構(gòu)的DSP子系統(tǒng)和基于ARM7TDMI核的RISC微控制器子系統(tǒng)的雙CPU定點數(shù)字信號處理器。TMS320VC5471的功能框圖如圖1所示:

      圖1 TMS320VC5471的功能框圖

      2 μClinux操作系統(tǒng)的移植

      μCLinux的移植過程,大致需要分成四個步驟:

      (1)建立交叉編譯環(huán)境;

      (2)裁減、編譯內(nèi)核;

      (3)裝載內(nèi)核;

      (4)內(nèi)核啟動。

      2.1 交叉編譯環(huán)境的建立

      在μCLinux的移植中,ARM體系結(jié)構(gòu)的交叉編譯環(huán)境,分為主機和目標機兩方面。在本設(shè)計中,主機安裝的是RedHat linux7.3操作系統(tǒng),并在其上建立GCC的ARM體系結(jié)構(gòu)的交叉編譯環(huán)境。

      2.2 操作系統(tǒng)的移植

      2.2.1 獲得μCLinux源代碼開發(fā)包

      本課題采用的版本為Kernel-2.4.18??梢詮幕ヂ?lián)網(wǎng)上下載得到μCLinux-2.4.18、μClibc和elf2flt源碼及應(yīng)用程序源碼包。文件為:μCLinux-dist-20040218.tar.gz,把它保存到/home目錄下,然后執(zhí)行:tar zxvf μCLinux-dist-20040218.tar.gz。當tar程序運行完畢后,在/home目錄下會有一個/home/μCLinux-dist的新目錄,這就是 μCLinux的源碼根目錄,里面有進行μCLinux開發(fā)的所有的源代碼。

      2.2.2 Clinux內(nèi)核的修改、配置和編譯

      由于本設(shè)計是將μClinux移植到VC5471平臺上,所以需要根據(jù) VC5471下面的 ARM7TDMI架構(gòu),重新修改μCLinux內(nèi)核。修改μCLinux內(nèi)核有三方面的工作:一個是函數(shù)庫的問題;二是重寫Makefile以適應(yīng)目標板;三是修改μCLinux/Linux/arch/armnommu/目錄下的文件,以使它適應(yīng)ARM7TDMI架構(gòu)。

      μClinux內(nèi)核的配置系統(tǒng)由三部分組成,分別是:

      (1)Makefile:分布在μClinux內(nèi)核源代碼中的Makefile,定義了μClinux內(nèi)核編譯規(guī)則;

      (2)配置文件(config.in):給用戶提供配置內(nèi)核的選擇功能;

      (3)配置工具:包括配置命令解釋器(對配置腳本中使用的配置命令進行解釋)和配置用戶界面(提供基于字符界面、基于圖形界面以及基于Xwindows圖形界面的用戶配置界面,各自對應(yīng)于 Make config、Make menuconfig和 Make xconfig)。

      make xconfig根據(jù)課題的需要配置內(nèi)核編譯選項

      —Choose a Vendor/Product combination.

      (TI/5471)Vendor/Product

      (linux-2.4.x)Kernel Version

      (μClibc)Libc Version

      [Exit]

      Do you wish to save your new kernel configuration?

      [Yes]

      .make dep建立依賴關(guān)系

      .make lib_only編譯庫文件

      make user_only編譯用戶應(yīng)用程序文件

      make romfs生成romfs文件系統(tǒng)

      make編譯內(nèi)核

      若成功,在μClinux-dist下有一個images目錄,下面有四個文件:

      (1).image.elf:ELF格式含調(diào)試信息和 romfs的μCLinux,可以用gdb裝載調(diào)試運行

      (2).romfs.img:romfs的二進制文件

      (3).linux.bin:不含romfs的μCLinux二進制文件

      (4).image.bin:linux.bin和romfs.bin合并而成,并多了4個字節(jié)的校驗,這個文件的內(nèi)容拷貝到ram里后就可以直接從入口運行了。

      2.3 Bootloader的設(shè)計與實現(xiàn)

      將μCLinux內(nèi)核加載到內(nèi)存上運行的方式,需要編寫一段啟動代碼Bootloader。

      (1)Bootloader的操作模式

      多數(shù)Bootloader都包含兩種操作模式:“啟動加載”模式和“下載”模式。Bootloader從固態(tài)存儲設(shè)備上將操作系統(tǒng)加載進RAM中運行,整個過程并沒有用戶的介入。這種模式是Bootloader的正常工作模式。下載模式下,Bootloader將通過串口或網(wǎng)絡(luò)等通信手段從主機下載文件,此模式通常在首次安裝內(nèi)核與根文件系統(tǒng)或以后的系統(tǒng)更新時使用。工作于這種模式下的Bootloader需要向終端用戶提供一個簡單的命令行接口。

      (2)Bootloader的基本任務(wù)

      Bootloader一般是被燒錄或者下載到bootrom的0x0地址處,作為上電后執(zhí)行的第一部分指令,Bootloader需要完成以下幾個任務(wù):<1>硬件初始化;<2>存儲器重映射;<3>下載內(nèi)核映像和根文件系統(tǒng)或把內(nèi)核裝載到SRAM里;<4>調(diào)用內(nèi)核。

      (3)Bootloader的實現(xiàn)

      (a)硬件設(shè)備初始化:該部分代碼用ARM匯編實現(xiàn)

      Ⅰ進入SVC32工作模式,并且禁止所有的中斷??梢酝ㄟ^寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器(ARM的CPSR寄存器)來完成。

      mov r0,#(ARM_MODE_SVC|I_BIT|F_BIT)

      msr cpsr,r0

      Ⅱ設(shè)置CPU的速度和時鐘頻率。

      Ⅲ網(wǎng)口初始化,為內(nèi)核的下載準備條件。

      ⅣLCD和鍵盤初始化,為人機交互準備條件

      Ⅴ RAM初始化,為Bootloader的C代碼運行準備空間。

      (b)拷貝Bootloader的C代碼到RAM空間中。

      拷貝時要確定兩點:① C代碼的可執(zhí)行映象在固態(tài)存儲設(shè)備的存放起始地址和終止地址;② RAM空間的起始地址。以上可以通過鏈接文件來確定。

      (c)設(shè)置堆棧指針sp

      ldr sp,=__stack(__stack的值可以通過鏈接文件確定)

      (d)地址重映射(Remap)

      具體的實現(xiàn)代碼如下:

      ramlow()

      {

      (*(long*)0xffff2804)&=0xfffffffc;

      (*(long*)0xffff2800)&=0xfffffffc;

      }

      (e)跳轉(zhuǎn)到C代碼的入口點開始執(zhí)行。由于VC5471評估板沒有固化BOOT程序,所以使用CCS軟件通過JTAG接口,先將Bootloader程序下載到RAM中,然后寫到Flash的起始地址,上電后從Flash中開始執(zhí)行Bootloader。到此Bootloader的任務(wù)就完成了。

      3 結(jié)束語

      本文以DSP+ARM結(jié)構(gòu)的嵌入式處理器TMS320VC5471評估板(EVM)作為目標板,搭建了基于GDB的嵌入式操作系統(tǒng)集成開發(fā)調(diào)試環(huán)境并實現(xiàn)了μCLinux操作系統(tǒng)的移植。對同類型的嵌入式操作系統(tǒng)的移植工作具有一定的參考價值。

      [1]TI,TMS320VC547x CPU and Peripherals Reference Guide[M].2001.

      [2]TMS320VC5471 Fixed-PointDigital Signal Processor Data Manual[M].2001.

      [3]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學出版社,2003.10.

      [4]趙炯.Linux內(nèi)核完全注釋[內(nèi)核版本0.11(0.95)]修正版V1.9.5[M].北京:機械工業(yè)出版社,2004.5.

      猜你喜歡
      源碼源代碼體系結(jié)構(gòu)
      人工智能下復雜軟件源代碼缺陷精準校正
      計算機仿真(2023年8期)2023-09-20 11:23:42
      基于網(wǎng)頁源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
      基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測方法
      計算機時代(2023年6期)2023-06-15 17:49:09
      基于TXL的源代碼插樁技術(shù)研究
      企業(yè)如何保護源碼
      軟件源代碼非公知性司法鑒定方法探析
      基于粒計算的武器裝備體系結(jié)構(gòu)超網(wǎng)絡(luò)模型
      作戰(zhàn)體系結(jié)構(gòu)穩(wěn)定性突變分析
      基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實驗課程改革
      計算機教育(2016年4期)2016-05-20 02:36:05
      揭秘龍湖產(chǎn)品“源代碼”
      巍山| 石林| 华亭县| 旺苍县| 浙江省| 彭山县| 信丰县| 刚察县| 昌图县| 武陟县| 航空| 贵定县| 平罗县| 维西| 康乐县| 丹江口市| 龙游县| 微博| 临猗县| 固安县| 垣曲县| 巴南区| 苍溪县| 苏州市| 海宁市| 富宁县| 潜山县| 廉江市| 吉安市| 株洲县| 嵩明县| 图木舒克市| 宜章县| 额敏县| 平罗县| 林州市| 乐安县| 云龙县| 张家口市| 聂拉木县| 永和县|