小續(xù)
第一次接觸內(nèi)核的東西,有點(diǎn)小激動(dòng)啊
激動(dòng)歸激動(dòng),這實(shí)驗(yàn)還是要繼續(xù)做下去,書上三兩句話就帶過去的,剩下的就留給我們了,著實(shí)考驗(yàn)動(dòng)手能力啊
當(dāng)編譯過內(nèi)核之后,發(fā)現(xiàn)這個(gè)過程也不復(fù)雜嘛(復(fù)雜的是內(nèi)核的配置),不過對于沒接觸過的人來說,也能夠折騰一段時(shí)間的了,所以記下這個(gè)過程,其中也有些需要注意的地方,然后給沒接觸過的人分享下
環(huán)境如下
操作系統(tǒng):ubuntu 12.04LTS
交叉編譯工具:arm-linux-gcc 3.2
開發(fā)板:FS2410
linux內(nèi)核:linux 2.6.14
mystery@lcw:~/Downloads$ cat /etc/issue Ubuntu 12.04.2 LTS n l mystery@lcw:~/Downloads$ arm-linux-gcc -v Reading specs from /usr/local/arm/bin/../lib/gcc-lib/arm-linux/3.2/specs Configured with: ./configure --target=arm-linux --prefix=/usr/local/arm/ --with-headers=/home/sylam/armbuild/src/linux/include --disable-shared --disable-threads --enable-languages=c : (reconfigured) ./configure --target=arm-linux --prefix=/usr/local/arm/ --with-headers=/home/sylam/armbuild/src/linux/include Thread model: posix gcc version 3.2
mystery@lcw:~/Downloads$ ls /home/mystery/Downloads/ cross-3.2.tar.bz2 linux-2.6.14 eclipse-cpp-juno-SR2-linux-gtk.tar.gz linux-2.6.14.tar.bz2 google-chrome-stable_current_i386.deb wps-office_8.1.0.3724~b1p2_i386.deb jdk-7u17-linux-i586.tar.gz wps_symbol_fonts.zip mystery@lcw:~/Downloads$ |
準(zhǔn)備工作
決定在哪里編譯你的內(nèi)核
你需要決定你要在哪里編譯你的ARM Linux內(nèi)核。一個(gè)比較好的位置就是在你的home目錄,我這里直接下載了解壓后就編譯了,所以就在download目錄下進(jìn)行的
決定內(nèi)核的版本號
你需要決定你想要編譯哪個(gè)版本的linux內(nèi)核。大多數(shù)然想要編譯最新版本的穩(wěn)定內(nèi)核。有一套表示版本號的機(jī)制,可以幫助你決定識別一個(gè)特定的發(fā)行版本。
對于任何的內(nèi)核版本x.y.z,
* x -這個(gè)是主版本號
* y -這個(gè)是次版本號,這里:
偶數(shù)表示“穩(wěn)定的”內(nèi)核發(fā)行
奇數(shù)表示"開發(fā)"或者"beta"內(nèi)核發(fā)行版本,相對來說不穩(wěn)定。
* z -這是這個(gè)內(nèi)核的補(bǔ)丁級別。
這個(gè)版本號表示了內(nèi)核版本的主線。我這里按照書上的,選擇了linux 2.6.14的內(nèi)核,大家在www.kernel.org可以找到下載地址哈。
開始工作
1. 首先,我們需要修改目錄樹根下的Makefile,指明交叉編譯器,找銀行也要先說明去哪家銀行嘛,哈哈
找到
ARCH ?= $(SUBARCH) CROSS_COMPILE ?= |
修改成
192 ARCH ?= arm 193 CROSS_COMPILE ?= arm-linux-gcc |
<注意1>這里我開始出現(xiàn)了一個(gè)錯(cuò)誤,在打arm的時(shí)候后面多打了一個(gè)空格,結(jié)果后面編譯的時(shí)候出現(xiàn)
mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig make: *** /home/mystery/Downloads/linux-2.6.14/arch/arm: Is a directory. Stop. mystery@lcw:~/Downloads/linux-2.6.14$ vim Makefile |
好吧,第一次還是老實(shí)的慢慢打代碼,切勿多出空格來了
2. 然后我們需要設(shè)置一下環(huán)境變量,知道去哪家銀行取錢,然后需要知道銀行在哪里啊
mystery@lcw:~/Downloads/linux-2.6.14$ export PATH=$PATH:/usr/local/arm/bin/ |
這個(gè)路徑當(dāng)然是交叉編譯器的位置了,在配置交叉編譯器的時(shí)候,其實(shí)就已經(jīng)把這個(gè)路徑寫入到配置文件去了,這里主要是說明需要指明銀行的地點(diǎn)哈
3. 去銀行總得有點(diǎn)事做吧,現(xiàn)在就來配置下這個(gè)清單,我也是第一次哈,所以內(nèi)核產(chǎn)生文件就直接復(fù)制了
mystery@lcw:~/Downloads/linux-2.6.14$ cp arch/arm/configs/smdk2410_defconfig .config |
<注意2>這里的.config文件應(yīng)該由配置得到的,但是這之前,我也不知道怎么才算配置成功,對吧,所以先看結(jié)果,再回過頭來學(xué)習(xí),就容易多了,不過這過程還是要說清楚
4. 知道要去銀行干什么了,下面就直接去銀行與工作人員交涉吧。輸入內(nèi)核配置命令,進(jìn)行內(nèi)核選項(xiàng)的選擇
內(nèi)核支持4種不同的配置方法,這幾種方法只是與用戶交互的界面不同,其實(shí)現(xiàn)的功能是一樣的;四種方法都是通過讀取上面的配置文件“.config”隱藏文件,4種方法如下
make config : 基于文本的最為傳統(tǒng)的配置界面,不推薦使用 make menuconfig : 基于文本選單的配置界面,字符終端下推薦使用 make xconfig : 基于圖形窗口模式的配置界面,X-Window下推薦使用 make oldconfig : 自動(dòng)讀入“.config”配置文件,并且只要求用戶設(shè)定上一次沒有設(shè)定 過的選項(xiàng)
在這4種模式中,make menuconfig使用最為廣泛,我這里也使用這種哈
mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig HOSTCC scripts/basic/fixdep scripts/basic/fixdep.c: In function ‘traps’: scripts/basic/fixdep.c:368:2: warning: dereferencing ……………………… ……………………… >> Unable to find the Ncurses libraries. >> >> You must install ncurses-devel in order >> to use 'make menuconfig' make[2]: *** [scripts/lxdialog/ncurses] Error 1 make[1]: *** [menuconfig] Error 2 make: *** [menuconfig] Error 2 |
代碼有點(diǎn)長,中間省略了。
呃,出錯(cuò)了,不要急,看看錯(cuò)誤原因:
>> Unable to find the Ncurses libraries. >> >> You must install ncurses-devel in order >> to use 'make menuconfig' |
意思是不能找到Ncurses libraries,你必須在這之前安裝ucurses工具,好吧,照做
mystery@lcw:~/Downloads/linux-2.6.14$ sudo apt-get install ncurses-dev [sudo] password for mystery: Reading package lists... Done |
<注意3>ncurses用于make menuconfig界面顯示
后面我無意間又發(fā)現(xiàn)了一個(gè)錯(cuò)誤
mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig HOSTCC scripts/lxdialog/checklist.o HOSTCC scripts/lxdialog/inputbox.o HOSTCC scripts/lxdialog/lxdialog.o …………………… scripts/kconfig/mconf arch/arm/Kconfig # using defaults found in .config .config:622: trying to assign nonexistent symbol DEVFS_FS .config:622: trying to assign nonexistent symbol DEVFS_FS .config:623: trying to assign nonexistent symbol DEVPTS_FS_XATTR Your display is too small to run Menuconfig! It must be at least 19 lines by 80 columns. make[1]: *** [menuconfig] Error 1 make: *** [menuconfig] Error 2 |
中間也省略了一些哈,你找到錯(cuò)誤說明了嗎:
<注意4>意思是說你的顯示屏太小了,容不下Menuconfig,至少需要19*80的空間,好吧,照做
5. 下面就開始和銀行人員交涉吧
mystery@lcw:~/Downloads/linux-2.6.14$ make menuconfig scripts/kconfig/mconf arch/arm/Kconfig # # using defaults found in .config # .config:11: trying to assign nonexistent symbol GENERIC_IOMAP |
配置選項(xiàng)出來了有木有啊
<注意5>在各級子菜單項(xiàng)中,選擇相應(yīng)的配置時(shí),有3種選擇,它們代表的含義分別如下
Y:將該功能編譯進(jìn)內(nèi)核
N:不將該功能編譯進(jìn)內(nèi)核
M:將該功能編譯成可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中的模塊
在編譯內(nèi)核的過程中,最麻煩的事情就是配置這步工作了,初次接觸linux內(nèi)核的開發(fā)者還真弄不清楚如何選取這些選項(xiàng),還好這些配置大部分選項(xiàng)都可以使用其默認(rèn)值,只有一小部分需要根據(jù)用戶不同的需要選擇
<注意6>選擇的原則就是:將與內(nèi)核其它部分關(guān)系較遠(yuǎn)且不經(jīng)常使用的部分功能編譯成為可加載模塊,這有利用減小內(nèi)核的長度,減小內(nèi)核消耗的內(nèi)核,簡化該功能相應(yīng)的環(huán)境改變時(shí)對內(nèi)核的影響,不需要的功能就不要選,與內(nèi)核關(guān)系緊密而且經(jīng)常使用的部分功能代碼直接編譯到內(nèi)核中
我們進(jìn)入第二項(xiàng)“通用設(shè)置”看看
Linux Kernel v2.6.14 Configuration ------------------------------------------------------------------------------ +----------------------------- General setup -----------------------------+ | Arrow keys navigate the menu. | Highlighted letters are hotkeys. Pressing | | for Search. Legend: [*] built-in [ ] excluded | +---------------------------------------------------------------------+ | | |() Local version - append to kernel release | | | |[*] Automatically append version information to the version string (N| | | |[*] Support for paging of anonymous memory (swap) | | | |[*] System V IPC | | | |[ ] POSIX Message Queues | | | |[ ] BSD Process Accounting | | | |[*] Sysctl support | | | |[ ] Auditing support | | | |[ ] Support for hot-pluggable devices | | | +v(+)-----------------------------------------------------------------+ | +-------------------------------------------------------------------------+ | |
<注意7>大家注意到了吧,這里選擇前面有中括號和圓括號,其實(shí)還有個(gè)尖括號。用空格鍵選擇相應(yīng)的選項(xiàng)時(shí)會發(fā)現(xiàn)中括號中要么是空,要么是“*”;尖括號中可能是空/“*”和“M”,分別表示包含選項(xiàng)/不包含選項(xiàng)和編譯成模塊;圓括號的內(nèi)容是要求用戶在所提供的幾個(gè)選項(xiàng)中選擇一項(xiàng)。
上面是什么意思呢?我解釋下哈。
第一個(gè)是圓括號,就是讓你從下面的選項(xiàng)中進(jìn)行選擇;我簡單的翻譯下哈:
( )本地版本-添加到內(nèi)核發(fā)行版
[*]自動(dòng)添加版本信息到原版本信息后面
[*]支持匿名分頁存儲
[*]支持系統(tǒng)V IPC通信機(jī)制
[ ]支持POSIX消息隊(duì)列
…………
下面很多,就不看了哈,上面的意思就是:把(中括號中選擇了的)自動(dòng)添加版本信息到原版本信息后面/支持匿名分頁存儲/支持系統(tǒng)V IPC通信機(jī)制等等添加到新的內(nèi)核版本中去,這下應(yīng)該懂了吧;至于尖括號選項(xiàng),就是前面說的Y/N/M,這里就不多說了啊
配置內(nèi)核主要是根據(jù)你需要哪些功能,大家按照<注意6>進(jìn)行配置就是了
6. 等配置好了,就把工作交給銀行人員吧
mystery@lcw:~/Downloads/linux-2.6.14$ make zImage make: arm-linux-gccgcc: Command not found 關(guān)鍵字:嵌入式 S3C2410 平臺移植 linux 6 14內(nèi)核 引用地址:【嵌入式】S3C2410平臺移植linux 2.6.14內(nèi)核
上一篇:【ARM】ARM體系結(jié)構(gòu)-GPIO 推薦閱讀
據(jù)報(bào)道,目前的全球機(jī)器人市場已經(jīng)迎來了不可思議的景象,機(jī)器人產(chǎn)業(yè)的旺盛讓人不敢相信。報(bào)道稱中國需求讓全球機(jī)器人市場“盛況空前”,為爭奪中國需求,各大機(jī)器人廠商紛紛擴(kuò)大在華生產(chǎn)。
全球的機(jī)器人產(chǎn)業(yè)正可謂盛況空前。不僅在面臨著少子高齡化和人手問題的日本,新興經(jīng)濟(jì)體也由于人工成本上漲而使得自動(dòng)化需求持續(xù)增長,從大型機(jī)器人企業(yè)到零部件...
“知否知否?你可知道?”
“知了知了,當(dāng)然知得,安全操作機(jī)器人最為重要。”
今天,小仙為自己帶鹽(代言),向大家介紹仙知機(jī)器人的使用注意事項(xiàng)及安全防護(hù)措施。
在運(yùn)輸期間,確保適當(dāng)安裝負(fù)載,由于機(jī)器人傾翻或負(fù)載掉落導(dǎo)致人身傷害的危險(xiǎn)。
僅使用原裝充電器,使用非制造商提供的其他充電器會損壞,可能引發(fā)火災(zāi)。
切勿不負(fù)責(zé)任地駕駛車輛...
一、AI機(jī)器感知解決機(jī)器理解世界的問題。1.機(jī)器視覺硬件可采集周圍環(huán)境信息目前常用的視覺傳感器主要有:攝像頭、ToF鏡頭和激光雷達(dá)技術(shù)。1)機(jī)器視覺相機(jī)機(jī)器視覺相機(jī)的目的是將通過鏡頭投影到傳感器的圖像傳送到能夠儲存、分析和(或者)顯示的機(jī)器設(shè)備上??梢杂靡粋€(gè)簡單的終端顯示圖像,例如利用計(jì)算機(jī)系統(tǒng)顯示、存儲以及分析圖像。2)激光雷達(dá)技術(shù)激...
此前有消息稱,魅族今年將會實(shí)行“一體兩翼”戰(zhàn)略,手機(jī)仍然是魅族的核心業(yè)務(wù),同時(shí)會新增智能穿戴與智能家居業(yè)務(wù)。企查查APP顯示,1月26日,珠海市魅族科技有限公司公開了一項(xiàng)“智能手表”外觀專利,公開號CN306296501S,申請日期為2020年9月?! △茸骞贾悄苁直硗庥^專利 該專利顯示,這款智能手表為方形設(shè)計(jì),外觀設(shè)計(jì)用于顯示時(shí)間、運(yùn)行程序、進(jìn)...
史海拾趣 ACI [Applied Concepts, Inc.]公司的發(fā)展小趣事
隨著全球電子市場的不斷擴(kuò)大,ACI公司開始將目光投向海外市場。公司積極實(shí)施國際化戰(zhàn)略,通過設(shè)立海外分支機(jī)構(gòu)、參加國際展會等方式拓展市場。同時(shí),ACI還加強(qiáng)了與國際同行的交流與合作,共同推動(dòng)電子行業(yè)的發(fā)展。通過國際化布局,ACI成功打開了海外市場的大門,為公司的發(fā)展注入了新的動(dòng)力。 Gigavac LLC公司的發(fā)展小趣事
隨著全球電子市場的不斷擴(kuò)大,ACI公司開始將目光投向海外市場。公司積極實(shí)施國際化戰(zhàn)略,通過設(shè)立海外分支機(jī)構(gòu)、參加國際展會等方式拓展市場。同時(shí),ACI還加強(qiáng)了與國際同行的交流與合作,共同推動(dòng)電子行業(yè)的發(fā)展。通過國際化布局,ACI成功打開了海外市場的大門,為公司的發(fā)展注入了新的動(dòng)力。 FCT electronic公司的發(fā)展小趣事
隨著技術(shù)的不斷成熟和市場需求的增長,F(xiàn)CT electronic公司開始尋求市場擴(kuò)張和多元化發(fā)展。公司決定將產(chǎn)品線拓展至剛撓結(jié)合板和撓性加熱器領(lǐng)域,以滿足不同客戶的需求。同時(shí),F(xiàn)CT electronic公司還積極開拓國際市場,通過參加國際展覽、與海外企業(yè)合作等方式,逐漸在全球電子行業(yè)中樹立了品牌形象。 AAT [Advanced Analog Technology, Inc.]公司的發(fā)展小趣事
近年來,電子行業(yè)面臨著成本上升、全球不穩(wěn)定以及經(jīng)濟(jì)動(dòng)蕩等多重挑戰(zhàn)。FCT electronic公司憑借其在撓性電路板領(lǐng)域的深厚積累,積極應(yīng)對這些挑戰(zhàn)。公司加強(qiáng)了對供應(yīng)鏈的管理,提高了生產(chǎn)效率,降低了成本。同時(shí),F(xiàn)CT electronic公司還加大了對研發(fā)的投入,推動(dòng)產(chǎn)品向高端化、智能化方向轉(zhuǎn)型升級。這些努力使FCT electronic公司在行業(yè)中保持了領(lǐng)先地位。 Ericsson公司的發(fā)展小趣事
Ericsson公司始終將創(chuàng)新作為企業(yè)發(fā)展的核心動(dòng)力。從早期生產(chǎn)電話機(jī)、電話交換機(jī)到今天提供端到端全面通信解決方案以及專業(yè)服務(wù),Ericsson不斷定義電信行業(yè)“進(jìn)步”的含義,并通過實(shí)現(xiàn)每一個(gè)“進(jìn)步”引領(lǐng)全球電信業(yè)的技術(shù)發(fā)展與變革。特別是在移動(dòng)通信領(lǐng)域,Ericsson一直處于領(lǐng)先地位,為全球所有主要移動(dòng)通信標(biāo)準(zhǔn)提供設(shè)備和服務(wù)。 DURAKOOL公司的發(fā)展小趣事
隨著技術(shù)的不斷進(jìn)步,DURAKOOL公司不斷投入研發(fā),推出了一系列創(chuàng)新產(chǎn)品,如Durakool接觸器和電流互感器。這些產(chǎn)品憑借其高可靠性和穩(wěn)定性,在電力監(jiān)控和智能計(jì)量等領(lǐng)域得到了廣泛應(yīng)用。公司也逐漸擴(kuò)大了市場覆蓋范圍,不僅在美國本土取得了成功,還逐步進(jìn)入國際市場。
小廣播
熱門活動(dòng)
換一批 更多
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
最新單片機(jī)文章
何立民專欄
單片機(jī)及嵌入式寶典
更多精選電路圖
更多每日新聞
更多往期活動(dòng)
07月22日歷史上的今天
廠商技術(shù)中心
|