《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 利用U-Boot實現uClinux向S3C44B0的移植
利用U-Boot實現uClinux向S3C44B0的移植
中電網
摘要: Samsung公司推出的一款為手持設備或其他通用設備開發的32位處理器,它基于ARM7TDMI核,沒有內存管理單元(MMU)。在采用無MMU的微處理器的嵌入式系統中廣泛采用的就是uClinux系統,作為linux的衍生系統,其具有支持多任務、內核精簡、高效穩定和源代碼開放的優點。
關鍵詞: 軟件 S3C44B0 uClinux U-boot
Abstract:
Key words :

S3C44B0是Samsung公司推出的一款為手持設備或其他通用設備開發的32位處理器,它基于ARM7TDMI核,沒有內存管理單元(MMU)。在采用無MMU的微處理器的嵌入式系統中廣泛采用的就是uClinux系統,作為linux的衍生系統,其具有支持多任務、內核精簡、高效穩定和源代碼開放的優點。系統移植的基本過程包括:獲取較新版本的linux-2.6.9內核源碼,根據目標平臺對源碼中與硬件平臺相關部分進行修改,添加必要的外設驅動程序,對系統進行針對目標平臺的交叉編譯,生成的內核映像文件的下載調試等。

2  硬件環境介紹

硬件平臺以S3C44B0為核心,采用的外部晶振頻率為6MHZ,內核主頻最高可達到66MHZ,平臺以2MB的AMD29LV160DB做 rom,其地址空間為0~1fffff,以HY57V1620HG sdram做內存,地址空間為0c000000~0c7fffff,共8MB,以RTL8019as作為網絡控制芯片,接在S3C44B0的Bank5 上,通過JTAG與PC機的并口連接支持在線調試與程序燒寫。

48.jpg
圖1 硬件平臺框圖

3  uClinux的移植

 3.1 交叉編譯環境的建立

交叉編譯是利用運行在某機器(宿主機)上的編譯器編譯某個源程序生成在另一臺機器(目標機)上運行的目標代碼的過程。本文的交叉編譯環境建立如下:在PC機上安裝Linux操作系統做為我們的宿主機,版本為Fedore Core 5,從http : // www. uClinux .org/上下載交叉編譯工具鏈arm-elf-tools20040427并安裝在Linux 宿主機上,這樣就建立了uClinux-arm的交叉編譯環境。

 3.2 U-Boot-1.1.2的移植

Bootloader是系統加電后運行的第一段代碼,在一個基于ARM的嵌入式系統中,系統上電或復位時通常都從地址0X00000000處開始執行,而這個地址處通常就是系統的bootloader,通過這段程序可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境調整到一個合適的狀態,以便為最終的調用操作系統內核準備好正確的環境。

本文中bootloader采用對U-Boot進行移植來實現的。U-Boot的全稱是Universal Boot Loader,是德國DENX小組開發的用于多種嵌入式CPU的Bootloader引導程序, 支持PowPC、ARM、MIPS、M68K等多種處理器平臺,支持Linux、VxWorks、NetBSD等多種嵌入式操作系統,主要用來開發嵌入式系統初始化代碼bootloader,其易于裁剪和調試,尊循GPL (通用公共許可) 公約,完全開放源代碼??梢詮膆ttp://sourceforge.net/projects/u-boot得到它多個版本的源碼,本文是以u- boot-1.1.2為例進行移植的。

在移植前可以通過查看doc文檔了解U-Boot源碼的主要結構,在眾多的目錄中與移植相關的主要是board、cpu、drivers等幾個目錄。移植的基本過程如下:

(1) 查找以S3C44B0處理器為核心的硬件平臺,此目的是為了簡化移植難度;

在board/下運行 find  -exec grep -l 44B0 {} 找到/dave/B2/B2.c,由此我們知道dave公司的B2平臺是以S3C44B0處理器為核心的,所以移植可以參考B2平臺進行;

(2) 建立我們目標平臺的目錄lanlan,把B2板的文件拷到建立的目錄中,但需要修改文件的名稱;

