RK3568技術筆記九 編譯Linux詳細介紹

在編譯前需要按照前面的方法始化編譯環境,否則會導致編譯失敗(若配置過則無需重復配置)。

全自動編譯包含所有鏡像編譯,包括:uboot編譯、Kernel編譯、Recovey編譯、文件系統編譯、編譯完成鏡像的更新與打包。

?????? 按照前面的方法初始化編譯環境后,還需要設置RK_ROOTFS_SYSTEM環境變量,通過設置此變量,可以決定打包哪個文件系統:

打包buildroot文件系統,則設置RK_ROOTFS_SYSTEM為buildroot,如下所示:

$ export RK_ROOTFS_SYSTEM=buildroot

打包Debian文件系統,則設置RK_ROOTFS_SYSTEM為debian,如下所示:

$ export RK_ROOTFS_SYSTEM=debian

打包Ubuntu文件系統,則設置RK_ROOTFS_SYSTEM為ubuntu,如下所示:

$ export RK_ROOTFS_SYSTEM=ubuntu

查看當前終端設置的RK_ROOTFS_SYSTEM環境變量的值,執行命令:

$ echo $RK_ROOTFS_SYSTEM

下面以編譯buildroot文件系統為例,使用全自動編譯方法進行編譯:

配置RK_ROOTFS_SYSTEM環境變量為buildroot,執行命令:

$ export RK_ROOTFS_SYSTEM=buildroot

查看RK_ROOTFS_SYSTEM環境變量是否配置正確,執行命令:

$ echo $RK_ROOTFS_SYSTEM

如下圖所示:

可以看到輸出為buildroot,說明配置正確。

執行全自動編譯腳本,命令如下:

$ ./build.sh

如下圖所示:

編譯完成,此時終端最下行顯示(END),按下“q”鍵退出,如下圖所示:

最終,編譯完成,如下圖所示:

?????? 上圖中提示“確認板級的電源域配置”,這里已經配置好,請不要改動,改動錯誤會導致CPU芯片燒壞。

?????? 編譯完成后,所有燒寫所需要的鏡像將都會鏈接到rockdev目錄,可以到rockdev目錄下查看,如下圖所示:

如需拷貝鏡像到Windows參考第4.7節《鏡像拷貝》

如需燒寫自己編譯的鏡像請參考第六章《固件燒寫》

單獨編譯

?????? 說明:單獨編譯涉及鏡像較多,較為復雜,若不是十分必須建議使用全自動編譯,簡單、方便。

Uboot編譯

在編譯前需要按照前面的方法初始化編譯環境,否則會導致編譯失敗(若配置過則無需重復配置)。

進入源碼目錄(目錄需按個人實際路徑修改),執行命令:

$ cd ~/dianyu/sail_rk356x_linux_release_v1.3.0_20220620/

如下圖所示:

編譯uboot,執行命令:

$ ./build.sh uboot

如下圖所示:

編譯完成如下圖所示:

編譯后在 u-boot 目錄生成兩個鏡像文件,分別是:

rk356x_spl_loader_v1.13.112.bin(這個文件就是MiniLoaderAll.bin,只是名字不同)

uboot.img

如下圖所示:

Kernel編譯

在編譯內核前需要按照前面的方法初始化編譯環境,否則會導致編譯失敗(若配置過則無需重復配置)。

進入源碼目錄(目錄需按個人實際路徑修改),編譯kernel,執行命令:

$ ./build.sh kernel

如下圖所示:

編譯完成如下圖所示:

紅底字為提示電源域配置,源碼中已經配置好,務必不要改動,否則會導致芯片燒壞。

編譯后在 kernel 目錄生成內核鏡像文件:boot.img,如下圖所示:

Recovery編譯

在編譯前需要按照前面的方法初始化編譯環境,否則會導致編譯失敗(若配置過則無需重復配置)。

進入源碼目錄(目錄需按個人實際路徑修改),編譯Recovery,執行命令:

$ ./build.sh recovery

如下圖所示:

?????? 編譯完成后在 buildroot/output/sail_rk3568_recovery/images 目錄生成recovery.img鏡像,如下圖所示:

文件系統編譯

在編譯前需要按照前面介紹的方法初始化編譯環境,否則會導致編譯失敗(若配置過則無需重復配置)。

注:在編譯完成后進行固件打包的時候,會打包最后一次編譯的文件系統,所以這里建議僅編譯需要使用的文件系統,不需要的則不編譯,否則在最后打包固件時可能會打包成不需要的文件系統。

Buildroot文件系統編譯

進入源碼目錄(目錄需按個人實際路徑修改),編譯Buildroot,執行命令:

