最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

RK3568開發(fā)筆記(五):在虛擬機(jī)上使用SDK編譯制作uboot、kernel和ubuntu鏡像

2022-11-10 11:26 作者:紅胖子_AAA紅模仿  | 我要投稿

前言

??buildroot雖然靈活,但是基于實(shí)際情況,本身是側(cè)重驅(qū)動(dòng)和應(yīng)用定制開發(fā)的只定制一次文件系統(tǒng)投入有點(diǎn)多,還不如直接ubunt自己交叉編譯依賴庫,做一些庫的移植裁剪。
??于是本篇就使用ubuntu系統(tǒng)了,至于其他庫自己下源碼在宿主機(jī)交叉編譯號(hào)后,再拷貝過去或者直接在板子上編譯也行(只是會(huì)比較慢),但是意義不大,因?yàn)殚_發(fā)過程肯定是用宿主機(jī),不然核心板編譯太慢,在編譯上會(huì)花費(fèi)不少可以省去的時(shí)間。

為什么選擇ubuntu

??核心板方案上已經(jīng)提供適配好的基礎(chǔ)uboot和kernel,這個(gè)時(shí)候不同文件系統(tǒng) uboot和內(nèi)核時(shí)一樣的,做驅(qū)動(dòng)差別也不大,而且筆者做移植交叉編譯應(yīng)用和庫都較多,且不同平臺(tái)都做,直接裁剪移植,所以對(duì)于筆者來說,選擇ubuntu是更好的方式,缺什么下源碼三部曲交叉編譯,而使用buildroot構(gòu)建勢必有點(diǎn)繞遠(yuǎn)路,所以選擇了ubuntu,后續(xù)對(duì)ubuntu進(jìn)行裁剪,如去掉桌面,然后開發(fā)移植庫和應(yīng)用。

RK系列SDK簡要介紹

目錄結(jié)構(gòu)

??一個(gè)通用 Linux SDK (RV系類的sdk沒有對(duì)工程目錄包含有 buildroot、 debian、 app、 kernel、 u-boot、 device、 docs、 external等目錄。
??以下是RK系類的目錄分類:

  • app:存放上層應(yīng)用 app,主要是 qcamera/qfm/qplayer/settings 等一些應(yīng)用程序。

  • buildroot:基于 buildroot (2018.02-rc3) 開發(fā)的根文件系統(tǒng)。

  • debian:基于 debian 10 開發(fā)的根文件系統(tǒng),支持部分芯片。

  • device/rockchip:存放各芯片板級(jí)配置和 Parameter 文件,以及一些編譯與打包固件的腳本和預(yù)備文件。

  • docs:存放芯片模塊開發(fā)指導(dǎo)文檔、 平臺(tái)支持列表、 芯片平臺(tái)相關(guān)文檔、 Linux 開發(fā)指南等。

  • IMAGE:存放每次生成編譯時(shí)間、 XML、 補(bǔ)丁和固件目錄。

  • external:存放第三方相關(guān)倉庫,包括音頻、 視頻、 網(wǎng)絡(luò)、 recovery 等。

  • kernel:存放 kernel 4.4 或 4.19 開發(fā)的代碼。

  • prebuilts:存放交叉編譯工具鏈。

  • rkbin:存放 Rockchip 相關(guān)的 Binary 和工具。

  • rockdev:存放編譯輸出固件。

  • tools:存放 Linux 和 Windows 操作系統(tǒng)環(huán)境下常用工具。

  • u-boot:存放基于 v2017.09 版本進(jìn)行開發(fā)的 uboot 代碼。

  • yocto:基于 yocto gatesgarth 3.2 開發(fā)的根文件系統(tǒng),支持部分芯片
    ??相對(duì)于以上的,對(duì)比下RV1109&RV1126的SDK目錄,如下圖:
    ??

Ubuntu

??Ubuntu 是一個(gè)流行的 Linux 發(fā)行版, 是基于 Debian 的 unstable 版本加強(qiáng)而來, 以“最好的 Linux 桌面系統(tǒng)” 而聞名, 近些年 Ubuntu 也推出了 Ubuntu Enterprise Linux, 在企業(yè) Linux 應(yīng)用市場占有率也有較大提高。

  • 優(yōu)點(diǎn): 技術(shù)支持較好, 用戶界面友好, 硬件的兼容性好, 采用基于 Deb 的 ATP 包管理系統(tǒng)。

  • 缺點(diǎn): 技術(shù)支持和更新服務(wù)是需要付費(fèi)的, 服務(wù)器軟件生態(tài)系統(tǒng)的規(guī)模和活力方面稍弱 。
    ??(參考廠家手冊(cè))

源碼準(zhǔn)備

??從開發(fā)版提供的資料中拿到uboot,kernel,rootfs:

  • uboot:uboot是引導(dǎo)程序,芯片運(yùn)行跑起來,然后引入kernel

  • kernel:linux的內(nèi)核是加載后將會(huì)移植運(yùn)行在內(nèi)存中的核心

  • rootfs:這是文件系統(tǒng),文件系統(tǒng)是kernel運(yùn)行時(shí)需要加載一些驅(qū)動(dòng),庫,存儲(chǔ)等相關(guān)的其他一切相關(guān)的東西;
    ??編譯uboot,kernel,然后制作文件系統(tǒng):
    ??


  • ??(注意:buildroot也是要下載編譯的,因?yàn)榇虬黸buntu鏡像的時(shí)候需要使用到buildroot里面的腳本環(huán)境,所以此處也要先做buildroot系統(tǒng)再做ubuntu系統(tǒng),具體查看“入坑一”)
    ??(注意:一定要從購買開發(fā)板或者核心板的廠家獲取,已經(jīng)做好了ddr等外設(shè)的適配,包括開發(fā)板的外設(shè),這是我們后續(xù)學(xué)習(xí)移植的基礎(chǔ),千萬不要想著從零開始做,這個(gè)是不現(xiàn)實(shí)的,目前也沒有人和公司這么做)
    ??(注意:Ubuntu文件系統(tǒng),是真的文件系統(tǒng),而buildroot文件系統(tǒng)時(shí)buildroot工具構(gòu)建的文件系統(tǒng),Yocto也是;Debian和Ubuntu則是真文件系統(tǒng))