(3) 修改新建目錄中的文件的名稱,將文件中所有的B2都改成lanlan;

(4) 在include/configs/添加目標平臺的配置文件lanlan.h;此文件可以參考B2.h建立;

(5) 修改總目錄下的Makefile文件,添加目標板的編譯信息;

這個過程完成后可以在u-boot/目錄下依次運行make lanlan_config ; make進行編譯,編譯完成后如果能生成u-boot.bin等文件,則說明前面的過程無誤,如果出現錯誤,則需要根據錯誤信息進行相關修改;

(6) 修改硬件相關的文件,在cpu/中有S3C44B0的目錄,說明U-Boot已經提供了對S3C44B0的支持,我們只是需要修改部分文件使其適合我們的目標平臺,主要修改的是cpu/下start.S 和serial.c,include/configs/下的lanlan.h中關于cpu的頻率、串口波特率、PLLCON寄存器、flash和 sdram的大小、基地址和網絡控制芯片的基地址等內容,確定修改正確后運行make lanlan_config;make命令,編譯生成的u-boot.bin就是我們需要的引導程序;

(7) 通過JTAG將生成的u-boot.bin燒寫到目標平臺的0x0地址,配置Linux下的minicom或者Windows下的超級終端,注意配置的串口及串口波特率要與U-Boot中設置的一樣,按復位鍵或上電重啟目標平臺后可以從minicom或超級終端看到U-Boot在系統中運行了。

通過以上步驟,完成了U-Boot移植的主要工作。

3.3 uClinux內核的移植

3.3.1 uClinux-dist源碼包的準備

從uClinux的官方網站下載uclinux-dist源碼包。源碼包中包含了uClinux內核、uClibc庫和busybox等 uClinux下的用戶應用程序,本文中下載的是uClinux-dist-20041215.tar.gz,在linux系統下解壓后會生成一個 uClinux-dist目錄,該目錄包含了編譯uClinux內核需要的所有文件。在uClinux-dist目錄中包含有linux-2.2.x、 linux-2.4.x、linux-.2.6.x三個子目錄,就是三種版本的uClinux內核的源碼,我們的目的是把uClinux-2.6.9版本移植到目標平臺上,所以我們還需要從http://www.kernel.org上下載linux-2.6.9.tar.bz2,從http: //www.uClinux.org上下載linux-2.6.9-uc0.patch,從Samsung的網站http: //www.oprensrc.sec.samsung.com上下載補丁文件linux-2.6.9-uc0.hsc0.patch。在Linux系統下解壓內核Linux-2.6.9.tar.bz2并打上補丁文件linux-2.6.9-uc0.patch和linux-2.6.9-uc0- hsc0.patch,將打上補丁的2.6.9內核改名為linux-2.6.x并替換在uClinux-dist包中的linux-2.6.x,完成移植前的準備工作。

3.3.2 uClinux-dist源碼的修改

按照如下步驟添加S3C44B0的相關文件:

 # cp uClinux-dist/vendors/Samsung/4510b –r  uClinux-dist/vendors/Samsung/44b0,將源代碼包中已經有的Samsung的4510b的文件復制一份并改名為44b0 ,這一過程也可以直接用鼠標完成;

# cp linux-2.6.x/arch/armnommu/configs/s3c44b0x_defconfig

vendors/Samsung/44b0/config.linux-2.6.x,該步驟是將s3c44b0x_defconfig文件復制到44b0目錄下,該步驟同樣可以復制、粘貼完成;

雖然已經給linux-2.6.9內核打了補丁文件,但是我們依然需要對源代碼進行修改才能順理的編譯通過,文件的修改如下:

(1) 修改linux-2.6.x/arch/armnommu/arch/kernel/vmlinux.lds.S,添加以下內容:

(.got)?Global offset table */
romfs_start = .;
romfs.o
romfs_end = .;

