精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

微雪電子RK3308主板CCBuildroot開(kāi)發(fā)簡(jiǎn)介

firefly ? 來(lái)源:微雪電子 ? 作者:微雪電子 ? 2019-12-23 16:05 ? 次閱讀

Buildroot開(kāi)發(fā)

Buildroot開(kāi)發(fā)基礎(chǔ)

Buildroot版本

當(dāng)前Buildroot版本為Buildroot-2018.02

Buildroot 配置選擇及編譯

按照以下步驟配置完后,執(zhí)行 make 即可。

source buildroot/build/envsetup.sh You're building on Linux Lunch menu...pick a combo: 1. firefly_rk3308_release 2. firefly_rk3308_recovery 3. firefly_rk3308_pcba Which would you like? [1] 1 ===========================================

如選擇 firefly_rk3308_release,輸入對(duì)應(yīng)序號(hào) 1

make

完成編譯后執(zhí)行 SDK 根目錄下的 mkfirmware.sh 腳本生成固件

make 編譯執(zhí)行過(guò)程

執(zhí)行過(guò)程:

下載源碼;

配置、編譯、安裝交叉工具鏈;

配置、編譯、安裝選擇的包;

按選擇的格式生成根文件系統(tǒng);

Buildroot 輸出結(jié)果保存在 output 目錄,具體目錄由配置文件決定。 例如,編譯配置firefly_rk3308_release,輸出結(jié)果保存在buildroot/output/firefly_rk3308_release 目錄。

后續(xù)編譯可以在buildroot/output/firefly_rk3308_release 目錄或是工程根目錄下執(zhí)行(make menuconfig也可以在工程根目錄下執(zhí)行),這個(gè)目錄底下包括幾個(gè)子目錄:

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

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

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

模塊配置

整個(gè)Buildroot是由Makefile腳本和Kconfig配置文件構(gòu)成的。你可以和編譯Linux內(nèi)核一樣。

make menuconfig

配置界面如下:

在Target packages里面添加和裁剪一些工具,按需求定制系統(tǒng)功能,常用到的libdrm、ssh、vsftpd、wpa_supplicant、pppd等都可在里面配置。

執(zhí)行以下命令,將會(huì)保存當(dāng)前配置,并自動(dòng)修改 buildroot/configs/ 目錄下的默認(rèn)配置文件:

make savedefconfig

需要注意的是:

進(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 配置修改

配置命令:

make busybox-menuconfig

修改完成后,通過(guò)命令保存配置:

make busybox-update-config

交叉編譯工具

Buildroot 編譯完成后,會(huì)在指定的輸出目錄 host 目錄下生成交叉編譯工具,我們可以用來(lái)編譯目標(biāo)程序。默認(rèn)配置生成的交叉編譯工具目錄為:

cd buildroot/output/firefly_rk3308_release/host/usr/bin/

我們可以直接用交叉編譯工具編譯程序,例如:

./buildroot/output/firefly_rk3308_release/host/usr/bin/aarch64-rockchip-linux-gnu-gcc main.c -o test

浮點(diǎn)支持(以下配置打開(kāi) neon 支持),RK3308 支持 crc/crypto/fp/simd 這幾個(gè) feature,配置如下:

CFLAGS += -mcpu=cortex-a35+crc+crypto

編譯

在開(kāi)發(fā)過(guò)程中,針對(duì)output/build/某個(gè)模塊源碼進(jìn)行了修改,需要單獨(dú)重新編譯該模塊軟件包。

Buildroot在編譯某個(gè)包的時(shí)候,會(huì)將編譯的過(guò)程,通過(guò)一些標(biāo)志文件記錄下來(lái),保存在對(duì)應(yīng)的軟件包源碼的目錄里,這些標(biāo)志文件分別有:

.stamp_configured .stamp_downloaded .stamp_extracted .stamp_patched .stamp_staging_installed .stamp_target_installed

這些標(biāo)識(shí)文件主要控制這個(gè)軟件包的下載,解壓,打包,配置,編譯,安裝等。具體詳細(xì)說(shuō)明可參考:

docs/manual/rebuilding-packages.txt

也可以直接看mk文件,了解原理:

package/pkg-generic.mk

要想重新執(zhí)行哪一個(gè)步驟,相應(yīng)的就要?jiǎng)h掉其對(duì)應(yīng)的標(biāo)志文件。假如你想重新編譯某軟件包源碼,只需刪掉該目錄下的.stamp_built和.stamp_target_installed,然后再編譯整個(gè)Buildroot就可以了。

Buildroot有更快捷的實(shí)現(xiàn)方法。

執(zhí)行make show-targets顯示出本次配置所要編譯所有的目標(biāo),即packages。

執(zhí)行make 將構(gòu)建并安裝該軟件包及其依賴項(xiàng)。

同時(shí)我們還可以通過(guò)make -,對(duì)軟件包單獨(dú)調(diào)用構(gòu)建中的某一步驟,如下:

Package-specific: - Build and install and all its dependencies -source - Only download the source files for -extract - Extract sources -patch - Apply patches to -depends - Build 's dependencies -configure - Build up to the configure step -build - Build up to the build step -graph-depends - Generate a graph of 's dependencies -dirclean - Remove build directory -reconfigure - Restart the build from the configure step -rebuild - Restart the build from the build step

因此,如果我們想重新編譯xxx模塊軟件包,執(zhí)行make xxx-rebuild即可。

關(guān)于make的更多用法,可通過(guò)make help獲得。

新增本地源碼包

以上介紹都是在 Buildroot 已有源碼包的情況下,我們?nèi)ミx擇打開(kāi)編譯即可,如果 Buildroot沒(méi)有或者我們自己寫(xiě)的應(yīng)用該如何集成到 Buildroot ?

Buildroot 支持多種模塊編譯方式,包括 generic-package、cmake-package、autotools-package 等,我們以 generic-package 舉例說(shuō)明。

例子:buildroot/package/rockchip/fireflydemo

創(chuàng)建工程目錄

buildroot/package/rockchip/fireflydemo/

新建 Config.in

config BR2_PACKAGE_FIREFLYDEMO bool "Simple Firefly Demo"

新建 fireflydemo.mk,填入以下內(nèi)容,其中源碼目錄指向 external/fireflydemo/src/

################################################## ########### # ## fireflydemo # ################################################### ########### ifeq ($(BR2_PACKAGE_FIREFLYDEMO), y) FIREFLYDEMO_VERSION:=1.0.0 FIREFLYDEMO_SITE=$(TOPDIR)/../external/fireflydemo/src FIREFLYDEMO_SITE_METHOD=local define FIREFLYDEMO_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) CC=$(TARGET_CC) CXX=$(TARGET_CXX) -C $(@D) endef define FIREFLYDEMO_CLEAN_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean endef define FIREFLYDEMO_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install endef define FIREFLYDEMO_UNINSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) uninstall endef $(eval $(generic-package)) endif

創(chuàng)建源碼目錄

external/fireflydemo/src/

編寫(xiě)源碼 demo.c

#include #include int main(int argc, char *argv[]) { printf("hello world\n"); return 0; }

編寫(xiě)Makefile

DEPS = OBJ = demo.o CFLAGS = %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) demo: $(OBJ) $(CXX) -o $@ $^ $(CFLAGS) .PHONY: clean clean: rm -f *.o *~ demo .PHONY: install install: cp -f demo $(TARGET_DIR)/usr/bin/ .PHONY: uninstall uninstall: rm -f $(TARGET_DIR)/usr/bin/demo

在將新建包加入到 Buildroot 編譯系統(tǒng)內(nèi);

修改 package/rockchip/Config.in 最后加入下面這行:

source "package/rockchip/fireflydemo/Config.in"

配置選擇包,make menuconfig 然后選上 fireflydemo 包;

編譯: make fireflydemo

打包進(jìn)文件系統(tǒng):make

修改源碼后重新編譯包:make fireflydemo-rebuild

fs-overlay

默認(rèn)編譯出來(lái)根文件系統(tǒng),有些配置文件可能不能滿足客制化需求,這時(shí)候 fs-overlay 就能排上用場(chǎng),fs-overlay 目錄會(huì)在編譯的最后階段替換到文件系統(tǒng)目錄,打包進(jìn)根文件系統(tǒng)。 fs-overlay路徑由默認(rèn)配置文件指定:

BR2_ROOTFS_OVERLAY="board/rockchip/rk3308/fs-overlay"

Rootfs 切換為 ext2

Rootfs 可配置為可讀寫(xiě) ext2 文件系統(tǒng),方便系統(tǒng)調(diào)試使用。

修改 Kernel 中 bootargs 配置:

diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi index acd0dab..939db3c 100644 --- a/kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi +++ b/kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi @@ -11,7 +11,7 @@ compatible = "firefly,rk3308-firefly", "firefly,rk3308"; chosen { - bootargs = "earlycon=uart8250,mmio32,0xff0c0000 swiotlb=1 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=squashfs rootwait"; + bootargs = "earlycon=uart8250,mmio32,0xff0c0000 swiotlb=1 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext2 rootwait"; }; adc-keys {

修改 device/rockchip/rk3308/rockimg/對(duì)應(yīng)的 parameter 文件,確保 rootfs 分區(qū)大小足夠存放分區(qū)鏡像。

修改 device\rockchip\rk3308\BoardConfig.mk 中 rootfs 文件系統(tǒng)類型:

diff --git a/device/rockchip/rk3308/BoardConfig.mk b/device/rockchip/rk3308/BoardConfig.mk index abb9e96..97662b3 100755 --- a/device/rockchip/rk3308/BoardConfig.mk +++ b/device/rockchip/rk3308/BoardConfig.mk @@ -28,7 +28,7 @@ TARGET_PRODUCT=rk3308 # Set rootfs type, see buildroot. # ext4 squashfs -ROOTFS_TYPE=squashfs +ROOTFS_TYPE=ext2 # Set data partition type. # ext2 squashfs

rootfs 分區(qū) ext2 文件系統(tǒng)鏡像會(huì)自動(dòng)打包生成,也可以直接在以下路徑獲取:

buildroot/output/firefly_rk3308_release/images/rootfs.ext2

外部存儲(chǔ)設(shè)備

TF卡設(shè)備掛載目錄:/sdcard

U盤設(shè)備掛載目錄:/udisk

支持文件系統(tǒng)格式:ext2,vfat,ntfs等。

聲明:本文內(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

    文章

    11232

    瀏覽量

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

    關(guān)注

    7

    文章

    6085

    瀏覽量

    35225
  • Firefly
    +關(guān)注

    關(guān)注

    2

    文章

    538

    瀏覽量

    6992
  • RK3308
    +關(guān)注

    關(guān)注

    1

    文章

    39

    瀏覽量

    1114
  • Buildroot
    +關(guān)注

    關(guān)注

    1

    文章

    48

    瀏覽量

    1384
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RK3308的特點(diǎn)及應(yīng)用場(chǎng)景是什么?

    RK3308的特點(diǎn)及應(yīng)用場(chǎng)景是什么?
    發(fā)表于 03-09 08:04

    RK3308的主要資源是什么?

    RK3308的主要資源是什么?
    發(fā)表于 03-09 07:30

    RK3308如何設(shè)置pwm?

    RK3308如何設(shè)置pwm?
    發(fā)表于 03-09 06:08

    如何調(diào)試RK3308 ADC ?

    如何調(diào)試RK3308 ADC ?
    發(fā)表于 03-09 06:06

    如何解決Firefly RK3308 SDK下載的問(wèn)題?

    如何解決Firefly RK3308 SDK下載的問(wèn)題?
    發(fā)表于 03-09 06:49

    如何利用RK3308完成一個(gè)pwm的設(shè)置?

    如何利用RK3308完成一個(gè)pwm的設(shè)置?
    發(fā)表于 03-09 07:16

    RK3308藍(lán)牙怎么使用?

    RK3308藍(lán)牙怎么使用?
    發(fā)表于 03-09 06:57

    RK3308如何開(kāi)啟UAC功能?

    RK3308如何開(kāi)啟UAC功能?
    發(fā)表于 03-09 07:58

    有關(guān)RK3308芯片的基本知識(shí)匯總

    RK3308是什么?RK3308芯片的主要特點(diǎn)有哪些呢?RK3308芯片框架是由哪些部分組成的?
    發(fā)表于 03-09 07:20

    RK3308 編譯配置wifi的時(shí)候出現(xiàn).stamp_target_installed

    1.0.0 Installing to targetmkdir -p /home/kang/RK/RK3308/buildroot/output/rockchip_rk3308_release/target
    發(fā)表于 05-06 14:09

    一文詳解RK3308開(kāi)發(fā)板Qt開(kāi)發(fā)的流程

    1、RK3308開(kāi)發(fā)板Qt開(kāi)發(fā)的步驟介紹下載Firefly編譯的QT工具鏈Firefly 提取了 Buildroot 的交叉編譯工具鏈,用戶可以直接使用該工具鏈開(kāi)發(fā) Buildroot
    發(fā)表于 08-16 16:58

    淺析RK3308開(kāi)發(fā)板固件編譯的方法及其步驟

    \\sdk-1.5\\device\\rockchip\\rk3308文件:build.shBoardConfig.mk(可以對(duì)腳本中特定的變量進(jìn)行修改)模塊部分編譯為了方便開(kāi)發(fā)調(diào)試,全自動(dòng)化編譯腳本也
    發(fā)表于 09-29 15:56

    firefly RK3308開(kāi)發(fā)板ROC-RK3308-CC四核64位AIOT主板規(guī)格

    ROC-RK3308-CC 四核64位AIOT主板
    的頭像 發(fā)表于 11-03 11:08 ?4929次閱讀
    firefly <b class='flag-5'>RK3308</b><b class='flag-5'>開(kāi)發(fā)</b>板ROC-<b class='flag-5'>RK3308</b>-CC四核64位AIOT<b class='flag-5'>主板</b>規(guī)格

    電子RK3308主板CC啟動(dòng)模式介紹

    ROC-RK3308-CC 有著非常靈活的啟動(dòng)方式。一般情況下,除非硬件損壞,ROC-RK3308-CC 主板是不會(huì)變磚的。
    的頭像 發(fā)表于 12-23 15:47 ?2494次閱讀

    電子RK3308主板CC上手介紹

    確認(rèn)主板配件連接無(wú)誤后,通過(guò) USB Type-C 線給 ROC-RK3308-CC 供電。
    的頭像 發(fā)表于 12-23 15:50 ?2332次閱讀