編譯ubuntu

步驟一:安裝buildroot依賴環(huán)境

??虛擬機(jī)安裝編譯buildroot環(huán)境,以下跟來回驗(yàn)證了:

sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop \git-core curl u-boot-tools mtd-utils android-tools-fsutils openjdk-8-jdk device-tree-compiler \gdisk m4 libz-dev git gnupg flex bison gperf libsdl1.2-dev libesd-java libwxgtk3.0-dev \squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool \libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev \lib32ncurses5-dev lib32readline-dev gcc-multilib libswitch-perl libssl-dev unzip \zip liblz4-tool repo git ssh make gcc libssl-dev liblz4-tool vim expect \g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \unzip device-tree-compiler python-pip libncurses5-dev rsync subversion \sed make binutils ?build-essential ?gcc ?g++ ?wget python libncurses5 bzr cvs git mercurial \patch gzip bzip2 perl tar cpio unzip rsync file bc wget qemu-user-static live-build -y \python3.8 python3.8-dev

??

步驟二:下載解壓uboot-kernel,ubuntu

??下載解壓,做這個(gè)開發(fā)確實(shí)很需要磁盤大小,而且傳輸也費(fèi)時(shí)間,加上用虛擬機(jī),專門加裝了1024GBSSD作為專門開發(fā)的。
??


??然后傳送到ubuntu上,使用samba服務(wù),參考博文《linux實(shí)用技巧:ubuntu18.04安裝samba服務(wù)器實(shí)現(xiàn)局域網(wǎng)文件共享》

步驟三:移動(dòng)解壓uboot-kernel

??

tar xvf uboot_kernel_20220512.tar.gz

??


??(疑問:只用了3分鐘,因?yàn)橹笆窍到y(tǒng)ssd,這次是專門配的1024ssd單獨(dú)盤么?)
??

步驟四:使用ubuntu系統(tǒng)

??注意:rk3568支撐多個(gè)系統(tǒng),按照SDK文檔指定系統(tǒng)是相似的操作。
??我們使用ubuntu文件系統(tǒng),將ubuntu_20220511.tar.gz直接解壓到rk356x_linux的文件夾:

cd ~/work/sdktar xvf buildroot_20220510.tar.gz -Ca rk356x_linux/

??


??很快,如下圖:
??

步驟五:查看編譯命令單獨(dú)編譯uboot,kernel和ubuntu

???


??編譯uboot:
??


??編譯kernel:
??


??編譯文件系統(tǒng)ubuntu,這里要先選擇廠商的配置:

./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk ./build.sh ubuntu

???

??然后錯(cuò)誤:
??

??具體查看“入坑一”,這里可以看出方案上先基于buildroot做的,然后再buildroot下去做其他的打包。
??編譯好buildroot后,繼續(xù)使用ubuntu

./build.sh ubuntu

??


??


??至此,ubuntu的固件編譯完成,但是我們沒有適配屏幕的。

步驟六:適配屏幕

??屏幕,筆者使用的是廠家提供的lvds10.1寸屏幕,已經(jīng)做好了驅(qū)動(dòng)在sdk中,但是需要配置設(shè)備樹:

cd /home/topeet/Linux/rk356x_linux/ gedit kernel/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi

??

??知識(shí)點(diǎn):適配屏幕是修改了內(nèi)核的設(shè)備樹,而沒有修改文件系統(tǒng)。
??

步驟七:編譯整體

??由于uboot,kernel是沒有爭議的,但是文件系統(tǒng)是由好幾個(gè)參數(shù),所以要根據(jù)開發(fā)文檔來,有個(gè)環(huán)境變量RK_ROOTFS_SYSTEM,他是什么則是什么系統(tǒng),由此可見,他實(shí)際上是build編譯文件系統(tǒng)的參數(shù):
??編譯:

export RK_ROOTFS_SYSTEM=ubuntu ./build.sh all

??


??


??5分鐘編完。

步驟八:打包mkfirmware.sh

./mkfirmware.sh

??


??

入坑

入坑一:編譯ubuntu鏡像打包錯(cuò)誤

問題

??找不到buildroot下的一個(gè)腳本。
??

原因

??

??要先編譯buildroot

解決

??先走buildroot編譯流程,再走編譯ubuntu流程
??


??具體的編譯buildroot問題,需要看《RK3568開發(fā)筆記(四):在虛擬機(jī)上使用SDK編譯制作uboot、kernel和buildroot鏡像》。


RK3568開發(fā)筆記(五):在虛擬機(jī)上使用SDK編譯制作uboot、kernel和ubuntu鏡像的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
江都市| 鲁山县| 东莞市| 城步| 龙山县| 清苑县| 曲水县| 大悟县| 广丰县| 乌兰浩特市| 鱼台县| 石首市| 阜南县| 保定市| 西昌市| 乐陵市| 江孜县| 南乐县| 漠河县| 乌鲁木齐市| 锡林浩特市| 东台市| 咸阳市| 仙桃市| 平顺县| 宜宾市| 安庆市| 榆林市| 南安市| 临夏市| 望江县| 察隅县| 嘉兴市| 万源市| 四平市| 邛崃市| 黔西| 拜泉县| 商水县| 罗江县| 鸡泽县|