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

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

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

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

【風(fēng)火輪YY3568開發(fā)板免費體驗】第三章:在 buildroot 框架中添加本地的 hello_world 軟件包以及給包打patch

Red Linux ? 來源: Red Linux ? 作者: Red Linux ? 2023-08-12 12:56 ? 次閱讀

第三章:在 buildroot 框架中添加本地的 hello_world 軟件包以及給包打patch

在第二章介紹了在buildroot框架下快樂編譯 ffmpeg之后,本章就記錄下如何在buildroot 的編譯框架中添加一個新的軟件包實現(xiàn)開發(fā)的一致性,這樣做的好處是保持整個構(gòu)建過程的統(tǒng)一,要不然可能還需要自己構(gòu)建自己工程的編譯環(huán)境,兼容buildroot編譯框架的好處會隨著開發(fā)軟件包的復(fù)雜度提高逐漸顯示出來這種做法的優(yōu)越性。所以,本章就演示下如何根據(jù) The Buildroot User Manual.pdf 的指導(dǎo)一步步完成 hello_world 工程到 builderoot package 的集成工作。

  • 將本地的 hello_world 工程集成到 buildroot package 的編譯框架
  • 如何集成 patch 的合并工作,在構(gòu)建 hello_world 的自動打上這個 patch

主要參考資料:[The Buildroot User Manual.pdf](The Buildroot User Manual.pdf)


1. hello_world 到 buildroot 的集成

首先看一下 hello_world 工程本身的結(jié)構(gòu)和內(nèi)容:
hello_src.png
hello_mk.png
下面就是準備將 hello_world 集成到 buildroot 中作為一個 package 進行構(gòu)建,這部分首先看下一 buildroot 的 manual 是怎么描述的(The Buildroot User Manual.pdf中有詳細的描述):build_pac.png

