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

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

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

3天內不再提示

fireflyCORE-RK3328主板JD4--編譯 Linux 固件介紹

firefly ? 來源:firefly ? 作者:firefly ? 2019-12-18 15:03 ? 次閱讀
編譯 Linux 固件(GPT)
前言

SDK 開發環境是在 Ubuntu 上開發測試的。我們推薦使用 Ubuntu 16.04 的系統進行編譯。其他的 Linux 版本可能需要對軟件包做相應調整。 除了系統要求外,還有其他軟硬件方面的要求。

準備工作
硬件要求:

64 位系統,硬盤空間大于 40G。如果您進行多個構建,將需要更大的硬盤空間。

軟件要求:編譯環境初始化
  • Ubuntu 14.04 軟件包安裝:

$ sudo apt-get install git gnupg flex bison gperf build-essential \ zip tar curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 cmake tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 lzop lib32stdc++6 $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
  • Ubuntu 16.04 軟件包安裝

sudoapt-getinstallgitgcc-arm-linux-gnueabihfu-boot-toolsdevice-tree-compilermtools\partedlibudev-devlibusb-1.0-0-devpython-linaro-image-toolslinaro-image-toolslibssl-dev\autotools-devlibsigsegv2m4libdrm-devcurlsedmakebinutilsbuild-essentialgccg++bash\patchgzipbzip2perltarcpiopythonunziprsyncfilebcwgetlibncurses5libglib2.0-devopenssh-clientlib32stdc++6
  • 安裝 ARM 交叉編譯工具鏈和編譯內核相關軟件包

$ sudo apt-get install gcc-arm-linux-gnueabihf \ gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev \ libssl1.0.0 libssl-dev
下載LINUX-SDK:

提供兩種方式給用戶下載:1:Github上同步SDK;2:下載源碼包(推薦國內用戶使用)

Github上同步SDK

  • 下載repo工具:

mkdirlinuxcdlinuxgitclonehttps://github.com/FireflyTeam/repo.git
  • 初始化倉庫:

repoinit--repo-urlhttps://github.com/FireflyTeam/repo.git-uhttps://github.com/FireflyTeam/manifests.git-blinux-sdk-mrk3328/rk3328_linux_release.xml

下載源碼包(推薦國內用戶使用)

  • 下載repo工具:

mkdirlinuxcdlinuxgitclonehttps://github.com/FireflyTeam/repo.git
  • 下載鏈接:Linux-SDK GPT源碼包https://pan.baidu.com/s/1UEV7Hmpf4Dj6rbA_MI_XEw(提取碼:f4hg)

  • 拷貝到linux文件夾下

  • 解壓文件:7zxlinux-sdk-3328.7z

注意:解壓完之后,用戶可能會疑惑看不到文件。在linux/目錄運行ls-a命令,有.repo/目錄,這是我們的倉庫。

同步源碼:
reposync-c

注意:從Github上同步SDK時,部分國內用戶會有不穩定的現象,這就需要多次運行同步命令reposync-c才可以

目錄

$ tree -L 1 . ├── app ├── buildroot buildroot根文件系統的編譯目錄 ├── build.sh -> device/rockchip/common/build.sh 全自動編譯腳本 ├── device ├── distro ├── docs 開發文檔 ├── envsetup.sh -> buildroot/build/envsetup.sh ├── external ├── kernel 內核 ├── Makefile -> buildroot/build/Makefile ├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh 打包腳本 ├── prebuilts ├── rkbin ├── rkflash.sh -> device/rockchip/common/rkflash.sh 燒寫腳本 ├── rootfs ├── tools └── u-boot
編譯SDK
編譯前配置:

在device/rockchip/rk3328/目錄下,選擇對應的板型的配置文件

本文例子:確定選用rk3328/aio-rk3328-jd4.mk

aio-rk3328-jd4.mk 相關配置介紹:

# Target arch export RK_ARCH=arm64 64位ARM架構 # Uboot defconfig export RK_UBOOT_DEFCONFIG=firefly-rk3328 u-boot配置文件 # Kernel defconfig export RK_KERNEL_DEFCONFIG=firefly-roc-rk3328-pc_defconfig kernel配置文件 # Kernel dts export RK_KERNEL_DTS=rk3328-firefly-aiojd4 dts文件 # parameter for GPT table export RK_PARAMETER=parameter-ubuntu.txt 分區表(關鍵) # rootfs image path export RK_ROOTFS_IMG=buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.$RK_ROOTFS_TYPE 根文件系統路徑

重點:

配置Rootfs

源碼中默認的Linux rootfs是buildroot,如果rootfs使用buildroot,跳過此步,如果用戶需要使用Ubuntu,需要通過以下步驟來配置:

以Ubuntu18.04為例

1、 下載根文件系統:ubuntu18.04 根文件系統(64位)https://pan.baidu.com/s/1lwtFtQqIRbXq-6JSiDBXYg(提取碼:yo4z),放到SDK路徑下;

2、 該文件為7z壓縮包,解壓該文件;

7zxrk3328-ubuntu1804-arm64-rootfs.7z

3、 完成上述后,得到rk3328-ubuntu1804-arm64-rootfs.img(2.6G),拷貝根文件系統到rootfs目錄下;

cprk3328-ubuntu1804-arm64-rootfs.imgrootfs/

4、 在device/rockchip/rk3328/aio-rk3328-jd4.mk中, 將“# rootfs image path”修改為:

exportRK_ROOTFS_IMG=rootfs/rk3328-ubuntu1804-arm64-rootfs.img

編譯配置文件:

./build.shaio-rk3328-jd4.mk

運行完上述腳本后,在device/rockchip/目錄下,生成.BoardConfig.mk 軟鏈接 device/rockchip/rk3328/aio-rk3328-jd4.mk

完全編譯

完全編譯運行如下命令,包含 kernel 、uboot、buildroot、recovery。 如果用戶使用buildroot,可以使用完全編譯。如果用戶使用Ubuntu系統,則不需要使用完全編譯。

./build.sh

注意:該腳本默認編譯buildroot根文件系統,若用戶需要用的根文件系統是Debian或者Ubuntu16.04時,請!先!將!對應的根文件系統準備好,不然在執行該build.sh腳本時,會在整理分區鏡像、打包固件時出錯,這部分操作在以下的“部分編譯”中“編譯rootfs”有詳細說明,按照操作執行即可!

build.sh腳本運行完成后,會將分區鏡像和統一固件update.img放在rockdev/目錄下,同時創建IMAGE/目錄備份。

模塊化編譯:

編譯u-boot:

./build.shuboot

編譯kernel:

./build.shkernel

編譯rootfs:

本SDK支持三種根文件系統,分別是buildroot、Debian、Ubuntu;

  • Buildroot

編譯 Buildroot 環境搭建所依賴的軟件包安裝命令如下:

sudoapt-getinstallrepogit-coregitkgit-guigcc-arm-linux-gnueabihfu-boot-toolsdevice-tree-compiler\gcc-aarch64-linux-gnumtoolspartedlibudev-devlibusb-1.0-0-devpython-linaro-image-toolslinaro-image-tools\autoconfautotools-devlibsigsegv2m4intltoollibdrm-devcurlsedmakebinutilsbuild-essentialgccg++bash\patchgzipbzip2perltarcpiopythonunziprsyncfilebcwgetlibncurses5libqt4-devlibglib2.0-devlibgtk2.0-dev\libglade2-devcvsgitmercurialrsyncopenssh-clientsubversionasciidocw3mdblatexgraphvizpython-matplotlib\libc6:i386libssl-devtexinfoliblz4-toolgenext2fs

搭建環境完成后,編譯buildroot,執行如下命令:

./build.shrootfs
  • Debian

編譯 Debian 環境搭建所依賴的軟件包安裝命令如下:

sudoapt-getinstallrepogit-coregitkgit-guigcc-arm-linux-gnueabihfu-boot-toolsdevice-tree-compiler\gcc-aarch64-linux-gnumtoolspartedlibudev-devlibusb-1.0-0-devpython-linaro-image-toolslinaro-image-tools\gcc-4.8-multilib-arm-linux-gnueabihfgcc-arm-linux-gnueabihflibssl-devgcc-aarch64-linux-gnug+confautotools-dev\libsigsegv2m4intltoollibdrm-devcurlsedmakebinutilsbuild-essentialgccg++bashpatchgzipbzip2perl\tarcpiopythonunziprsyncfilebcwgetlibncurses5libqt4-devlibglib2.0-devlibgtk2.0-devlibglade2-devcvs\gitmercurialrsyncopenssh-clientsubversionasciidocw3mdblatexgraphvizpython-matplotliblibc6:i386\libssl-devtexinfoliblz4-toolgenext2fs

搭建環境完成后,編譯Debian,按照自身需求,執行如下命令:

cdrootfs/## Usage for 32bit DebianBuildingabasedebiansystembyubuntu-build-servicefromlinaro.sudoapt-getinstallbinfmt-supportqemu-user-staticsudodpkg-iubuntu-build-service/packages/*sudoapt-getinstall-fRELEASE=stretchTARGET=desktopARCH=armhf./mk-base-debian.shBuildingtherk-debainrootfswithdebug:VERSION=debugARCH=armhf./mk-rootfs-stretch.shCreatingtheext4image(linaro-rootfs.img):./mk-image.sh------------------------------------------------------------------## Usage for 64bit DebianBuildingabasedebiansystembyubuntu-build-servicefromlinaro.sudoapt-getinstallbinfmt-supportqemu-user-staticsudodpkg-iubuntu-build-service/packages/*sudoapt-getinstall-fRELEASE=stretchTARGET=desktopARCH=arm64./mk-base-debian.shBuildingtherk-debainrootfswithdebug:VERSION=debugARCH=arm64./mk-rootfs-stretch-arm64.shCreatingtheext4image(linaro-rootfs.img):./mk-image.sh

完成上述后,會在rootfs目錄下,生成linaro-rootfs.img.修改device/rockchip/.BoardConfig.mk中的根文件系統路徑即可,參考配置前編譯中的“配置Rootfs”.

  • Ubuntu

以Ubuntu18.04為例

1、 下載根文件系統:ubuntu18.04 根文件系統(64位)https://pan.baidu.com/s/1lwtFtQqIRbXq-6JSiDBXYg(提取碼:yo4z),放到SDK路徑下;

2、 該文件為7z壓縮包,解壓該文件;

7zxrk3328-ubuntu1804-arm64-rootfs.7z

3、 完成上述后,得到rk3328-ubuntu1804-arm64-rootfs.img(2.6G),拷貝根文件系統到rootfs目錄下;

cprk3328-ubuntu1804-arm64-rootfs.imgrootfs/

補充說明:

./build.sh--help====USAGE:build.shmodules====uboot-buildubootkernel-buildkernelrootfs-builddefaultrootfs,currentlybuildbuildrootasdefaultbuildroot-buildbuildrootrootfsyocto-buildyoctorootfs,currentlybuildrosasdefaultros-buildrosrootfsdebian-builddebianrootfspcba-buildpcbarecovery-buildrecoveryall-builduboot,kernel,rootfs,recoveryimagecleanall-cleanuboot,kernel,rootfs,recoveryfirmware-packalltheimageweneedtobootupsystemupdateimg-packupdateimagesdbootimg-packsdbootimagesave-saveimages,patches,commandsusedtodebugdefault-buildallmodulesBoardConfig-selectthecorrespondingBoardConfig.mkfile

