在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

fireflyAIO-3288J主板編譯Ubuntu16.04固件簡介

firefly ? 來源:firefly ? 作者:firefly ? 2019-12-26 14:54 ? 次閱讀

編譯 Ubuntu16.04 固件(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 軟件包安裝

sudo apt-get install git gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler mtools \ parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools libssl-dev \ autotools-dev libsigsegv2 m4 libdrm-dev curl sed make binutils build-essential gcc g++ bash \ patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libglib2.0-dev openssh-client lib32stdc++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

同步源碼:

repo sync -c

注意:從Github上同步SDK時,部分國內用戶會有不穩定的現象,這就需要多次運行同步命令repo sync -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/rk3288/目錄下,選擇對應的板型的配置文件

本文例子:確定選用rk3288/aio-3288j.mk

aio-3288j.mk相關配置介紹:

# Target arch export RK_ARCH=arm 32位ARM架構 # Uboot defconfig export RK_UBOOT_DEFCONFIG=firefly-rk3288 u-boot配置文件 # Kernel defconfig export RK_KERNEL_DEFCONFIG=firefly_linux_defconfig kernel配置文件 # Kernel dts export RK_KERNEL_DTS=rk3288-firefly-aio 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,需要通過以下步驟來配置:

下載根文件系統:ubuntu16.04 根文件系統(32位),放到SDK路徑下;

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

7z x ubuntu1604armhf-rootfs.7z

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

cp ubuntu1604armhf-rootfs.img rootfs/

在device/rockchip/rk3288/aio-3288j.mk中, 將“# rootfs image path”修改為:

export RK_ROOTFS_IMG=rootfs/ubuntu1604armhf-rootfs.img

配置板型

根據各個板型和配件的差別,內核中使用的DTS也有差別,如果是標配板型,跳過此步,如果板型有VGA或者LCD等支持,需要在.BoardConfig.mk中做對應的修改。

Firefly-rk3288

# 標配: export RK_KERNEL_DTS=rk3288-firefly # 帶VGA: export RK_KERNEL_DTS=rk3288-firefly-vga

AIO-3288C

# 標配: export RK_KERNEL_DTS=rk3288-firefly-aioc # 帶VGA: export RK_KERNEL_DTS=rk3288-firefly-aioc-vga # LVDS(HSX101H40C): export RK_KERNEL_DTS=rk3288-firefly-aioc-lvds

AIO-3288J

# 標配: export RK_KERNEL_DTS=rk3288-firefly-aio # LVDS(HSX101H40C): export RK_KERNEL_DTS=rk3288-firefly-aio-lvds

編譯配置文件:

./build.sh aio-3288j.mk

運行完上述腳本后,在device/rockchip/目錄下,生成.BoardConfig.mk 軟鏈接 device/rockchip/rk3288/aio-3288j.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.sh uboot

編譯kernel:

./build.sh kernel

編譯rootfs:

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

Buildroot

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

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \ gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools \ autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash \ patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev \ libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib \ libc6:i386 libssl-dev texinfo liblz4-tool genext2fs

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

./build.sh rootfs

Debian

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

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \ gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools \ gcc-4.8-multilib-arm-linux-gnueabihf gcc-arm-linux-gnueabihf libssl-dev gcc-aarch64-linux-gnu g+conf autotools-dev \ libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl \ tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs \ git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 \ libssl-dev texinfo liblz4-tool genext2fs

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

cd rootfs/ ## Usage for 32bit Debian Building a base debian system by ubuntu-build-service from linaro. sudo apt-get install binfmt-support qemu-user-static sudo dpkg -i ubuntu-build-service/packages/* sudo apt-get install -f RELEASE=stretch TARGET=desktop ARCH=armhf ./mk-base-debian.sh Building the rk-debain rootfs with debug: VERSION=debug ARCH=armhf ./mk-rootfs-stretch.sh Creating the ext4 image(linaro-rootfs.img): ./mk-image.sh ------------------------------------------------------------------ ## Usage for 64bit Debian Building a base debian system by ubuntu-build-service from linaro. sudo apt-get install binfmt-support qemu-user-static sudo dpkg -i ubuntu-build-service/packages/* sudo apt-get install -f RELEASE=stretch TARGET=desktop ARCH=arm64 ./mk-base-debian.sh Building the rk-debain rootfs with debug: VERSION=debug ARCH=arm64 ./mk-rootfs-stretch-arm64.sh Creating the ext4 image(linaro-rootfs.img): ./mk-image.sh

Ubuntu16.04 1、 下載根文件系統:ubuntu16.04 根文件系統(32位),放到SDK路徑下;

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

7z x ubuntu1604armhf-rootfs.7z

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

cp ubuntu1604armhf-rootfs.img rootfs/

補充說明:

./build.sh --help ====USAGE: build.sh modules==== uboot -build uboot kernel -build kernel rootfs -build default rootfs, currently build buildroot as default buildroot -build buildroot rootfs yocto -build yocto rootfs, currently build ros as default ros -build ros rootfs debian -build debian rootfs pcba -build pcba recovery -build recovery all -build uboot, kernel, rootfs, recovery image cleanall -clean uboot, kernel, rootfs, recovery firmware -pack all the image we need to boot up system updateimg -pack update image sdbootimg -pack sdboot image save -save images, patches, commands used to debug default -build all modules BoardConfig -select the corresponding BoardConfig.mk file

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

./build.sh recovery

打包固件

parameter分區表

parameter.txt文件中包含了固件的重要信息,如以rk3288為例:

路徑:device/rockchip/rk3288/parameter-ubuntu.txt

FIRMWARE_VER: 8.1 固件版本 MACHINE_MODEL:rk3288 固件板型 MACHINE_ID:007 MANUFACTURER:RK3288 MAGIC: 0x5041524B ATAG: 0x00200800 MACHINE: 3288 CHECK_MASK: 0x80 PWR_HLD: 0,0,A,0,1 TYPE: 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 HWDEF package-file package-file bootloader Image/MiniLoaderAll.bin parameter Image/parameter.txt trust Image/trust.img uboot Image/uboot.img boot Image/boot.img rootfs:grow Image/rootfs.img backup RESERVED

打包

整理分區鏡像到rockdev/目錄下

./mkfirmware.sh

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

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

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

整合統一固件

./build.sh updateimg

注意:每次打包固件前,需要運行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 的步驟如下:

切換至”升級固件”頁。

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

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

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

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

燒寫分區映像

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

切換至”下載鏡像”頁。

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

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

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

Linux升級

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

unzip Linux_Upgrade_Tool_v1.34.zip cd Linux_Upgrade_Tool sudo mv upgrade_tool /usr/local/bin sudo chown root:root /usr/local/bin/upgrade_tool

統一固件燒寫

使用upgrade_tool工具燒寫:

sudo upgrade_tool uf update.img

使用SDK腳本燒寫:

./rkflash.sh firmware

分區鏡像燒寫

使用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

使用SDK腳本燒寫:

#全自動燒寫 ./rkflash.sh #分區鏡像燒寫 ./rkflash.sh loader ./rkflash.sh parameter ./rkflash.sh uboot ./rkflash.sh trust ./rkflash.sh boot ./rkflash.sh rootfs

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

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

    關注

    7

    文章

    6097

    瀏覽量

    36173
  • 安卓
    +關注

    關注

    5

    文章

    2149

    瀏覽量

    58401
  • Firefly
    +關注

    關注

    2

    文章

    541

    瀏覽量

    7422
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    怎樣去編譯Ubuntu16.04固件

    怎樣去編譯Ubuntu16.04固件呢?有哪些操作流程?
    發表于 02-10 06:30

    Ubuntu16.04配置開發編譯環境的過程是怎樣的?

    如何獲取Ubuntu16.04鏡像文件?Ubuntu16.04配置開發編譯環境的過程是怎樣的?
    發表于 03-04 07:06

    fireflyAIO-3288C主板編譯Ubuntu16.04固件簡介

    本 SDK 開發環境是在 Ubuntu 上開發測試的。
    的頭像 發表于 12-16 15:10 ?1720次閱讀
    <b class='flag-5'>fireflyAIO-3288</b>C<b class='flag-5'>主板</b><b class='flag-5'>編譯</b><b class='flag-5'>Ubuntu16.04</b><b class='flag-5'>固件</b><b class='flag-5'>簡介</b>

    fireflyAIO-3288J主板UART使用簡介

    AIO-3288J 支持SPI橋接/擴展4個增強功能串口(UART)的功能,分別為UART2,RS232(上),RS485,UART3和3個主控自帶的串口,分別為UART1,RS232(下)和調試串口。
    的頭像 發表于 12-20 09:40 ?2061次閱讀
    <b class='flag-5'>fireflyAIO-3288J</b><b class='flag-5'>主板</b>UART使用<b class='flag-5'>簡介</b>

    fireflyAIO-3288J主板PWM輸出簡介

    AIO-3288J 開發板上有 4 路 PWM 輸出,分別為 PWM0 ~ PWM3, 本章主要描述如何配置 PWM。
    的頭像 發表于 12-20 09:51 ?2051次閱讀

    fireflyAIO-3288J主板LED介紹

    AIO-3288J 開發板上有 2 個 LED 燈,
    的頭像 發表于 12-20 09:48 ?2204次閱讀

    fireflyAIO-3288J主板IR使用介紹

    IR 使用 紅外遙控配置 AIO-3288J 開發板上可以接紅外收發傳感器 IR 實現遙控功能。
    的頭像 發表于 12-20 10:02 ?2162次閱讀
    <b class='flag-5'>fireflyAIO-3288J</b><b class='flag-5'>主板</b>IR使用介紹

    fireflyAIO-3288J主板I2C簡介

    AIO-3288J 開發板上有 6 個片上 I2C 控制器。
    的頭像 發表于 12-20 10:05 ?1612次閱讀

    fireflyAIO-3288J方案

    AIO-3288J HDMI輸出及HDMI輸入 AIO-3288J底板上有兩個HDMI接口,其中一個為HDMI輸出接口(在USB口下方),另一個為HDMI輸入接口,
    的頭像 發表于 12-25 16:37 ?1977次閱讀
    <b class='flag-5'>fireflyAIO-3288J</b>方案

    fireflyAIO-3288J主板ADC使用簡介

    AIO-3288J 開發板上的 AD 接口分為:高速 ADC 流接口 (High-speed ADC Stream Interface)、溫度傳感器 (Temperature Sensor)、
    的頭像 發表于 12-26 14:34 ?2061次閱讀

    fireflyAIO-3288J主板定制Android固件簡介

    定制 Android 固件 前言 定制 Android 固件,有兩種方法: 改源碼,然后編譯生成固件
    的頭像 發表于 12-26 14:35 ?1849次閱讀

    fireflyAIO-3288J主板編譯Android固件簡介

    編譯 Android 固件 準備工作 編譯 Android 對機器的配置要求較高: 64 位 CPU 16GB 物理內存+交換內存 30GB 空閑的磁盤空間用于構建,源碼樹另外占用大約 25GB
    的頭像 發表于 12-26 14:44 ?1525次閱讀

    fireflyAIO-3288J簡介編譯Buildroot固件簡介

    編譯 Buildroot 固件 本章介紹 Buildroot 固件編譯使用。 準備工作
    的頭像 發表于 12-26 14:43 ?2442次閱讀

    fireflyAIO-3288J主板啟動模式介紹

    AIO-3288J 有靈活的啟動方式。一般情況下,除非硬件損壞,AIO-3288J 開發板是不會變磚的。
    的頭像 發表于 12-26 15:00 ?2248次閱讀

    Core 3288J固件Ubuntu文檔分享

    電子發燒友網站提供《Core 3288J固件Ubuntu文檔分享.txt》資料免費下載
    發表于 09-16 11:08 ?1次下載
    Core <b class='flag-5'>3288J</b><b class='flag-5'>固件</b><b class='flag-5'>Ubuntu</b>文檔分享
    主站蜘蛛池模板: 欧美乱淫 | 一级特黄性色生活片一区二区 | 色综合久久中文综合网 | 午夜爽视频 | 种子天堂bt磁力在线资源 | 免费的黄色大片 | www.4虎| 国产黄色片网站 | 亚洲夜夜爱 | 国产1卡2卡三卡四卡网站 | 久久国产免费观看精品 | 国模私拍视频在线观看 | 日本特黄特色大片免费看 | 色播影院性播免费看 | 欧美同性精品xxxx | 天天澡天天摸天天爽免费 | 粗又长好猛好爽 | 久久综合久色欧美婷婷 | 男人天堂久久 | 男人天堂网在线观看 | 全部免费特黄特色大片农村 | 五月婷婷丁香在线 | www.人人干 | 日本精品高清一区二区2021 | 国产三级日产三级韩国三级 | 69japanese日本100 69ww免费视频播放器 | 五月天婷婷免费视频 | 一区二区三区四区视频在线 | 视频一区日韩 | 成年人毛片网站 | 天天综合亚洲国产色 | 性网站免费 | 757福利影院合集3000 | 能直接看黄的网站 | 正在播放国产女免费 | 色视频在线免费看 | 夜夜摸视频网 | 男人天堂资源网 | 人人舔| 欧美高清激情毛片 | 丁香六月色婷婷 |