成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux uClinux建立開發環境編譯內核

運維 系統運維
在進行Linux uClinux的移植和開發之前,我們需要建立系統的交叉編譯環境,因為做為主機我們使用的是IA32體系結構的處理器,而開發板我們才用的是ARM體系結構的處理器。ARM平臺的交叉編譯工具可以從Linux uClinux的官方網站獲得

Linux uClinux對于電腦使用的玩家的常用軟件,然后我就學習及深入的研究Linux uClinux,在這里和大家一起探討Linux uClinux的使用方法,希望對大家有用。作為Linux uClinux系統的移植和開發的主機最好使用Linux操作系統,如果選擇Windows平臺作為開發平臺則需要Cygwin軟件包的支持。在這里我們選用的開發平臺是Fedora Core 2,內核版本為2.4.x。

1.建立開發環境

在進行Linux uClinux的移植和開發之前,我們需要建立系統的交叉編譯環境,因為做為主機我們使用的是IA32體系結構的處理器,而開發板我們才用的是ARM體系結構的處理器。ARM平臺的交叉編譯工具可以從Linux uClinux的官方網站獲得(www.Linux uClinux.org)。

在這里我們采用的是arm-elf-tools-20030314.sh,該文件是一個自解壓文件,可以直接執行程序安裝。#./arm-elf-tools-20030314.sh如果不能執行該文件,則需要修改一下文件的可執行屬性#chmod 755 arm-elf-tools-20030314.sh然后再執行程序的安裝。可執行文件按會被默認安裝在/usr/local/bin目錄下。

2.編譯Linux uClinux內核

Linux uClinux是一款支持無MMU單元的嵌入式操作系統,我們可以從其官方網站獲取最新版本的內核文件(www.Linux uClinux.org)。我們將下載的Linux uClinux內核文件放入我們的工作目錄(/home/jelly/kernel/),然后使用tar工具解壓內核文件。

$cd /home/jelly/kernel/$tar xvzf Linux uClinux-dist-200xxxxx.tar.gz經過一段時間的解壓后將在工作目錄下會生成Linux uClinux-dist文件夾。在編譯內核之前我們首先要做的是配置內核,常用的配置方式有如下幾種:
make xconfig - X Windows圖形界面的配置選項
make menuconfig - Console圖形界面的配置選項
make config - 命令接口的配置選項

在這里需要注意的是Linux uClinux是不支持loadable modules的,因此應該取消對該模塊的支持。
$cd Linux uClinux-dist/
$make menuconfig

配置你需要的選項,比如處理器類型,開發板類型,內核版本等。配置好之后選擇Saving and Exiting保存退出。

編譯Linux uClinux內核的常用選項有:make distclean該命令將清除以前編譯時候產生的文件,包括.config文件,所有目標文件以及內核映象文件。make clean該命令與make distclean相似,也是清除之前編譯時候產生的文件make dep 這個只需要在第一次編譯的時候執行,為了是建立文件之間的依賴關系,make命令會根據這個依賴關系來確定哪些文件需要重新編譯,哪些文件可以跳過。

make lib_only編譯uClibcx庫,make user_only編譯用戶制定的應用程序,比如初始化進程init,bash,以及集成了很多常用工具的嵌入式軟件包busybox。make romfsLinux uClinux經常才用romfs(只讀文件系統)來作為系統的根文件系統,所以首先需要將之前編譯的很多應用程序以Linux uClinux所需要的目錄格式存放起來。

比如將可執行文件放在bin目錄下,將配置文件放在etc目錄下。該命令執行后會在Linux uClinux-dist目錄下生成一個romfs的目錄,并且將文件系統所需要的文件組織起來,以便之后生成fomfs的映象文件。

make image生成romfs文件系統的映象文件,以及linux的映象文件。該Linux的映象文件是elf格式的,是不能直接下載到開發板上執行的(里面包含了大量的調試信息,elf文件執行前的環境建立信息等內容。該文件可以使用arm-elf-objcopy工具來生成可以直接在RAM中執行的binary文件)。

make linux執行該命令之后將生成linux內核文件。make zImage建立經過gzip算法壓縮過的內核映象文件,通常zImage產生的內核映象文件無法超過512KB大小。make modules建立內核模塊注:有些Linux uClinux版本提供了更多的編譯方式,比如make linux.bin。關于其他的編譯方式可以參看內核源碼目錄里的Makefile文件。

在介紹完常用的幾個內核編譯命令后,我們可以使用如下的幾個命令來建立我們所需要的內核以及文件系統:
make dep
make clean
make all

這樣在Linux uClinux-dist/linux-2.x.x目錄下會生成linux, System.map,在Linux uClinux-dist/images/目錄下會生成image.bin, linux.bin, image.ram, image.rom, romfs.img, linux.text, linux.data等文件。

如果你編譯過程中沒有出現錯誤,但是沒有我說的這些文件,你可以參看Makefile文件了解更多的東西。其中image.ram是直接可以下載到ram中執行的文件。在調試階段我們就可以使用該文件。image.rom是一個zImage文件,可以自解壓的內核,該文件需要少寫到FLASH里,而不能直接放入RAM中執行。