這里有關(guān)鍵的三類共計四個文件:

  1. config 文件(配置的文件)
    1. Config.in 文件,交叉編譯的工程,本次使用交叉編譯 hello_wolrd 工程,最后的可執(zhí)行程序運行在 YY3568 上,所以使用這個文件
    2. Config.in.host 文件,編譯 host 的工程
  2. mk 文件(構(gòu)建的文件 xxx.mk 文件,這個因為我對傳統(tǒng)的 makefile 比較熟悉,所以本次使用的是就是 Makefiles for generic packages
  3. hash 文件(下載的軟件包的 hash 校驗文件,xxx.hash文件,因為本次構(gòu)建是直接使用的 local 的源碼文件,所以不存在文件包的校驗,所以這個文件暫時沒有)

根據(jù)上面的介紹,所以首先在 buildroot 的 package 目錄中創(chuàng)建 hello_world 目錄,然后創(chuàng)建 Config.in 和 hello_world.mk 文件,這兩個文件的內(nèi)容分別如下:

Config.in 文件,本次為了演示,僅僅使用了開啟關(guān)閉編譯 hello_world 的選項:

config BR2_PACKAGE_HELLO_WORLD
	bool "hello_world"
	help
	  This is a comment that explains how to add new package to buildroot

hello_world.mk 文件:

################################################################################
#
# hello_world
#
################################################################################
HELLO_WORLD_VERSION = 0.9
HELLO_WORLD_SOURCE = hello_world
HELLO_WORLD_SITE = /home/red/Public/buildroot_sample/hello_world
HELLO_WORLD_LICENSE = GPL-3.0+
HELLO_WORLD_LICENSE_FILES = COPYING
HELLO_WORLD_INSTALL_STAGING = YES
HELLO_WORLD_SITE_METHOD = local
define HELLO_WORLD_BUILD_CMDS
$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all
endef

define HELLO_WORLD_INSTALL_STAGING_CMDS
$(INSTALL) -D -m 0755 $(@D)/hello_world $(STAGING_DIR)/usr/bin
endef

define HELLO_WORLD_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/hello_world $(STAGING_DIR)/usr/bin
endef

$(eval $(generic-package))

在 hello_world.mk 文件,關(guān)鍵的地方有 HELLO_WORLD_SITE_METHOD 需要設(shè)置為 local,這樣才會使用本地目錄的原始文件;HELLO_WORLD_SITE 需要設(shè)置為本地 hello_world 工程源碼的目錄,而非 hello_world 工程(文件夾)所在的目錄。

最后要修改的就是讓 buildroot 的 Config.in 引用的 hello_world 的 Config.in,即相關(guān)的 diff 文件:

diff --git a/buildroot/package/Config.in b/buildroot/package/Config.in
index d18c688..d06ec07 100644
--- a/buildroot/package/Config.in
+++ b/buildroot/package/Config.in
@@ -10,6 +10,7 @@ menu "Target packages"
 	source "package/skeleton-init-sysv/Config.in"
 
 menu "Audio and video applications"
+	source "package/hello_world/Config.in"
 	source "package/alsa-utils/Config.in"
 	source "package/alsa-plugins/Config.in"
 	source "package/atest/Config.in"

因為我會開發(fā)一個視頻處理有關(guān)的應(yīng)用,所以引用 hello_world 工程我就放在了 Audio and video applications。
這樣啟動 buildroot menuconfig 配置找到 hello_world 的配置選項,選中進行構(gòu)建。
hello_kc.png
hello_build.png

將編譯出來的 hello_world 通過 scp 發(fā)送到 YY3568,打印如下:
hello_ok.png

2. 給hello_world創(chuàng)建一個 patch,并依靠 buildroot 在構(gòu)建的時候合并 patch 并編譯

有了第一部分的基礎(chǔ)后,我們進階一下,給 hello_world 打一個補丁,讓 buildroot 在構(gòu)建這個工程的時候先打上補丁在進行編譯。

這里我們需要參看這部分內(nèi)容:
build_patch.png

首先我們創(chuàng)建這個補丁,補丁文件命名為0001-say-sth-else.patch:

diff --git a/main.c b/main.c
index dd0e127..fcbbe7e 100644
--- a/main.c
+++ b/main.c
@@ -2,6 +2,6 @@
 
 int main(int argc, char *argv[])
 {
-	printf("red say hello world to YY3568n");
+	printf("red say sth else to YY3568 just for demonstate how to patch package in buildrootn");
 	return 0;
 }

放在 buildroot/package/hello_world 目錄:
hello_patch.png

接著需要將原始的 hello_world 工程打包為一個壓縮包,比如 hello_world.tar。然后修改 hello_world.mk 文件如下:

--- /tmp/tar_o.txt	2023-08-12 12:41:28.772370902 +0800
+++ /tmp/tar.txt	2023-08-12 12:41:53.564330270 +0800
@@ -4,12 +4,12 @@
 #
 ################################################################################
 HELLO_WORLD_VERSION = 0.9
-HELLO_WORLD_SOURCE = hello_world
-HELLO_WORLD_SITE = /home/red/Public/buildroot_sample/hello_world
+HELLO_WORLD_SOURCE = hello_world.tar
+HELLO_WORLD_SITE = /home/red/Public/buildroot_sample
 HELLO_WORLD_LICENSE = GPL-3.0+
 HELLO_WORLD_LICENSE_FILES = COPYING
 HELLO_WORLD_INSTALL_STAGING = YES
-HELLO_WORLD_SITE_METHOD = local
+HELLO_WORLD_SITE_METHOD = file
 define HELLO_WORLD_BUILD_CMDS
 $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all
 endef

然后刪除 buildroot/output/rockchip_rk3568/build/hello_world-0.9 目錄,重新構(gòu)建:
hello_patch_ok.png

運行新編譯出來的hello_world 到 YY3568,可以看到打印提示就變了:
hello_patch_pr.png

切記不能用之前的 HELLO_WORLD_SITE_METHOD = local 這種方法實際我測試發(fā)現(xiàn)不會有打 patch 這個動作。

至此,就記錄了如何為 buildroot 添加一個本地的軟件包以及打 patch 的操作,將遠端的軟件包納入 buildroot package 進行構(gòu)建的方法是類似的,這里暫時就不記錄了。這里提示下,如果 patch 是在遠端的,該怎么辦呢?需要就對應(yīng)的 patch 文件添加到變量 _PATCH,這部分 The Buildroot User Manual.pdf 也有介紹。

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

    關(guān)注

    87

    文章

    11232

    瀏覽量

    208949
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4959

    瀏覽量

    97214
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    654

    瀏覽量

    32813
  • RK3568
    +關(guān)注

    關(guān)注

    4

    文章

    501

    瀏覽量

    4946
  • Buildroot
    +關(guān)注

    關(guān)注

    1

    文章

    48

    瀏覽量

    1384
收藏 人收藏

    評論

    相關(guān)推薦

    使用YY3568開發(fā)板部署AI能力

    YY3568開發(fā)板是 「風(fēng)火輪科技」 基于Rockchip RK3568 芯片平臺設(shè)計的開發(fā)板,四核 64Cortex-A55 核,主頻最高
    的頭像 發(fā)表于 11-28 10:59 ?1981次閱讀
    使用<b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b>部署AI能力

    YY3568適配OpenHarmony

    YY3568開發(fā)板簡介 YY3568開發(fā)板 YY3568開發(fā)板是 「
    的頭像 發(fā)表于 04-07 15:58 ?2369次閱讀

    【新品體驗】風(fēng)火輪YY3568開發(fā)板免費體驗

    YY3568主板基于 Rockchip RK3568 芯片平臺,四核 64位 Cortex-A55 核,主頻最高達 2GHz,集成雙核心架構(gòu)GPU以及高效能NPU,芯片性能優(yōu)異。開發(fā)板
    發(fā)表于 06-25 14:35

    風(fēng)火輪YY3568開發(fā)板免費體驗】開箱篇 -----最好的RK3568開發(fā)板賞析

    風(fēng)火輪YY3568開發(fā)板采用RK3568芯片設(shè)計,RK3568明星芯片是一款瑞芯微電子定位中高端的通用型SoC。該芯片采用了先進的22nm工
    發(fā)表于 08-07 10:00

    風(fēng)火輪YY3568開發(fā)板免費體驗】01.開箱、燒寫系統(tǒng)

    吧。 首先就是我最喜歡的開發(fā)板啦,YY3568,板載2GB RAM和16GB EMMC,真的太棒了,里面核心已經(jīng)底板上面安裝的了,還有WIFI模塊和天線。 接下來就是送的7寸電容式
    發(fā)表于 08-10 19:35

    風(fēng)火輪YY3568開發(fā)板免費體驗】第二YY3568 ffmpeg 編譯以及 nanogui 移植

    本章主要記錄如何移植 nanogui 以及 buildroot 下快樂編譯 ffmpeg: nanogui 是一個輕量級的圖形開發(fā)庫,底層使用 wayland
    發(fā)表于 09-11 15:29

    風(fēng)火輪YY3568開發(fā)板免費體驗】第三章 buildroot 框架添加本地hello_world 軟件包以及包打patch

    第三章 buildroot 框架添加本地
    發(fā)表于 09-11 15:35

    風(fēng)火輪YY3568開發(fā)板免費體驗】第四 nanogui 添加 VideoView 控件,支持 rtsp 視頻流獲取并顯示

    就可以定位到出錯的代碼位置。 3. solus 上編譯 buildroot 家里的一臺筆記本,我安裝的是 solus,軟件包可能沒有 fedora 那么齊全,所以編譯過程碰到了一
    發(fā)表于 09-11 15:41

    風(fēng)火輪YY3568開發(fā)板免費體驗】第五 Solus 上運行 npu 例程并搭建 nfs 環(huán)境實現(xiàn)在 YY3568 上實際運行 npu 例程

    經(jīng)過前面幾章的鋪墊,接下來的章節(jié)就開始進入到 NPU 相關(guān)的開發(fā)測試了。本章呢,記錄下我分別在 Solus 上對 npu 相關(guān)例程的仿真以及實際 YY3568 上進行的 npu 例程
    發(fā)表于 09-11 15:44

    風(fēng)火輪YY3568開發(fā)板免費體驗】+ YY3568安裝運行Unity的自制游戲教程范例

    ,并成功自己的開發(fā)筆記本,以及手機(Android-12)上運行,因此想測試一下能否YY3568的Android-11系統(tǒng)上運行。 根
    發(fā)表于 11-14 11:44

    風(fēng)火輪科技YY3568開發(fā)板新品上市

    ? 風(fēng)火輪近來又推出一款新的嵌入式主板YY3568 ,它是一款基于瑞芯微RK3568 4核處理器的ARM主板,性價比極高;現(xiàn)在瑞芯微的旗艦款是rk3588主打性能,這個rk3568是主
    的頭像 發(fā)表于 04-27 14:50 ?1417次閱讀
    <b class='flag-5'>風(fēng)火輪</b>科技<b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b>新品上市

    風(fēng)火輪科技又發(fā)新品啦--YY3568開發(fā)板

    風(fēng)火輪近來又推出一款新的嵌入式主板YY3568,它是一款基于瑞芯微RK3568 4核處理器的ARM主板,性價比極高;現(xiàn)在瑞芯微的旗艦款是rk3588主打性能,這個rk3568是主打性價
    的頭像 發(fā)表于 05-05 16:41 ?875次閱讀
    <b class='flag-5'>風(fēng)火輪</b>科技又發(fā)新品啦--<b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b>

    RK3568 MIPI CSI攝像頭GC8034適配工作流程

    首先介紹一下硬件。主板為風(fēng)火輪科技的YY3568開發(fā)板,主控RK3568。此開發(fā)板的相關(guān)介紹可以參考
    的頭像 發(fā)表于 07-04 09:27 ?5469次閱讀
    RK<b class='flag-5'>3568</b> MIPI CSI攝像頭GC8034適配工作流程

    風(fēng)火輪科技第三開發(fā)板youyeetoo R1簡介

    2023年的尾聲之際,風(fēng)火輪科技如約而至,再次為我們帶來驚喜。繼前兩款備受贊譽的開發(fā)板之后,他們再次推出了全新的第三開發(fā)板--youye
    的頭像 發(fā)表于 01-02 14:08 ?1345次閱讀
    <b class='flag-5'>風(fēng)火輪</b>科技<b class='flag-5'>第三</b>款<b class='flag-5'>開發(fā)板</b>youyeetoo R1簡介

    迅為電子RK3588S開發(fā)板第三章Buildroot系統(tǒng)功能測試

    迅為電子RK3588S開發(fā)板第三章Buildroot系統(tǒng)功能測試
    的頭像 發(fā)表于 09-02 14:45 ?691次閱讀
    迅為電子RK3588S<b class='flag-5'>開發(fā)板</b><b class='flag-5'>第三章</b><b class='flag-5'>Buildroot</b>系統(tǒng)功能測試