RM新时代网站-首页

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

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

3天內不再提示

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

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

01介紹

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

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

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

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

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

PC虛擬機通常具有比嵌入式硬件更強的計算和內存資源,這意味著在虛擬機上編譯內核和程序可以大幅縮短編譯時間。

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

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

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

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

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

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

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

02固件源碼獲取

2.1源碼下載

當我們拿到一塊Linux開發(fā)板時,我們就需要同步進行開發(fā)的初期準備。

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

獲取到資料后第二步就是通過查閱資料了解到源碼的獲取方式,其他的芯片資料可以先不看。因為通常源碼都非常大,我們需要時間從網(wǎng)絡上進行獲取。

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

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

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


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

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

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

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

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

2.64 位 CPU

3.16GB 物理內存+交換內存

4.250GB 空閑的磁盤空間

2.3VMWare文件傳輸

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

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

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

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

2. 點擊【編輯虛擬機設置】,選中【選項】即可查看到共享文件夾的設置,

如下圖所示:

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

3. 點擊【總是啟用】,彈出下圖中第二步的【添加共享文件夾向導】。

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

如下圖所示:

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

4. 在設置好共享文件夾路徑后,點擊下一步時記得選中啟用此共享。

如下圖所示:

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

5. 接著我們在電腦資源管理器中訪問位置即可查看到,此時往文件夾拖文件就可以在Linux中的/mnt/hgfs/文件夾下即可實時看到,如下圖所示:

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

03SDK編譯3.1源碼解壓

將源碼傳輸進Linux中后,

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

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

語句意思為在當前文件夾下查看全部以

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

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

效果如下圖所示:

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

3.2uboot編譯

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

cd u-boot./make.shrk3566

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

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

若編譯成功結果如下圖所示:

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

3.3kernel編譯

內核配置文件路徑:kernel/arch/arm64/configs/rockchip_purple_pi_3566_defconfig設備樹文件路徑:kernel/arch/arm64/boot/dts/rockchip/

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

1. “ido-pi-oh3566-v1.dts”,顯示屏驅動適配HDMI接口;

2. “ido-pi-oh3566-v1-dsi0-mipi.dts”,顯示屏驅動適配MIPI接口;

我們以編譯HDMI屏內核為例,編譯命令如下:

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默認的配置文件,包含了該開發(fā)板的默認設置和選項;

Rockchip RK356x的配置文件,包含了針對該板的特定設置和選項;

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

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

特別注意:

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

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


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

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

單獨編譯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編譯結果如下圖所示:

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

3.4Android編譯及固件生成步驟

使用如下命令編譯

source build/envsetup.shlunch rk3566_r-userdebugmake-j10

編譯過程如下圖所示:

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

Android編譯成功結果如下圖所示:

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

需要編譯內核選擇的屏幕修改Android主顯和系統(tǒng)方向時可以修改如下參數(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


結果如下:

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


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

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

結果如下:

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


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

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

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


當我們做到這一步時,我們的固件編譯就完成啦!

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

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

    關注

    12

    文章

    3935

    瀏覽量

    127339
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5032

    瀏覽量

    97371
  • Purple
    +關注

    關注

    0

    文章

    8

    瀏覽量

    237
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    【觸覺智能 Purple Pi開發(fā)板試用】系統(tǒng)重燒固件及ffmpeg編譯

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

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

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

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

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

    Purple Pi OH開源主板通過 OpenHarmony 兼容性測評

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

    Purple Pi OH Android11 ROOT方法

    為了讓應用程序可以直接調用su執(zhí)行系統(tǒng)命令和獲取root權限,本文基于Purple Pi OH主板的Android SDK,介紹如果修改和編譯
    的頭像 發(fā)表于 06-25 09:49 ?834次閱讀
    <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方法

    為了讓應用程序可以直接調用su執(zhí)行系統(tǒng)命令和獲取root權限,本文基于Purple Pi OH主板的Android SDK,介紹如果修改和編譯
    的頭像 發(fā)表于 06-30 14:59 ?656次閱讀
    <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ā)板體驗】+ 編譯open Harmony固件成功

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

    Purple Pi OH 開發(fā)板體驗:固件開發(fā)+應用開發(fā)

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

    Purple Pi OH 開發(fā)板體驗:應用開發(fā)的問題

    本文使用觸覺智能 Purple Pi OH 開發(fā)板開發(fā)鴻蒙應用,遇到問題并解決一部分,目前codelab中的工程都可以在板卡上運行了,有些沒有效果尚待差錯。
    的頭像 發(fā)表于 08-11 19:17 ?676次閱讀
    <b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 開發(fā)板體驗:應用開發(fā)的問題

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

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

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

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

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

    本文適用于Ubuntu虛擬機環(huán)境搭建教程學習,設備為觸覺智能開發(fā)的瑞芯微RK3566開發(fā)板,型號Purple Pi OH。是華為Laval官
    的頭像 發(fā)表于 09-05 17:47 ?335次閱讀
    瑞芯微RK3566鴻蒙開發(fā)板Ubuntu虛擬機<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虛擬機環(huán)境搭建教程,觸覺智能Purple Pi OH主板

    本文適用于Ubuntu虛擬機環(huán)境搭建教程學習,設備為觸覺智能開發(fā)的瑞芯微RK3566開發(fā)板,型號Purple Pi OH。是Laval官方社
    的頭像 發(fā)表于 09-08 18:25 ?962次閱讀
    瑞芯微RK3566鴻蒙開發(fā)板Ubuntu虛擬機<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>主板
    RM新时代网站-首页