3.Linux uClinux內核建立過程

建立內核首先是建立單獨的內核模塊和內核子系統,一旦這些建立好了之后將通過連接文件將多個文件連接在一起。該連接文件一般在arch/$(ARCH)/$(PLATFORM)/$(BOARD)/$(MODEL).ld。連接器使用該連接文件生成linux文件:LD -T (MODUEL).ld crt0_$(MODUEL).o [objs] -o linux連接文件定義了內核如何組織內存段。

System.map文件是通過linux文件產生的,用于調試使用。通過該文件可以方便的確定函數的位置。該文件是通過如下方式產生:
NM $(LINUX) | grep -v '\(compiled\)\|\(\.o$$\)\|\(a\)' | sort > System.map

linux.data文件是包含內核所有數據段的代碼,是通過移除linux文件中所有只讀段和其他不需要的段得到的,該文件可以通過arm-elf-objcopy來產生,如:
OBJCOPY -O binary --remove-section=.romvec --remove-section=.text\
  --remove-section=.ramvec --remove-section=.bss\
  --remove-section.eram linux linux.data

linux.text文件包含了所有文本段代碼,是去除數據段后的代碼OBJCOPY -O binary --remove-section=.ramvec --remove-section=.bss\
  --remove-section-.data --remove-section=.eram\
  --set-section-flags=.romvec=CONTENTS,ALLOC,LOAD,READONLY,CODE linux linux.text

linux.bin文件,是可以實際載入內存中執行的文件,他的建立是通過linux.text和linux.data兩個文件連接得到的,如:cat linux.text linux.data > linux.bin
該文件只是內核,并沒有包含文件系統。我們可以使用如下方式將文件系統和內核文件連接起來生成image.bin映象文件:cat linux.bin romfs.img > image.bin

4.手工生成ROMFS文件系統

建立ROMFS文件系統之前應該手工建立文件系統樹,例如通常ROMFS包含如下目錄:/bin /dev /etc /lib /proc /sbin /tmp /usr /var然后我們可以將交叉編譯好的應用程序放入/bin目錄中,之后使用genromfs工具來建立文件系統的映象,如:genromfs -v -V "ROM Disk" -f romfs.img -d romfs > romfs.map

最后,可以與內核文件連接在一起,然后燒入Flash中。cat linux.bin romfs.img > image.bin

5.參考文檔

《構建嵌入式LINUX系統》 O'REILLY
《Linux How To》
《Linux Documentation》

【編輯推薦】

  1. Linux磁盤停止了有點奇怪了試試其他的Fedora core 6
  2. Linux系統軟件簡易介紹
  3. Linux操作系統直接建立在內核基礎上
  4. 如何將Linux安裝入Linux USB設備
  5. Linux Makefile系統的真相符合自由軟件慣例
責任編輯:佚名 來源: CSDN
相關推薦

2017-03-27 18:05:49

Linux內核編譯與開發

2010-02-25 10:46:44

Linux操作系統

2009-12-09 09:30:04

LinuxuClinux

2010-02-26 10:25:56

2013-02-21 13:49:20

Tizen三星

2011-01-04 17:00:32

Linux內核編譯

2010-03-02 16:13:56

Linux升級

2009-12-17 15:18:47

2009-10-16 09:45:41

Linux內核操作系統

2023-10-05 15:47:04

Linux內核編譯

2011-04-25 19:15:16

2011-08-30 16:02:10

MTK開發環境

2021-05-26 07:53:58

Linux運維Linux系統

2009-10-23 16:35:44

linux Debia

2010-02-02 13:26:53

Linux內核

2023-05-08 08:05:42

內核模塊Linux

2009-12-09 09:47:05

ibmdwRational

2010-04-20 10:12:05

2011-07-04 14:58:56

Qt 桌面 qvfb

2011-08-22 13:56:09

Linux虛擬
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线看一区二区 | 美女爽到呻吟久久久久 | 一区二区在线不卡 | 综合久久一区 | 韩国毛片视频 | 国产区精品 | 国产精品久久久久久久久免费高清 | 羞羞视频在线网站观看 | 欧美a在线观看 | av中文在线 | 欧美a区 | 狠狠婷婷综合久久久久久妖精 | 国产精品成人在线 | 亚洲视频免费在线 | www日日日| 日韩在线小视频 | 中文字幕视频在线观看 | 成人av播放 | 日本小视频网站 | 99re在线播放 | 亚洲一区二区三区免费在线观看 | 中文字幕第十五页 | 久久1区 | 色综合一区二区 | 91久久国产综合久久 | 久久久精品影院 | 国产国语精品 | www.成人.com | a在线免费观看视频 | 午夜在线| 亭亭五月激情 | 91精品国产综合久久精品 | 九九热这里 | 亚洲国产精品日本 | av国产精品毛片一区二区小说 | 91九色porny首页最多播放 | 亚洲综合大片69999 | 96久久久久久 | 亚洲综合婷婷 | 天天人人精品 | 久久久亚洲一区 |