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

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

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

Purple Pi OH又開外掛!帶你搭建編譯環(huán)境及編譯Android 11固件

觸覺智能 ? 2024-05-22 08:32 ? 次閱讀

01介紹

今天的文章主題是分享與探討關(guān)于Purple Pi OH開發(fā)板Android開發(fā)之搭建編譯環(huán)境及編譯Android固件。

如果你是剛開始接觸嵌入式Linux開發(fā),也許你會(huì)非常疑惑?

為什么同樣是ARM架構(gòu)的芯片,我以前開發(fā)STM32的時(shí)候只需要在Windows里的MDK5點(diǎn)一點(diǎn)就可以了?,F(xiàn)在我想要使用Purple Pi OH開發(fā)板進(jìn)行RK3566芯片開發(fā),反而要使用虛擬機(jī),要使用Linux黑乎乎的終端敲打一長串的命令,要關(guān)注內(nèi)核版本、編譯工具鏈的安裝和配置、開發(fā)環(huán)境是否支持編譯等等!對(duì)比習(xí)慣了Windows開發(fā)的人員一時(shí)之間也是無法快速上手的。

因此在今天的文章中小智會(huì)跟你說為什么同樣是嵌入式開發(fā),我們需要學(xué)習(xí)如此多的知識(shí)和做這么多的準(zhǔn)備。

在Linux虛擬機(jī)環(huán)境中進(jìn)行RK3566開發(fā)有很多原因,這里我只例舉比較重要的幾個(gè)原因:

PC虛擬機(jī)通常具有比嵌入式硬件更強(qiáng)的計(jì)算和內(nèi)存資源,這意味著在虛擬機(jī)上編譯內(nèi)核和程序可以大幅縮短編譯時(shí)間。

使用虛擬機(jī)可以確保開發(fā)環(huán)境的一致性,有助于減少因環(huán)境差異導(dǎo)致的問題,尤其是在團(tuán)隊(duì)成員之間同步工作環(huán)境時(shí)。

通過虛擬機(jī),可以將開發(fā)環(huán)境與主機(jī)系統(tǒng)隔離開來,避免對(duì)主機(jī)系統(tǒng)的潛在影響,如系統(tǒng)崩潰或數(shù)據(jù)丟失等風(fēng)險(xiǎn)。

在開發(fā)過程中,可能需要頻繁地測(cè)試和修改系統(tǒng)配置,這可能會(huì)帶來安全風(fēng)險(xiǎn)。使用虛擬機(jī)可以在一個(gè)封閉的環(huán)境中進(jìn)行這些操作,從而保護(hù)主機(jī)系統(tǒng)不受潛在的惡意軟件或誤操作的影響。

某些開發(fā)工具和編譯器可能只在特定的Linux發(fā)行版上提供最佳支持,使用虛擬機(jī)可以輕松地安裝和運(yùn)行這些工具。

綜上所述,搭建Linux虛擬機(jī)環(huán)境對(duì)于RK3566開發(fā)來說是非常有益的,它不僅能夠提高編譯效率,還能提供一個(gè)安全、一致且易于管理的開發(fā)環(huán)境。

來看我們用到的開發(fā)板長什么樣子

Purple Pi OH開發(fā)板cdaa98c8-17d2-11ef-bebc-92fbcf53809c.png

02固件源碼獲取

2.1源碼下載

當(dāng)我們拿到一塊Linux開發(fā)板時(shí),我們就需要同步進(jìn)行開發(fā)的初期準(zhǔn)備。

首先就是獲取資料,通常包括板子的芯片手冊(cè)、數(shù)據(jù)手冊(cè)、原理圖等。

獲取到資料后第二步就是通過查閱資料了解到源碼的獲取方式,其他的芯片資料可以先不看。因?yàn)橥ǔT创a都非常大,我們需要時(shí)間從網(wǎng)絡(luò)上進(jìn)行獲取。

第三步即開發(fā)環(huán)境搭建,通常我們也是通過官方資料查閱編譯SDK所需要的環(huán)境要求并搭建一個(gè)編譯環(huán)境。