$ ./build.sh buildroot

如下圖所示:

編譯后在 buildroot/output/sail_rk3568/images 目錄生成rootfs.ext4鏡像。如下圖所示:

Debian文件系統編譯

按下述方法編譯的Debian系統,用戶名是:linaro?????? 密碼:linaro

進入源碼目錄(目錄需按個人實際路徑修改),安裝依賴包,執行如下所示命令:

注意,一定要在開發板源碼目錄下執行下述命令,否則會安裝失敗

$ sudo apt-get install binfmt-support qemu-user-static live-build

$ sudo dpkg -i debian/ubuntu-build-service/packages/*

$ sudo apt-get install -fy

安裝過程如下圖所示:

安裝完成后,編譯Debian,執行命令:

$ ./build.sh debian

如下圖所示:

編譯過程中會提示輸入密碼,直接輸入即可(密碼默認是隱式的)。

編譯后在 debian 目錄生成 linaro-rootfs.img 鏡像。如下圖所示:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/34957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/34957.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/34957.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

閱讀筆記——《Large Language Model guided Protocol Fuzzing》

【參考文獻】Meng R, Mirchev M, Bhme M, et al. Large language model guided protocol fuzzing[C]//Proceedings of the 31st Annual Network and Distributed System Security Symposium (NDSS). 2024.(CCF A類會議)【注】本文僅為作者個人學習筆記&a…

【附精彩文章合輯】當談到程序的“通用性”與“過度設計”的困境時,我們可以通過一些具體的例子來更直觀地闡述這些解決方案

當談到程序的“通用性”與“過度設計”的困境時,我們可以通過一些具體的例子來更直觀地闡述這些解決方案。以下是一些示例: 一、明確需求與目標 例子1:在線購物平臺 需求分析:平臺需要支持用戶注冊、登錄、瀏覽商品、下單購買、…

2024ciscn 華東北awdp pwn部分wp

pwn1 break 很簡單,棧可執行。 先格式化字符串泄露出棧地址和canary,然后稍稍布置一下打orw就行 沙盒和沒有一樣 from pwn import *context(archamd64, oslinux)if __name__ __main__:# io remote(192.47.1.39, 80)io remote(192.168.142.137, 123…

初階 《操作符詳解》 10. 逗號表達式

10. 逗號表達式 exp1, exp2, exp3, …expN 注&#xff1a; 1.逗號表達式&#xff0c;就是用逗號隔開的多個表達式 2.逗號表達式&#xff0c;從左向右依次執行&#xff0c;整個表達式的結果是最后一個表達式的結果 代碼1 #include <stdio.h> int main() {int a 1;int b…

【Qt6.3 基礎教程 19】 設計直觀用戶界面(UI):Qt應用界面設計原則

文章目錄 前言理解用戶需求界面的簡潔性一致性反饋利用布局管理美化你的應用結論 前言 用戶界面(UI)設計對于任何軟件項目的成功至關重要&#xff0c;因為它是用戶與您的應用之間交流的橋梁。在Qt環境中&#xff0c;擁有一套清晰和直觀的UI設計原則&#xff0c;將有助于您創建…

解決ubuntu18.04 安裝vscode 報依賴庫錯誤,以及打不開終端的問題。

其實很簡單&#xff0c;ubuntu18.04太老了&#xff0c;官網最新版本的vscode對ubuntu18.04會有些依賴庫的問題。 一頓查資料后發現2023.11月的1.85版本正常使用&#xff0c;于是完美解決。 下載鏈接 Visual Studio Code November 2023 點擊這里下載。 下載完成&#xff0c;…

golang 獲取字符串切割之后的最后一個字符串

有些場景需要獲取字符串按某個字符切割之后&#xff0c;獲取最后&#xff0c;有個比較好的實踐分享 strings.LastIndex 如果沒有匹配到&#xff0c;則返回-1 package mainimport ("fmt""strings" )func main() {ss : []string{"", ":&quo…

數據結構需要每個都具體實現嗎?

在開始前剛好我有一些資料&#xff0c;是我根據網友給的問題精心整理了一份「數據結構的資料從專業入門到高級教程」&#xff0c; 點個關注在評論區回復“666”之后私信回復“666”&#xff0c;全部無償共享給大家&#xff01;&#xff01;&#xff01;用c的stl能刷算法題是不…

【INTEL(ALTERA)】運行配置找不到導入的自定義 makefile 項目

目錄 說明 解決方法 說明 在使用 Import Custom Makefile 用于Nios II軟件構建工具項目 選項導入項目后&#xff0c;Nios II SBT 無法將導入的自定義 makefile 識別為Nios II C/C 應用項目。因此&#xff0c;項目名稱不出現在運行配置中的列表中。 解決方法 在 "運行配置 …

clean code-代碼整潔之道 閱讀筆記(第十三章)

第十三章 并發編程 "對象是過程的抽象。線程是調度的抽象。" --James O Coplien 13.1 為什么要并發 并發是一種解耦策略。它幫助我們把做什么&#xff08;目的&#xff09;和何時&#xff08;時機&#xff09;做分解開。在單線 程應用中&#xff0c;目的與時機緊密耦…

【OpenCV 圖像處理 Python版】OpenCV 簡介及安裝

文章目錄 1.OpenCV 介紹1.1 OpenCV 的特點1.2 OpenCV 的主要模塊1.3 OpenCV 的應用場景 2.OpenCV-Python 庫3.OpenCV 安裝 1.OpenCV 介紹 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和機器學習軟件庫。它由英特爾公司于1999年…

API的優勢及應用場景(淘寶API測試的詳細步驟)

一、API的優勢 API的出現為應用程序間的通信提供了一種新的方式&#xff0c;它有以下優勢&#xff1a; 1、降低開發難度 開發者可以通過API訪問其他應用程序的數據和功能&#xff0c;避免了重復開發&#xff0c;降低了開發難度。 2、提高開發效率 API提供了一種標準化的通…

Transformer 模型全解析:NLP領域的變革者與任務精粹

標題&#xff1a;Transformer 模型全解析&#xff1a;NLP領域的變革者與任務精粹 引言 Transformer 模型自問世以來&#xff0c;已成為自然語言處理&#xff08;NLP&#xff09;領域的一大突破&#xff0c;其基于自注意力機制的架構為各種語言任務帶來了革命性的進展。本文將…

使用AES,前端加密,后端解密,spring工具類,直接c就完事了

學習python的時候&#xff0c;看到很多會對參數進行加密&#xff0c;于是好奇心驅使下&#xff0c;讓我去了解了下AES加密如何在java中實現。 首先 npm install crypto-js 然后在你的方法中&#xff0c;給你們前端源碼看看&#xff0c;因為我用的ruoyi框架做的實驗&#xff…

Java中的消息隊列與事件總線設計

Java中的消息隊列與事件總線設計 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討Java中的消息隊列與事件總線設計&#xff0c;這兩者在現代分布式…

構建一個檢索增強生成(RAG)應用程序

:::tips 此文檔是LangChain官方教程的實踐總結&#xff1a;https://python.langchain.com/v0.2/docs/tutorials/rag/實踐前你需要準備&#xff1a;OPENAI_API_KEY Generator&#xff1a;根據檢索到的信息和用戶的查詢生成自然語言的回答。LANGCHAIN_API_KEY 密切監控和評估您的…

【自然語言處理系列】掌握NLP基礎:去停用詞、詞性標注與命名實體識別實戰教程

摘要&#xff1a;本系列教程專注于自然語言處理&#xff08;NLP&#xff09;中的基礎元素&#xff0c;包括去停用詞、詞性標注以及命名實體識別。這些步驟是文本預處理和分析不可或缺的組成部分。我們將通過具體的實例和技術演示&#xff0c;講解如何使用Python及其相關庫&…

網絡安全之Windows提權(上篇)(高級進階)

目錄 一&#xff0c;什么是提權&#xff1f; 二&#xff0c;提權的前提 三&#xff0c;如何提權&#xff1f; 1&#xff0c;第一步連接服務器 2&#xff0c;提升權限至iuser?編輯 3&#xff0c;利用補丁漏洞提權至最高級 四&#xff0c;總結 一&#xff0c;什么是提權&am…

大數據集群數據傳輸

簡單的服務器間的通信示例 netcat&#xff0c;簡寫為 nc&#xff0c;是 unix 系統下一個強大的命令行網絡通信工具&#xff0c;用于在兩臺主機之間建立 TCP 或者 UDP 連接&#xff0c;并提供豐富的命令進行數據通信。nc 在網絡參考模型屬于應用層。使用 nc 可以做很多事情&…

docker-compose 之 達夢數據庫(dm8-v202406版)

1、達夢官方沒有提供鏡像直接 pull 的方式&#xff0c;提供的是鏡像的 tar 包&#xff0c;所以需要先去官網下載tar包。 2、然后使用如下 docker load 命令導入鏡像到服務上&#xff1a; docker load -i dm8_20240422_x86_rh6_64_rq_std_8.1.3.100_pack2.tar導入完成后&#…