recovery分區在Ubuntu系統中不會用到,若有需要,可運行如下命令:

./build.shrecovery
打包固件
parameter分區表

parameter.txt文件中包含了固件的重要信息,如以rk3288為例: 路徑:device/rockchip/rk3328/parameter-ubuntu.txt

FIRMWARE_VER:8.1固件版本MACHINE_MODEL:rk3328固件板型MACHINE_ID:007MANUFACTURER:RK3328MAGIC:0x5041524BATAG:0x00200800MACHINE:3328CHECK_MASK:0x80PWR_HLD:0,0,A,0,1TYPE:GPT分區類型CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00010000@0x0000a000(boot),0x00010000@0x0002a000(backup),-@0x0005a000(rootfs:grow)uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

CMDLINE屬性是我們關注的地方,以uboot為例 0x00002000@0x00004000(uboot)中0x00004000為uboot分區的起始位置0x00002000為分區的大小,后面相同,用戶可以根據自己需要增減或者修改分區信息,但是請最少保留uboot,trust,boot,rootfs分區,這是機器能正常啟動的前提條件。

  • 分區介紹:

uboot 分區: uboot編譯出來的 uboot.img. trust 分區: uboot編譯出來的 trust.img misc 分區: misc.img開機檢測進入recovery模式.(可省略) boot 分區: 編譯出來的 boot.img包含kernel和設備樹信息. recovery 分區: 燒寫 recovery.img.(可省略) backup 分區: 預留,暫時沒有用。后續跟 android 一樣作為 recovery 的 backup 使用. oem 分區: 給廠家使用,存放廠家的 app 或數據,只讀,代替原來音箱的 data 分區,掛載在/oem 目錄.(可省略) rootfs 分區: 存放 buildroot 或者 debian 編出來的rootfs.img只讀. userdata 分區: 存放app臨時生成的文件或者是給最終用戶使用。可讀寫,掛載在/userdata目錄下.(可省略)

在parameter.txt文件中,僅僅保留了5個不可缺少的分區。

注意:若發現根文件分區大小異常時,執行如下命令:

resize2fs/dev/mmcblk2p5
package-file

package-file文件用于打包統一固件時確定需要的分區鏡像和鏡像路徑,同時它需要與parameter.txt文件保持一致。 路徑tools/linux/Linux_Pack_Firmware/rockdev/目錄下,以package-file為例:

# NAME Relative path##HWDEF HWDEFpackage-filepackage-filebootloaderImage/MiniLoaderAll.binparameterImage/parameter.txttrustImage/trust.imgubootImage/uboot.imgbootImage/boot.imgrootfs:growImage/rootfs.imgbackupRESERVED
打包
  • 整理分區鏡像到rockdev/目錄下

./mkfirmware.sh

提示:在運行./mkfirmware時,可能會遇到如下報錯:

error: /home/ljh/proj/linux-sdk/buildroot/output/rockchip_rk3328_recovery/images/recovery.img not found!

表示recovery分區沒有找到,類似的如oem.img、userdata.img,上文提到,這些屬于可省略分區鏡像,可以不用理會。

  • 整合統一固件

./build.shupdateimg

注意:每次打包固件前,需要運行mkfirmware.sh腳本更新rockdev/下的分區鏡像

燒寫固件
工具下載
  • Windows:AndroidTool_v2.58

  • Linux:Upgrade_tool_1.34

Windows升級

下載 AndroidTool2.58后,解壓,運行里面的 AndroidTool.exe(注意,如果是 Windows 7/8,需要按鼠標右鍵,選擇以管 理員身份運行),如下圖:

前提:設備燒寫固件或分區鏡像時,需處于Loader模式或Maskrom模式,參考設備模式

燒寫統一固件 update.img

