• 正文
    • 整體編譯內(nèi)核
    • 單獨(dú)編譯內(nèi)核
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-內(nèi)核編譯之初次編譯

2024/12/17
1347
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

接下來我們就進(jìn)行內(nèi)核代碼的初次編譯,直接使用我們適配好的Linux內(nèi)核源碼進(jìn)行編譯。為了使編譯操作更加簡(jiǎn)單,我們提供了編譯腳本,將編譯操作命令放進(jìn)了腳本中執(zhí)行,直接執(zhí)行編譯腳本文件build.sh即可完成代碼的編譯。我們先了解一下編譯腳本的內(nèi)容。使用vi命令打開build.sh腳本:

elf@ubuntu:~/work/linux-4.1.15-elf1$ vi build.sh

build.sh腳本內(nèi)容如下:

#!/bin/bash

export CPUS=`grep -c processor /proc/cpuinfo`

source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

make distclean

make imx6ull_elf1_defconfig

make -j${CPUS}




rm -rf ./.tmp

make modules_install INSTALL_MOD_PATH=./.tmp/rootfs/

cd .tmp/rootfs/

tar -jcvf modules.tar.bz2 * 

第2行,獲取到當(dāng)前Ubuntu虛擬機(jī)CPU的核心數(shù)量,并賦值給變量CPUS;

第3行,執(zhí)行環(huán)境變量,使用arm的gcc工具編譯當(dāng)前內(nèi)核。注意:在腳本當(dāng)中執(zhí)行的環(huán)境變量只在當(dāng)前腳本內(nèi)生效,單獨(dú)編譯鏡像時(shí)仍需要執(zhí)行環(huán)境變量;

第4行,編譯前清理工程;

第5行,使用imx6ull_elf1_defconfig配置當(dāng)前工程,執(zhí)行后在當(dāng)前路徑下生成.config文件;

第6行,執(zhí)行”make”,編譯Linux源碼,后面的”-j${CPUS}”為使用當(dāng)前虛擬機(jī)的所有核心一起編譯;

第8-11行,編譯生成的.ko模塊使用make modules_install命令安裝到./.tmp/rootfs/目錄下,并壓縮打包,生成modules.tar.bz2。?

整體編譯內(nèi)核

elf@ubuntu:~/work/linux-4.1.15-elf1$ ./build.sh

編譯完成之后,會(huì)在arch/arm/boot/目錄下生成zImage文件,就是內(nèi)核鏡像文件;在arch/arm/boot/dts/下生成多個(gè).dtb設(shè)備樹二進(jìn)制文件;以及在某些驅(qū)動(dòng)目錄下生成.ko模塊。編譯完成后,生成的文件以及路徑會(huì)在下篇文章進(jìn)行說明。

單獨(dú)編譯內(nèi)核

在調(diào)試過程中我們會(huì)經(jīng)常需要更改內(nèi)核配置或者單獨(dú)編譯zImage、dtb、ko模塊,那么直接執(zhí)行上面build.sh編譯腳本進(jìn)行全部編譯就不太合適了,就需要更改此腳本或者單步編譯。

設(shè)置交叉編譯環(huán)境

注意:

  • 設(shè)置環(huán)境變量之后,只要不更換終端,下次再編譯就不需要重新設(shè)置。
  • 如果重新打開新終端或者切換賬戶,編譯前需要重新設(shè)置環(huán)境變量。

設(shè)置編譯環(huán)境主要是指定目標(biāo)架構(gòu)和交叉編譯工具鏈,以及編譯過程中使用到的一些庫的路徑等,使用如下命令配置(.后邊有空格):

. /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

更改內(nèi)核配置

Linux內(nèi)核編譯之前需要進(jìn)行配置,腳本中已經(jīng)有默認(rèn)的配置。往往我們需要根據(jù)自己的需求進(jìn)行內(nèi)核配置,接下來我們看一下如何進(jìn)行內(nèi)核配置的更改。更改內(nèi)核配置就是根據(jù)自己的需要,將內(nèi)核中的驅(qū)動(dòng)、軟件包、組件等功能模塊進(jìn)行裁剪或者添加??墒褂胢ake menuconfig命令生成圖形界面進(jìn)行修改。如果想要對(duì)內(nèi)核進(jìn)行重新配置,就需要先執(zhí)行,make imx6ull_elf1_defconfig命令生成.config,然后使用圖形界面進(jìn)行配置,執(zhí)行命令:

elf@ubuntu:~/work/linux-4.1.15-elf1$ make menuconfig

此圖形界面所呈現(xiàn)的配置選項(xiàng)的菜單列表來源于Kconfig文件(下面章節(jié)會(huì)講到),這些配置選擇,就是根據(jù).config讀取出來的,我們也可以通過配置選項(xiàng)進(jìn)行配置:

(1)Y(將該功能編譯進(jìn)內(nèi)核);

(2)N(不將該功能編譯進(jìn)內(nèi)核);

(3)M(將該功能編譯成可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中的模塊);

三種選擇根據(jù)實(shí)際需求進(jìn)行配置,最后在保存退出的時(shí)候,會(huì)把最新的配置更新到.config中,此時(shí)可以把.config文件中配置復(fù)制到imx6ull_elf1_defconfig默認(rèn)配置文件,否則在下次編譯前在執(zhí)行make distclean的時(shí)候會(huì)把最新的.config清除掉,我們還需要重新配置。

單獨(dú)編譯內(nèi)核鏡像zImage

elf@ubuntu:~/work/linux-4.1.15-elf1$ make zImage -j4

單獨(dú)編譯設(shè)備樹

elf@ubuntu:~/work/linux-4.1.15-elf1$ make dtbs –j4

單獨(dú)編譯模塊

elf@ubuntu:~/work/linux-4.1.15-elf1$ make modules -j4

安裝模塊到./.tmp/rootfs/文件夾中

elf@ubuntu:~/work/linux-4.1.15-elf1$ make modules_install INSTALL_MOD_PATH=./.tmp/rootfs/

打包模塊

elf@ubuntu:~/work/linux-4.1.15-elf1$ cd .tmp/rootfs/

elf@ubuntu:~/work/linux-4.1.15-elf1$ tar -jcvf modules.tar.bz2 *
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