cde33c78-17d2-11ef-bebc-92fbcf53809c.png

注意:所有的補(bǔ)丁都是基于1.1中的sdk整包生成。


cde972e6-17d2-11ef-bebc-92fbcf53809c.png

2.2開發(fā)環(huán)境搭建

接下來我們需要使用VMWare或者VirtualBox創(chuàng)建虛擬機(jī),環(huán)境搭建的教程通常在網(wǎng)上搜索即可獲取大量資料。

只要根據(jù)要求配置編譯環(huán)境即可,以下是Android11推薦編譯主機(jī)配置:

1.Ubuntu18.04 操作系統(tǒng)

2.64 位 CPU

3.16GB 物理內(nèi)存+交換內(nèi)存

4.250GB 空閑的磁盤空間

2.3VMWare文件傳輸

在完成源碼獲取和編譯環(huán)境搭建后,我們需要將源碼拖動(dòng)到虛擬機(jī)內(nèi),這就涉及到Windows和Linux虛擬機(jī)之間的傳輸文件方式,通常我們可以通過共享文件夾、FTP或SFTP、網(wǎng)絡(luò)傳輸工具等方式,我通常使用的是共享文件夾方式,其配置簡單且速度快,方便開發(fā)。

它可以直接在Windows資源管理器中訪問,即Linux虛擬機(jī)和Windows共享一塊存儲(chǔ)空間,兩邊都可以直接訪問和操作。過去我總是在Windows下直接通過VScode打開文件夾進(jìn)行編碼,在Linux中進(jìn)入文件夾直接編譯或者復(fù)制出來在其他地方編譯都可。

接下來我將講解如何創(chuàng)建與配置共享文件夾:

1. 首先將VMWare Tools安裝好,安裝詳細(xì)流程可以在網(wǎng)上搜索并學(xué)習(xí)。

2. 點(diǎn)擊【編輯虛擬機(jī)設(shè)置】,選中【選項(xiàng)】即可查看到共享文件夾的設(shè)置,

如下圖所示:

ce0f10e6-17d2-11ef-bebc-92fbcf53809c.png

3. 點(diǎn)擊【總是啟用】,彈出下圖中第二步的【添加共享文件夾向?qū)А俊?/p>

電腦中選擇合適的位置建立共享文件夾。這里我是和虛擬機(jī)位置放在一起的。

如下圖所示:

ce135cfa-17d2-11ef-bebc-92fbcf53809c.png

4. 在設(shè)置好共享文件夾路徑后,點(diǎn)擊下一步時(shí)記得選中啟用此共享。

如下圖所示:

ce4961d8-17d2-11ef-bebc-92fbcf53809c.png

5. 接著我們?cè)陔娔X資源管理器中訪問位置即可查看到,此時(shí)往文件夾拖文件就可以在Linux中的/mnt/hgfs/文件夾下即可實(shí)時(shí)看到,如下圖所示:

ce4da9e6-17d2-11ef-bebc-92fbcf53809c.png

03SDK編譯3.1源碼解壓

將源碼傳輸進(jìn)Linux中后,

我們通過如下命令可以將源碼壓縮文件解壓縮至我們想要的路徑:

cat purple_pi_android11.tar.gza* | tar -xz -C target_path

語句意思為在當(dāng)前文件夾下查看全部以

“purple_pi_android11.tar.gza”開頭的文件,

并將其結(jié)果使用tar命令解壓至[ target_path ],target_path即你想要解壓到的文件夾路徑。

效果如下圖所示:

ce62ee00-17d2-11ef-bebc-92fbcf53809c.png

3.2uboot編譯

接著我們進(jìn)入SDK根目錄下的文件夾u-boot執(zhí)行如下命令:

cd u-boot./make.shrk3566

執(zhí)行命令后結(jié)果如下圖所示:

cebda430-17d2-11ef-bebc-92fbcf53809c.png

若編譯成功結(jié)果如下圖所示:

cedda834-17d2-11ef-bebc-92fbcf53809c.png

3.3kernel編譯

