0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

fireflyAIO-3399J編譯Buildroot固件簡(jiǎn)介

firefly ? 來(lái)源:firefly ? 作者:firefly ? 2019-12-24 11:11 ? 次閱讀

編譯 Buildroot 固件

本章介紹 Buildroot 固件的編譯使用。

準(zhǔn)備工作

下載源碼

下載 Linux-SDK:

方法一

mkdir linux-sdk cd linux-sdk # 初始化repo倉(cāng)庫(kù) ../repo/repo init --repo-url https://github.com/FireflyTeam/repo.git -u https://github.com/FireflyTeam/manifests.git -b linux-sdk -m rk3399/rk3399_linux_release.xml # 同步源碼 ../repo/repo sync -c

方法二

下載Linux_SDK.7z

# 把壓縮包放在上一步下載repo工具的目錄下 7z x Linux_SDK.7z # 更新代碼 repo sync -c

配置編譯環(huán)境

安裝編譯所需工具,確保工具都正確安裝:

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \ gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools \ linaro-image-tools autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make \ binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget \ libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client \ subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo \ liblz4-tool genext2fs lib32stdc++6

編譯SDK

配置編譯文件

選擇開(kāi)發(fā)板對(duì)應(yīng)的配置文件。配置文件會(huì)鏈接到 device/rockchip/.BoardConfig.mk,查看該文件可確認(rèn)當(dāng)前所使用的配置文件:

./build.sh aio-3399j.mk # 文件路徑在 `device/rockchip/rk3399/aio-3399j.mk`

.mk 文件默認(rèn)配置為編譯 Buildroot 固件,下面對(duì) Buildroot 相關(guān)配置進(jìn)行說(shuō)明:

# Buildroot config export RK_CFG_BUILDROOT=rockchip_rk3399 # Buildroot 根文件系統(tǒng)配置文件 # 文件路徑在 `buildroot/configs/rockchip_rk3399_defconfig`

# Recovery config export RK_CFG_RECOVERY=rockchip_rk3399_recovery # recovery 模式下根文件系統(tǒng)配置文件(可省略) # 文件路徑在 `buildroot/configs/rockchip_rk3399_recovery_defconfig`

# rootfs image path export RK_ROOTFS_IMG=buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.$RK_ROOTFS_TYPE # Buildroot 根文件系統(tǒng)鏡像路徑 # 本例中,文件路徑在 `buildroot/output/rockchip_rk3399/images/rootfs.ext4` # 注:該文件路徑將在首次編譯根文件系統(tǒng)后生成

執(zhí)行編譯命令時(shí),將會(huì)根據(jù) .mk 文件進(jìn)行編譯。

全自動(dòng)編譯

全自動(dòng)編譯會(huì)編譯并打包固件 update.img,生成固件目錄 rockdev/:

./build.sh

部分編譯

編譯 kernel

./build.sh kernel

編譯 u-boot

./build.sh uboot

編譯 rootfs

編譯 Buildroot 根文件系統(tǒng),將會(huì)在 buildroot/output 生成編譯輸出目錄:

./build.sh buildroot # 注:確保作為普通用戶編譯 Buildroot 根文件系統(tǒng),避免不必要的錯(cuò)誤。編譯過(guò)程中會(huì)自動(dòng)下載所需軟件包,請(qǐng)保持聯(lián)網(wǎng)狀態(tài)

固件打包

更新鏈接

為確保 rockdev/ 目錄下文件鏈接正確,更新各部分鏡像鏈接:

./mkfirmware.sh

打包固件

將 rockdev 目錄的各部分鏡像打包成固件 update.img:

./build.sh updateimg

Buildroot 介紹

output 目錄

Buildroot 編譯輸出結(jié)果保存在 output 目錄,具體目錄由配置文件決定,本例保存在 buildroot/output/rockchip_rk3399 目錄,后續(xù)可以在該目錄執(zhí)行 make 編譯根文件系統(tǒng)。

采用全自動(dòng)編譯方式時(shí),默認(rèn)會(huì)生成 buildroot/output/rockchip_rk3399_recovery 目錄,這是 recovery 的編譯輸出目錄。

子目錄說(shuō)明:

build/ 包含所有的源文件,包括 Buildroot 所需主機(jī)工具和選擇的包,這個(gè)目錄包含所有 模塊源碼。

host/ 主機(jī)端編譯需要的工具包括交叉編譯工具。

images/ 包含壓縮好的根文件系統(tǒng)鏡像文件。