這樣修改的目的是把romfs文件系統連接到內核映象中。

  (2) 修改linux-2.6.x/arch/armnommu/kernel/setup.c, 添加變量romfs_start,romfs_end及修改

其設置如下:
default_command_line
extern int _stext, _text, _etext, _edata, _end;
extern int romfs_start,romfs_end;
char *from = default_command_line;
sprintf(default_command_line, "root=/dev/ram0 initrd=0x%08lx,%ldk keepinitrd", (unsigned
long)&romfs_start,((unsigned long)&romfs_end - (unsigned long)&romfs_start)>>10);

(3) 修改vendors/Micetek/44b0/rc文件中 /bin/expand /etc/ramfs.img /dev/ram1;

(4) 添加串口驅動程序,添加文件linux-2.6.x/drivers/serial/serial_s3c44b0.c和linux-2.6.x /include/asm-armnommu/arch-s3c44b0/uart.h,因為在linux-2.6.9內核中對S3C44B0的支持并不是很好,系統只是提供了一個簡易的串口驅動,所以需要添加串口驅動。

3.3.3 內核的配置與編譯

在編譯內核之前需要進行配置,可以通過三種方式對內核進行配置:在uClinux-dist目錄下運行make config/make menuconfig/make xconfig,其中make config是在字符界面下,make menuconfig是在字符界面下實現的菜單界面,make xconfig為圖形界面,三種配置方式是一致的,xconfig界面比較友好,容易掌握,但它卻沒有menuconfig菜單穩定,而且在有些機器上運行不起來,本文是使用make menuconfig完成的。運行make menuconfig時, 程序會依次出現開發平臺、內核、文件系統、應用程序的配置界面, 可以根據自己的需要進行配置。配置時大部分選項可以使用其缺省值,只有小部分需要用戶根據需求進行選擇,進行內核配置時,有3種選擇,它們分別代表的含義如下:
“Y” - 將該功能編譯進內核;
“N” -不將該功能編譯進內核;
“M” -將該功能編譯成可以在需要時動態插入到內核中的模塊;

將與核心其它部分關系較遠且不經常使用的部分功能代碼編譯成為可加載模塊,有利于減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響,許多功能都可以這樣處理,例如網卡的支持、對FAT等文件系統的支持等。

在配置好內核后依次執行以下命令:
make dep; make clean; make lib_ only; make user_ only; make romfs; make image; make編譯完成之后,會在uClinux-dist/linux-2.6.x/下會生linux.bin,在uClinux-dist/images /下會生成linux.data、linux.text、image.bin等目標文件。在編譯中可能會產生錯誤,需要根據錯誤信息進行調試修改。

3.4 內核的下載運行

(1) 我們將開始移植好的U-Boot的目標文件u-boot.bin通過JTAG燒寫到目標硬件平臺上,燒寫時開始地址要從0開始,目標板上電后從0地址處運行就開始運行移植好的bootloader了,我們可以在windows下通過超級終端或者在linux下的minicom檢測目標板的串口輸出;

(2) 通過U-Boot的命令tftpboot來下載我們移植好的內核,tftpboot c008000 linux.bin;go c008000,通過以上兩個步驟就實現了uClinux的下載運行。

系統啟動后,首先執行了bootloader,完成了硬件設備的初始化任務,然后將運行的控制權交給了uClinux內核,uClinux系統就開始運行了。

4 結束語

由于Linux操作系統的源碼開放性及ARM微處理器的良好性能,如何將Linux系統移植到ARM平臺上得到越來越多的關注。操作系統的移植是構建基于ARM微處理器的嵌入式系統的前題,將bootloader與系統內核分開進行設計能夠使軟件結構更加清晰,而且可以利用前者的功能,靈活的實現多種引導系統的方式。

本論文的創新點:本文采用移植U-Boot作為系統bootloader,從而實現了uClinux-2.6內核移植。U-Boot作為一種功能強大的bootloader,適合多種平臺并可以引導多種操作系統,利用其強大功能可以實現系統內核的多種下載和引導方式,掌握其移植方法很有必要,uClinux2.6內核對硬件平臺的支持更好,移植過程中要注意不同硬件平臺間的差別。