內(nèi)核配置文件路徑:kernel/arch/arm64/configs/rockchip_purple_pi_3566_defconfig設(shè)備樹文件路徑:kernel/arch/arm64/boot/dts/rockchip/

我們提供了兩種顯示屏的適配,分別是:

1. “ido-pi-oh3566-v1.dts”,顯示屏驅(qū)動(dòng)適配HDMI接口;

2. “ido-pi-oh3566-v1-dsi0-mipi.dts”,顯示屏驅(qū)動(dòng)適配MIPI接口;

我們以編譯HDMI屏內(nèi)核為例,編譯命令如下:

cd kernel make ARCH=arm64 rockchip_purple_pi_3566_defconfig rk356x_evb.config android-11.configmakeARCH=arm64ido-pi-oh3566-v1.img-j10

命令解釋:

cf08052a-17d2-11ef-bebc-92fbcf53809c.png

分別是:

Purple Pi OH默認(rèn)的配置文件,包含了該開發(fā)板的默認(rèn)設(shè)置和選項(xiàng);

Rockchip RK356x的配置文件,包含了針對(duì)該板的特定設(shè)置和選項(xiàng);

Android 11版本的配置文件,包含了針對(duì)Android 11操作系統(tǒng)的特定設(shè)置和選項(xiàng)。

cf28dd40-17d2-11ef-bebc-92fbcf53809c.png

特別注意:

部分開發(fā)者遇到編譯失敗時(shí),可能是虛擬機(jī)的內(nèi)存分配不夠,此時(shí)我們可以嘗試調(diào)小并行任務(wù)數(shù)編譯,例如 -j10調(diào)整為 –j4 或 –j1。

如果編譯提示選擇io_domain電壓,vccio4和vccio5選擇1.8v,其它選擇3.3v。


以上方式編譯完成后,kernel目錄生成的boot.img文件不能直接燒錄。

需要使用build.sh -K 命令來編譯kernel,編譯后燒寫rockdev/Image-rk3566_r/boot.img。

單獨(dú)編譯kernel生成可直接燒錄的boot.img。

此處的編譯方法的前提已存在rockdev/Image-rk3566_r/boot.img文件(即Android代碼已經(jīng)完全編譯過一次或者執(zhí)行過build.sh -K)。

編譯的原理為在kernel目錄下將編譯生成的 kernel.img 和 resource.img 替換到舊的 boot.img 中,命令如下:

cd kernel make ARCH=arm64 rockchip_purple_pi_3566_defconfig rk356x_evb.config android-11.configmakeARCH=arm64BOOT_IMG=../rockdev/Image-rk3566_r/boot.imgido-pi-oh3566-v1.img-j10

使用此方法編譯出kernel/boot.img文件可以直接用于燒錄至boot分區(qū),kernel編譯結(jié)果如下圖所示:

cf2d8a2a-17d2-11ef-bebc-92fbcf53809c.png

3.4Android編譯及固件生成步驟

使用如下命令編譯

source build/envsetup.shlunch rk3566_r-userdebugmake-j10

編譯過程如下圖所示:

cf4c6d0a-17d2-11ef-bebc-92fbcf53809c.png

Android編譯成功結(jié)果如下圖所示:

cfa4027c-17d2-11ef-bebc-92fbcf53809c.png

需要編譯內(nèi)核選擇的屏幕修改Android主顯和系統(tǒng)方向時(shí)可以修改如下參數(shù)

1)HDMI: A)device/rockchip/rk356x/rk3566_r/rk3566_r.mk PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=HDMI-A-1B)device/rockchip/rk356x/BoardConfig.mk SF_PRIMARY_DISPLAY_ORIENTATION := 0
2)MIPI: A)device/rockchip/rk356x/rk3566_r/rk3566_r.mk PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI B)device/rockchip/rk356x/BoardConfig.mk SF_PRIMARY_DISPLAY_ORIENTATION := 270

3.5固件打包

編譯完成后,執(zhí)行 SDK 根目錄下的 mkimage.sh 腳本生成固件,所有燒寫所需的各分區(qū)鏡像將都