staging/ 這個(gè)目錄類似根文件系統(tǒng)的目錄結(jié)構(gòu),包含編譯生成的所有頭文件和庫(kù),以及其他開(kāi)發(fā)文件,不過(guò)他們沒(méi)有裁剪,比較龐大,不適用于目標(biāo)文件系統(tǒng)。

target/ 包含完整的根文件系統(tǒng),對(duì)比 staging/,它沒(méi)有開(kāi)發(fā)文件,不包含頭文件,二進(jìn)制文件也經(jīng)過(guò) strip 處理。

自定義 Buildroot

下文將介紹一些自定義 Buildroot 的方法。

模塊配置

默認(rèn)編譯好的根文件系統(tǒng)不一定滿足我們的需求,我們可能需要增加一些第三方包,或者修改包的配置選項(xiàng),Buildroot 支持圖形化方式去做選擇配置:

cd buildroot/output/rockchip_rk3399/ # 進(jìn)入圖形化配置界面,選擇所需模塊,保存退出 make menuconfig # 保存到配置文件 'buildroot/configs/rockchip_rk3399_defconfig' make savedefconfig #編譯 Buildroot 根文件系統(tǒng) make

需要了解的是:

進(jìn)行編譯時(shí),Buildroot 根據(jù)配置,會(huì)自動(dòng)從網(wǎng)絡(luò)獲取相關(guān)的軟件包,包括一些第三方庫(kù),插件,實(shí)用工具等,放在dl/目錄。

軟件包會(huì)解壓在 output/build/ 目錄下,然后進(jìn)行編譯。

如果要修改軟件包的源碼,可以通過(guò)打補(bǔ)丁的方式進(jìn)行修改,補(bǔ)丁集中放在 package/ 目錄,Buildroot 會(huì)在解壓軟件包時(shí)為其打上相應(yīng)的補(bǔ)丁。

busybox 配置修改

busybox 用于管理系統(tǒng)的命令工具,可按如下方式修改:

cd buildroot/output/rockchip_rk3399/ # 進(jìn)入圖形化配置界面,選擇所需工具,退出保存 make busybox-menuconfig # 保存到配置文件 `board/rockchip/common/base/busybox.config` make busybox-update-config make

文件系統(tǒng)覆蓋

文件系統(tǒng)覆蓋是指在目標(biāo)文件系統(tǒng)編譯完成后將文件覆蓋到文件系統(tǒng)目錄。通過(guò)這種方式,我們可以簡(jiǎn)單的添加或修改一些文件:

本例覆蓋目錄 buildroot/board/rockchip/rk3399/fs-overlay-64

公有覆蓋目錄 buildroot/board/rockchip/common