燒寫統一固件 update.img 的步驟如下:

  1. 切換至”升級固件”頁。

  2. 按”固件”按鈕,打開要升級的固件文件。升級工具會顯示詳細的固件信息

  3. 按”升級”按鈕開始升級。

  4. 如果升級失敗,可以嘗試先按”擦除Flash”按鈕來擦除 Flash,然后再升級。

注意:如果你燒寫的固件loader版本與原來的機器的不一致,請在升級固件前先執行”擦除Flash”。

燒寫分區映像

燒寫分區映像時,請使用對應SDK下的FFTools/AndroidTool.rar燒寫。步驟如下:

  1. 切換至”下載鏡像”頁。

  2. 勾選需要燒錄的分區,可以多選。

  3. 確保映像文件的路徑正確,需要的話,點路徑右邊的空白表格單元格來重新選擇。

  4. 點擊”執行”按鈕開始升級,升級結束后設備會自動重啟。

Linux升級

下載Upgrade_tool1.34.zip后,解壓,將upgrade_tool拷貝到/usr/local/bin/目錄下,操作如下:

unzipLinux_Upgrade_Tool_v1.34.zipcdLinux_Upgrade_Toolsudomvupgrade_tool/usr/local/binsudochownroot:root/usr/local/bin/upgrade_tool

統一固件燒寫

  • 使用upgrade_tool工具燒寫:

sudoupgrade_toolufupdate.img
  • 使用SDK腳本燒寫:

./rkflash.shfirmware

分區鏡像燒寫

  • 使用upgrade_tool工具燒寫:

sudo upgrade_tool ul $LOADER sudo upgrade_tool di -p $PARAMETER sudo upgrade_tool di -uboot $UBOOT sudo upgrade_tool di -trust $TRUST sudo upgrade_tool di -b $BOOT sudo upgrade_tool di -rootfs $ROOTFS
  • 使用腳本燒寫:

#全自動燒寫./rkflash.sh#分區鏡像燒寫./rkflash.shloader./rkflash.shparameter./rkflash.shuboot./rkflash.shtrust./rkflash.shboot./rkflash.shrootfs

說明:rkflash.sh該腳本文件的原理便是使用upgrade_tool工具燒寫


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

    關注

    7

    文章

    6085

    瀏覽量

    35225
  • 安卓
    +關注

    關注

    5

    文章

    2122

    瀏覽量

    57039
  • Firefly
    +關注

    關注

    2

    文章

    538

    瀏覽量

    6992
  • RK3328
    +關注

    關注

    1

    文章

    55

    瀏覽量

    2960