參考文獻:
[1] 蘇義鑫,王子毅,張素文.uClinux在嵌入式系統中的移植研究[J].微計算機信息,2006, 11-2:58-60。                                                                               
[2] 李巖,榮盤.基于S3C44B0嵌入式uClinux系統原理及應用[M].北京:清華大學出版社.2005。
[3] 孫天澤,袁文菊,張海峰.嵌入式設計及Linux驅動開發指南[M].北京:電子工業出版社. 2005.2。
[4] 王田苗.嵌入式系統設計與實例開發[M].北京:清華大學出版社.2003。
[5] 常銀霞,張振東,唐繼英.利用Bootloader實現uClinux向S3C44B0上的移植[J].河北工業大學學報.Vol.34 No.2.2005.4。
[6] http://www.linuxforum.com。
 

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美日韩在线播放| 久久久久一区| 麻豆精品一区二区综合av| 欧美成人有码| 免费在线成人| 久久综合影视| 伊人久久婷婷色综合98网| 亚洲三级毛片| 亚洲国产人成综合网站| 亚洲美女在线看| 久久综合给合| 亚洲精品一线二线三线无人区| 亚洲欧美国产精品桃花| 国产精品免费一区二区三区在线观看| 欧美在线视频一区二区三区| 日韩视频精品| 欧美精品日本| 亚洲三级视频在线观看| 国产日韩精品一区| 国产精品日韩欧美一区二区三区| 亚洲欧美在线一区| 亚洲午夜高清视频| 欧美三日本三级少妇三2023| 国产一区二区三区观看| 亚洲区在线播放| 国内精品嫩模av私拍在线观看| 正在播放欧美视频| 久久久精品免费视频| 在线国产精品播放| 国产精品男gay被猛男狂揉视频| 欧美日韩性视频在线| 国产精品自拍小视频| 亚洲美女精品一区| 亚洲国产天堂网精品网站| 亚洲人成网站精品片在线观看| 欧美日韩精品免费观看| 黄色亚洲在线| 亚洲一区二区3| 欧美日本簧片| 国产主播喷水一区二区| 午夜影院日韩| 国产精品女人久久久久久| 欧美日韩视频专区在线播放| 一本大道av伊人久久综合| 国产亚洲欧美一区在线观看| 亚洲一区二区三区免费观看| 亚洲国产日韩一区二区| 久久一区二区三区四区五区| 尤物yw午夜国产精品视频明星| 国产精品一区亚洲| 亚洲欧洲日本一区二区三区| 一区二区高清| 亚洲欧美视频在线观看视频| 久久九九久久九九| 久久精品视频在线免费观看| 久久久久久综合网天天| 亚洲丶国产丶欧美一区二区三区| 久久夜精品va视频免费观看| 亚洲视屏在线播放| 午夜一级久久| 欧美成人午夜影院| 久久精品视频在线| 亚洲理伦电影| 亚洲一区二区精品| 午夜免费日韩视频| 欧美freesex交免费视频| 亚洲精品美女在线| 国产精品一区二区a| 欧美日韩一区二区欧美激情| 欧美成年人视频网站| 亚洲精品一区二区三区蜜桃久| 国产欧美一区二区三区久久| 在线精品福利| 亚洲欧美日韩国产成人| 日韩五码在线| 欧美日韩999| 亚洲国产精品福利| 欧美日韩一区二区三区在线视频| 久久精品国产91精品亚洲| 免费欧美日韩国产三级电影| 欧美日韩三区四区| 亚洲激情专区| 亚洲精品一区二区三区av| 国外成人网址| 欧美顶级大胆免费视频| 欧美一区二区三区视频在线| 国产精品videosex极品| 午夜免费电影一区在线观看| 欧美日韩一卡| 欧美午夜www高清视频| 亚洲第一精品影视| 亚洲天堂av在线免费| 国产欧美一区二区三区国产幕精品| 欧美日韩成人综合| 性色av一区二区三区| 好吊色欧美一区二区三区四区| 国产精品xxxxx| 欧美日韩久久久久久| 久久久爽爽爽美女图片| 久久精品国产精品| 亚洲国产精品一区二区尤物区| 国产一区二区三区观看| 国产精品欧美久久久久无广告| 欧美日韩中文字幕在线视频| 在线亚洲欧美视频| 国产午夜精品久久久| 一本久道久久综合婷婷鲸鱼| 亚洲福利视频二区| 亚洲高清电影| 欧美激情视频一区二区三区免费| 国产女主播一区| 在线观看中文字幕不卡| 亚洲精品一区在线观看香蕉| 久久综合国产精品| 国产欧美一区二区三区沐欲| 一区二区三区精品在线| 久久激情五月丁香伊人| 亚洲一区二区三区激情| 国产精品一区二区三区久久久| 欧美日本一区二区视频在线观看| 国产精品久久久久77777| 亚洲欧美国内爽妇网| 亚洲欧洲在线看| 国产欧美精品xxxx另类| 国产精品高清免费在线观看| 免费毛片一区二区三区久久久| 蜜桃久久精品乱码一区二区| 激情欧美丁香| 影音先锋久久资源网| 9l国产精品久久久久麻豆| 欧美久久婷婷综合色| 国产丝袜美腿一区二区三区| 亚洲国产日日夜夜| 一区免费观看| 欧美二区在线观看| 亚洲国产欧美日韩另类综合| 国产毛片久久| 欧美一区综合| 美女性感视频久久久| 国产日韩欧美电影在线观看| 黄色精品在线看| 国产日韩欧美在线一区| 亚洲免费中文字幕| 亚洲电影在线播放| 国产精品视频xxx| 国产欧美高清| 免费不卡视频| 国产精品久久午夜夜伦鲁鲁| 国产精品白丝av嫩草影院| 欧美性猛交一区二区三区精品| 久久福利资源站| 国产精品地址| 影音先锋国产精品| 国产精品美女久久久久久久| 久久人人爽爽爽人久久久| 亚洲精品字幕| 久久久精品网| 亚洲国产天堂久久综合网| 亚洲欧洲在线视频| 亚洲欧洲日产国码二区| 国产精品久久久久影院亚瑟| 亚洲国产视频一区| 久久不见久久见免费视频1| 国产欧美日韩高清| 亚洲欧美国产高清va在线播| 欧美精品福利视频| 在线视频免费在线观看一区二区| 亚洲欧美日本视频在线观看| 久久亚洲综合色一区二区三区| 麻豆成人在线播放| 国产亚洲aⅴaaaaaa毛片| 欧美日韩亚洲高清一区二区| 国产情侣一区| 久久综合福利| 国产精品av一区二区| 亚洲国产日韩综合一区| 你懂的亚洲视频| 欧美中文在线视频| 亚洲欧美日韩另类| 亚洲高清视频一区| 久久久精品午夜少妇| 久久精品午夜| 亚洲一区二区三区午夜| 亚洲一二三区在线观看| 欧美激情中文字幕乱码免费| 国产在线视频欧美一区二区三区| 亚洲一级片在线看| 午夜免费久久久久| 韩国三级在线一区| 久久视频精品在线| 亚洲高清视频在线| 模特精品裸拍一区| 亚洲国产精品一区二区三区| 另类亚洲自拍| 韩国精品在线观看| 日韩网站在线观看| 亚洲欧美欧美一区二区三区| 国产亚洲福利社区一区| 欧美日韩在线不卡一区| 欧美丝袜第一区| 在线播放日韩欧美| 亚洲精品中文字幕在线| 免费亚洲电影在线观看| 久久福利资源站| 久久手机免费观看| 欧美成人精品在线播放| 欧美日韩一区二区三区在线观看免| 亚洲亚洲精品三区日韩精品在线视频| 亚洲欧美精品在线观看| 激情欧美丁香| 欧美影片第一页| 精品va天堂亚洲国产| 欧美在线999| 国产精品久久久久久久久久久久久| 在线视频观看日韩| 欧美经典一区二区三区| 欧美日韩亚洲网| 欧美伦理a级免费电影| 亚洲国产天堂网精品网站| 国产精品久久久久久久久久妞妞| 久久婷婷av| 日韩写真在线| 国产日韩欧美中文| 亚洲黄色有码视频| 国产一区 二区 三区一级| 亚洲视频网在线直播| 午夜国产欧美理论在线播放| 国产一区二区三区无遮挡| 在线综合亚洲欧美在线视频| 亚洲国产日韩在线一区模特| 免费观看成人www动漫视频| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品日韩在线播放| 欧美一区二区啪啪| 亚洲国产黄色片| 亚洲线精品一区二区三区八戒| 亚洲免费视频网站| 亚洲精品国产精品国自产观看| 午夜精品一区二区三区在线| 在线观看精品一区| 国产精品久久久一区二区三区| 国产精品自拍三区| 精品成人a区在线观看| 国产欧美一级| 国产精品私房写真福利视频| 欧美日韩亚洲综合在线| 亚洲人午夜精品| 午夜在线一区| 久久综合九色| 国产伦精品一区二区三区视频黑人| 亚洲人成人一区二区在线观看| 99国产精品久久久久久久| 久久久久久久高潮| 国产精品热久久久久夜色精品三区| 日韩视频国产视频| 亚洲精品国产系列| 欧美婷婷六月丁香综合色| 一区二区三区免费在线观看| 亚洲欧美一区二区三区极速播放| 亚洲在线黄色| 99精品欧美一区二区三区| 亚洲精品女人| 亚洲六月丁香色婷婷综合久久| 老司机午夜免费精品视频| 久久九九热免费视频| 欧美久久一级| 亚洲免费视频一区二区| 宅男噜噜噜66一区二区| 黄色在线成人| 欧美一区二区在线| 精品999久久久| 亚洲高清久久网| 欧美了一区在线观看| 精品88久久久久88久久久| 樱桃视频在线观看一区| 久久aⅴ国产欧美74aaa| 精品动漫一区| 久久成人av少妇免费| 国产亚洲精品一区二555| 亚洲一区二区在线播放| 老司机精品福利视频| 国产精品a久久久久久| 国产欧美日韩亚洲精品| 久久一区二区三区国产精品| 在线观看免费视频综合| 欧美二区在线观看| 日韩视频在线一区二区| 欧美日韩爆操| 国产亚洲精久久久久久| 欧美三级午夜理伦三级中视频| 亚洲欧美日韩一区二区三区在线观看| 男人的天堂亚洲在线| 欧美激情一区二区三区四区| 亚洲欧美日韩国产中文在线| 久久综合国产精品台湾中文娱乐网| 亚洲性视频网址| 国产一区二区三区高清播放| 久久久久久一区二区三区| 欧美日韩免费观看一区二区三区| 亚洲精品国产精品久久清纯直播| 欧美日韩精品综合在线| 日韩视频不卡中文| 狠狠色伊人亚洲综合网站色| 欧美日本二区| 欧美激情乱人伦| 欧美一区二区三区在线观看| 亚洲国产欧美不卡在线观看| 亚洲男同1069视频| 欧美高清视频在线播放| 欧美精品一区二区三区四区| 国产一区清纯| 欧美日韩亚洲一区二区| 国产日韩欧美自拍| 欧美日本国产| 在线日韩av| 国产一区二区三区成人欧美日韩在线观看| 在线成人激情视频| 夜夜夜久久久| 欧美激情久久久| 久久精品国产96久久久香蕉| 欧美日韩亚洲国产精品| 亚洲一区在线观看视频| 午夜日韩福利| 在线日韩欧美视频| 欧美不卡视频一区发布| 欧美日韩国产123区| 亚洲一区日韩| 亚洲视频在线观看网站|