例:buildroot/board/rockchip/rk3399/fs-overlay-64/etc/input-event-daemon.conf 將覆蓋文件系統(tǒng)的 /etc/input-event-daemon.conf 文件。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11161

    瀏覽量

    208460
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6083

    瀏覽量

    35092
  • Firefly
    +關(guān)注

    關(guān)注

    2

    文章

    538

    瀏覽量

    6946
  • Buildroot
    +關(guān)注

    關(guān)注

    1

    文章

    48

    瀏覽量

    1367
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    fireflyAIO-3399J主板簡(jiǎn)介

    AIO-3399J 的標(biāo)準(zhǔn)套裝包含以下配件
    的頭像 發(fā)表于 11-05 15:52 ?1481次閱讀
    <b class='flag-5'>fireflyAIO-3399J</b>主板<b class='flag-5'>簡(jiǎn)介</b>

    Firefly-RK3399 Buildroot 固件介紹

    編譯 Buildroot 固件 本章介紹 Buildroot 固件編譯使用。
    的頭像 發(fā)表于 11-23 10:58 ?5094次閱讀
    Firefly-RK<b class='flag-5'>3399</b> <b class='flag-5'>Buildroot</b> <b class='flag-5'>固件</b>介紹

    fireflyAIO-3399C主板編譯Buildroot固件介紹

    編譯 Buildroot 固件   本章介紹 Buildroot 固件編譯使用。
    的頭像 發(fā)表于 12-13 10:39 ?1909次閱讀

    fireflyAIO-3288C主板編譯Buildroot固件簡(jiǎn)介

    本章介紹 Buildroot 固件編譯使用。
    的頭像 發(fā)表于 12-16 14:55 ?1436次閱讀

    fireflyCORE-PX30-JD4編譯Buildroot 固件簡(jiǎn)介

    編譯 Buildroot 固件 本章介紹 Buildroot 固件編譯使用。
    的頭像 發(fā)表于 12-19 16:54 ?4300次閱讀

    fireflyAIO-3399J主板介紹

    AIO-3399J默認(rèn)出廠固件是支持LVDS+HDMI 1080P的雙屏顯示,HDMI分辨率最高只能到1080P。
    的頭像 發(fā)表于 12-24 10:03 ?1609次閱讀
    <b class='flag-5'>fireflyAIO-3399J</b>主板介紹

    fireflyAIO-3399J主板紅外遙控器簡(jiǎn)介

    紅外遙控器 產(chǎn)品參數(shù) 產(chǎn)品:12鍵紅外遙控器 版本:Firefly定制版 電源:兩節(jié)7號(hào)電池 適配:AIO-3399J 描述:支持AIO-3399J開(kāi)發(fā)板的遙控開(kāi)機(jī)功能
    的頭像 發(fā)表于 12-24 10:07 ?1503次閱讀

    fireflyAIO-3399J主板RTC使用簡(jiǎn)介

    AIO-3399J開(kāi)發(fā)板上有 一個(gè)集成于RK808上的RTC(Real Time Clock),主要功能有時(shí)鐘,日歷,鬧鐘,周期性中斷,雙通道32KHz時(shí)鐘輸出。
    的頭像 發(fā)表于 12-24 10:20 ?1898次閱讀
    <b class='flag-5'>fireflyAIO-3399J</b>主板RTC使用<b class='flag-5'>簡(jiǎn)介</b>

    fireflyAIO-3399J主板IR使用簡(jiǎn)介

    AIO-3399J 開(kāi)發(fā)板上使用紅外收發(fā)傳感器 IR (在 mic 接口和喇叭接口之間)實(shí)現(xiàn)遙控功能,在IR接口處接上紅外接收器。
    的頭像 發(fā)表于 12-24 10:32 ?2098次閱讀
    <b class='flag-5'>fireflyAIO-3399J</b>主板IR使用<b class='flag-5'>簡(jiǎn)介</b>

    fireflyAIO-3399J定制Android 固件介紹

    定制 Android 固件,有兩種方法: 改源碼,然后編譯生成固件。 在現(xiàn)有固件的基礎(chǔ)上進(jìn)行裁剪。
    的頭像 發(fā)表于 12-24 10:50 ?1098次閱讀

    fireflyAIO-3399J編譯Android8.1固件簡(jiǎn)介

    編譯 Android 對(duì)機(jī)器的配置要求較高: 64 位 CPU 16GB 物理內(nèi)存+交換內(nèi)存 30GB 空閑的磁盤(pán)空間用于構(gòu)建,源碼樹(shù)另外占用大約 25GB
    的頭像 發(fā)表于 12-24 10:57 ?1264次閱讀

    fireflyAIO-3399J編譯 Android 固件簡(jiǎn)介

    編譯 Android 固件 準(zhǔn)備工作 編譯 Android 對(duì)機(jī)器的配置要求較高: 64 位 CPU 16GB 物理內(nèi)存+交換內(nèi)存 30GB 空閑的磁盤(pán)空間用于構(gòu)建,源碼樹(shù)另外占用大約 25GB
    的頭像 發(fā)表于 12-24 11:03 ?1280次閱讀

    fireflyAIO-3288J簡(jiǎn)介編譯Buildroot固件簡(jiǎn)介

    編譯 Buildroot 固件 本章介紹 Buildroot 固件編譯使用。 準(zhǔn)備
    的頭像 發(fā)表于 12-26 14:43 ?2170次閱讀

    Core 3399KJ固件Buildroot(GPT)

    電子發(fā)燒友網(wǎng)站提供《Core 3399KJ固件Buildroot(GPT).txt》資料免費(fèi)下載
    發(fā)表于 09-14 10:11 ?0次下載
    Core <b class='flag-5'>3399</b>KJ<b class='flag-5'>固件</b><b class='flag-5'>Buildroot</b>(GPT)

    Core 3399J固件Buildroot(GPT)

    電子發(fā)燒友網(wǎng)站提供《Core 3399J固件Buildroot(GPT).txt》資料免費(fèi)下載
    發(fā)表于 09-14 09:35 ?0次下載
    Core <b class='flag-5'>3399J</b><b class='flag-5'>固件</b><b class='flag-5'>Buildroot</b>(GPT)