收藏 人收藏

    評論

    相關推薦

    ROC-RK3328-CC超小型開源主板

    `ROC-RK3328-CC是Firefly推出的首個超小型開源主板,采用了RK3328四核A53X4 64位處理器,ARM Mali-450 MP2 四核GPU,獨特的USB3.0接
    發表于 03-08 20:24

    RK3328 linux命令是怎樣進入gpio口的呢

    怎樣去查看RK3328主板的gpio口呢?RK3328 linux命令是怎樣進入gpio口的呢?
    發表于 03-09 07:09

    新手求助RK3328-cc開發板固件編譯步驟有哪些呢

    新手求助RK3328-cc開發板固件編譯步驟有哪些呢?
    發表于 03-09 06:40

    firefly ROC-RK3328-CC介紹

     ROC-RK3328-CC,是 Firefly 榮譽出品的第一塊信用卡大小、性能強、功耗小的開源主板
    的頭像 發表于 11-13 11:05 ?2211次閱讀
    firefly ROC-<b class='flag-5'>RK3328</b>-CC<b class='flag-5'>介紹</b>

    fireflyCORE-RK3328主板JD4解包/打包 RK 固件介紹

    RK 固件release_update.img包含引導加載程序loader.img和實際的固件數據update.img:
    的頭像 發表于 12-18 14:34 ?2096次閱讀

    fireflyCORE-RK3328主板JD4編譯 Android 8.1介紹

    編譯 Android 8.1 準備 硬件配置
    的頭像 發表于 12-18 14:35 ?1372次閱讀

    fireflyCORE-RK3328主板JD4升級固件介紹

    本文介紹了如何將主機上的固件文件,通過Type-C數據線,燒錄到開發板的閃存中。
    的頭像 發表于 12-18 15:06 ?2041次閱讀
    <b class='flag-5'>fireflyCORE-RK3328</b><b class='flag-5'>主板</b><b class='flag-5'>JD4</b>升級<b class='flag-5'>固件</b><b class='flag-5'>介紹</b>

    fireflyCORE-RK3328主板JD4燒寫介紹

    目前CORE-RK3328-JD4官方提供的固件格式僅有: RK固件(Rockchip firmware)
    的頭像 發表于 12-18 15:16 ?1731次閱讀
    <b class='flag-5'>fireflyCORE-RK3328</b><b class='flag-5'>主板</b><b class='flag-5'>JD4</b>燒寫<b class='flag-5'>介紹</b>

    fireflyCORE-RK3328主板JD4啟動模式簡介

    AIO-RK3328-JD4 有靈活的啟動方式。
    的頭像 發表于 12-18 15:13 ?2045次閱讀

    fireflyCORE-RK3328主板JD4簡介

    AIO-RK3328-JD4 提供了豐富的接口,主要包括:電源接口, 1 x USB3.0(device),5 x USB2.0(接口×4,座子×1),HDMI顯示接口,以太網,WIFI天線,藍牙
    的頭像 發表于 12-18 15:43 ?2744次閱讀
    <b class='flag-5'>fireflyCORE-RK3328</b><b class='flag-5'>主板</b><b class='flag-5'>JD4</b>簡介

    fireflyCORE-RK3328主板JD4介紹

    采用Rockchip RK3328四核64位A53處理器,板載AI神經網絡加速芯片,高算力,高效能,可作為基于視覺的深度學習運算和AI算法加速,擁有強大的硬解碼能力與豐富的擴展接口,支持多系統操作,適用于集群服務器、高性能計算/存儲、工業電腦等行業
    的頭像 發表于 12-19 16:32 ?1356次閱讀
    <b class='flag-5'>fireflyCORE-RK3328</b><b class='flag-5'>主板</b><b class='flag-5'>JD4</b><b class='flag-5'>介紹</b>

    fireflyROC-RK3328PC啟動介紹

    ROC-RK3328-PC 有靈活的啟動方式。一般情況下,除非硬件損壞,ROC-RK3328-PC開發板是不會變磚的。
    的頭像 發表于 12-21 09:59 ?2694次閱讀

    fireflyROC-RK3328主板PC簡介

    ROC-RK3328-PC,是 Firefly 榮譽出品的第一塊信用卡大小、性能強、功耗小的開源主板
    的頭像 發表于 12-21 10:37 ?3217次閱讀
    fireflyROC-<b class='flag-5'>RK3328</b><b class='flag-5'>主板</b>PC簡介

    Core 3328 JD4源代碼Linux SDK包(僅支持RK3328

    電子發燒友網站提供《Core 3328 JD4源代碼Linux SDK包(僅支持RK3328).txt》資料免費下載
    發表于 09-13 10:34 ?10次下載
    Core <b class='flag-5'>3328</b> <b class='flag-5'>JD4</b>源代碼<b class='flag-5'>Linux</b> SDK包(僅支持<b class='flag-5'>RK3328</b>)

    Core 3328 JD4源代碼RK3328 Android8.1 SDK包

    電子發燒友網站提供《Core 3328 JD4源代碼RK3328 Android8.1 SDK包.txt》資料免費下載
    發表于 09-13 10:33 ?10次下載
    Core <b class='flag-5'>3328</b> <b class='flag-5'>JD4</b>源代碼<b class='flag-5'>RK3328</b> Android8.1 SDK包