rockdev/Image-rk3566_r/目錄下,

命令如下:

./mkimage.sh


結(jié)果如下:

cffe6bd6-17d2-11ef-bebc-92fbcf53809c.png


將所有分區(qū)鏡像合并成單個(gè)的鏡像,命令如下:

cd RKTools/linux/Linux_Pack_Firmware/rockdev/./mkupdate_rk356x.sh

結(jié)果如下:

d02ad2fc-17d2-11ef-bebc-92fbcf53809c.png


執(zhí)行mkupdate_rk356x.sh 命令后

會(huì)將各分區(qū)鏡像合并成一個(gè)update.img 的鏡像文件,如下圖所示:

d05422c4-17d2-11ef-bebc-92fbcf53809c.png


當(dāng)我們做到這一步時(shí),我們的固件編譯就完成啦!

由于固件編譯本身就是一個(gè)非常復(fù)雜和繁瑣的活,因此本篇內(nèi)容的篇幅較長,非常感謝有耐心看到這里的小伙伴!

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

    關(guān)注

    12

    文章

    3917

    瀏覽量

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

    關(guān)注

    25

    文章

    4895

    瀏覽量

    97055
  • Purple
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    232
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【觸覺智能 Purple Pi OH 開發(fā)板體驗(yàn)】+ 熟悉PurplePiOH編譯固件

    Purple Pi OH 開發(fā)板的鴻蒙使用體驗(yàn)。熟悉了軟硬件環(huán)境,燒寫固件。搭建
    的頭像 發(fā)表于 07-26 16:01 ?1645次閱讀
    【觸覺智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 開發(fā)板體驗(yàn)】+ 熟悉PurplePiOH<b class='flag-5'>編譯</b><b class='flag-5'>固件</b>

    【觸覺智能 Purple Pi OH 開發(fā)板體驗(yàn)】+2、燒錄debian固件體驗(yàn)

    廠家為Purple Pi OH 提供了多種系統(tǒng)。
    的頭像 發(fā)表于 07-27 09:05 ?1021次閱讀
    【觸覺智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 開發(fā)板體驗(yàn)】+2、燒錄debian<b class='flag-5'>固件</b>體驗(yàn)

    【觸覺智能 Purple Pi開發(fā)板試用】系統(tǒng)重?zé)?b class='flag-5'>固件及ffmpeg編譯

    前言: 前面環(huán)境搭建已經(jīng)完成,基礎(chǔ)外圍測(cè)試基本完成,根據(jù)當(dāng)下手里的硬件進(jìn)行測(cè)試,因無配套屏幕,許多測(cè)試無法進(jìn)行,先來測(cè)試刷機(jī)功能及ffmpeg的編譯。一、PurPle-Pi-R1
    發(fā)表于 11-16 17:45

    【觸覺智能 Purple Pi OH 開發(fā)板體驗(yàn)】檢測(cè)Android系統(tǒng)的完備性

    Purple Pi OH運(yùn)行Android11,性能穩(wěn)定,該有的硬件外設(shè)接口資源,檢測(cè)均未發(fā)現(xiàn)異常。并能兼容安裝第三方apk軟件,如果能在功耗、散熱性上再做優(yōu)化,將會(huì)給RK3566帶
    發(fā)表于 09-10 17:23

    RP4412 Android4.0 環(huán)境搭建和源碼編譯說明_v1

    RP4412 Android4.0 環(huán)境搭建和源碼編譯說明。
    發(fā)表于 05-04 16:04 ?0次下載

    modemcu 打包_自己動(dòng)手編譯nodemcu固件

    。完全可以通過源碼自己編譯固件,動(dòng)手能力強(qiáng)的,可以自己搭建編譯環(huán)境。神奇的是,樂鑫并沒有給出友好的文檔說如何
    發(fā)表于 12-17 17:56 ?8次下載
    modemcu 打包_自己動(dòng)手<b class='flag-5'>編譯</b>nodemcu<b class='flag-5'>固件</b>

    Purple Pi OH開源主板通過 OpenHarmony 兼容性測(cè)評(píng)

    Purple Pi OH Purple Pi OH作為一款兼容樹莓派的開源主板,采用RK3566
    的頭像 發(fā)表于 04-10 09:40 ?787次閱讀
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>開源主板通過 OpenHarmony 兼容性測(cè)評(píng)

    Purple Pi OH Android11 ROOT方法

    為了讓應(yīng)用程序可以直接調(diào)用su執(zhí)行系統(tǒng)命令和獲取root權(quán)限,本文基于Purple Pi OH主板的Android SDK,介紹如果修改和編譯
    的頭像 發(fā)表于 06-25 09:49 ?786次閱讀
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> <b class='flag-5'>Android11</b> ROOT方法

    Purple Pi OH Android11 ROOT方法

    為了讓應(yīng)用程序可以直接調(diào)用su執(zhí)行系統(tǒng)命令和獲取root權(quán)限,本文基于Purple Pi OH主板的Android SDK,介紹如果修改和編譯
    的頭像 發(fā)表于 06-30 14:59 ?614次閱讀
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> <b class='flag-5'>Android11</b> ROOT方法

    【觸覺智能 Purple Pi OH 開發(fā)板體驗(yàn)】+ 編譯open Harmony固件成功

    成功編譯openharmony固件
    的頭像 發(fā)表于 07-26 17:45 ?654次閱讀
    【觸覺智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 開發(fā)板體驗(yàn)】+ <b class='flag-5'>編譯</b>open Harmony<b class='flag-5'>固件</b>成功

    Purple Pi OH 開發(fā)板體驗(yàn):固件開發(fā)+應(yīng)用開發(fā)

    觸覺智能 Purple Pi OH 開發(fā)板體驗(yàn)的開發(fā)環(huán)境,介紹了設(shè)備端和應(yīng)用端的基本知識(shí)點(diǎn)
    的頭像 發(fā)表于 08-04 10:52 ?807次閱讀
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 開發(fā)板體驗(yàn):<b class='flag-5'>固件</b>開發(fā)+應(yīng)用開發(fā)

    【觸覺智能 Purple Pi OH 開發(fā)板體驗(yàn)】+ 兩款Purple Pi的對(duì)比

    先前曾使用過Purple Pi,此次又見到了Purple Pi OH,就對(duì)這兩款產(chǎn)品進(jìn)行簡單的對(duì)比。
    的頭像 發(fā)表于 08-17 10:11 ?1485次閱讀
    【觸覺智能 <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 開發(fā)板體驗(yàn)】+ 兩款<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b>的對(duì)比

    3568編譯環(huán)境搭建

    主要介紹如何在本地搭建編譯環(huán)境編譯rockchipBBuildrootllinuxSDK的源代碼。d當(dāng)前sdk只支持在linux環(huán)境
    發(fā)表于 12-13 11:23 ?18次下載

    瑞芯微RK3566鴻蒙開發(fā)板Ubuntu虛擬機(jī)環(huán)境搭建教程,觸覺智能Purple Pi OH主板

    本文適用于Ubuntu虛擬機(jī)環(huán)境搭建教程學(xué)習(xí),設(shè)備為觸覺智能開發(fā)的瑞芯微RK3566開發(fā)板,型號(hào)Purple Pi OH。是華為Laval官
    的頭像 發(fā)表于 09-05 17:47 ?335次閱讀
    瑞芯微RK3566鴻蒙開發(fā)板Ubuntu虛擬機(jī)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>教程,觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板

    瑞芯微RK3566鴻蒙開發(fā)板Ubuntu虛擬機(jī)環(huán)境搭建教程,觸覺智能Purple Pi OH主板

    本文適用于Ubuntu虛擬機(jī)環(huán)境搭建教程學(xué)習(xí),設(shè)備為觸覺智能開發(fā)的瑞芯微RK3566開發(fā)板,型號(hào)Purple Pi OH。是Laval官方社
    的頭像 發(fā)表于 09-08 18:25 ?714次閱讀
    瑞芯微RK3566鴻蒙開發(fā)板Ubuntu虛擬機(jī)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>教程,觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板