介紹
該項(xiàng)目介紹了如何在飛騰嵌入式開發(fā)平臺上運(yùn)行OpenHarmony 4.0 release標(biāo)準(zhǔn)系統(tǒng)。 該項(xiàng)目支持芯片內(nèi)置提供的視頻解碼硬件加速,支持硬件光標(biāo)加速,基于Linux kernel 5.10開發(fā)。
代碼結(jié)構(gòu)
├── device_board_phytium #飛騰開發(fā)板代碼倉庫
├── device_soc_phytium #飛騰芯片代碼倉庫
├── phytium_env.sh #自動化合patch腳本
├── vendor_phytium #飛騰開發(fā)板方案定制代碼倉庫
├── FAQ #編譯集成常見問題
└── …
搭建開發(fā)環(huán)境
1.1硬件環(huán)境
工欲善其事必先利其器,所以首先準(zhǔn)備一臺裝有ubuntu20.04系統(tǒng)X86主機(jī),內(nèi)存最低配置要求16G。
硬件配置肯定是多多益善了,配置越高,編譯過程就更加的縱享絲滑了!
1.2 下載repo腳本文件
注冊碼云gitee賬號。
注冊碼云SSH公鑰,請參考碼云幫助中心。
安裝git客戶端和git-lfs并配置用戶信息。
git config --global user.name “yourname”
git config --global user.email “your-email-address”
git config --global credential.helper store
安裝碼云repo工具,可以執(zhí)行如下命令。
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果沒有權(quán)限,可下載至其他目錄,并將其配置到環(huán)境變量中chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
1.3 獲取OpenHarmony標(biāo)準(zhǔn)系統(tǒng)源碼
推薦版本OpenHamony 4.0 release。
通過repo + ssh 下載(需注冊公鑰,請參考碼云幫助中心)。
export WORK_SPACE=/home/xxx/OpenHarmony #替換成自己定義的workspace路徑
export PROJ_ROOT=$WORK_SPACE/4.0-release
mkdir $WORK_SPACE
mkdir $PROJ_ROOT
cd $PROJ_ROOT
repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v4.0-Release --no-repo-verify
repo sync -c
repo forall -c ‘git lfs pull’
1.4 獲取編譯工具鏈
使用安裝包方式獲取編譯工具鏈。
sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±m(xù)ultilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby openjdk-11-jdk libtinfo5 npm dosfstools parted kpartx genext2fs
1.5 執(zhí)行prebuilts
在源碼根目錄下執(zhí)行腳本,安裝編譯器及二進(jìn)制工具。
cd $PROJ_ROOT
bash build/prebuilts_download.sh
2.代碼下載與整合
2.1 下載phytium OH_4.0_release E2000適配源碼
創(chuàng)建存放phytiym phytium OH_4.0_release源碼的目錄,進(jìn)到該目錄,下載phytium OH_4.0_release E2000適配源碼:
export PHY_DEV=$WORK_SPACE/phytium_device
mkdir $PHY_DEV
cd $PHY_DEV
git clone https://gitee.com/phytium_embedded/phytium-openharmony-device.git
2.2 整合phytiym device vendor相關(guān)源碼
通過前面的步驟,我們下載好了相關(guān)飛騰部分的修改。是時候?qū)⑵浜腿氲进櫭芍鞲闪恕_@里我們貼心的為開發(fā)者準(zhǔn)備了一鍵構(gòu)建腳本,我們這里執(zhí)行腳本!
./phytium_env.sh $PROJ_ROOT 1
THE OHOS_PATH_ROOT /home/xxx/OpenHarmony/4.0-release
sync phytium env start!
sync device_soc_phytium
sync device_soc_phytium end
sync device_board_phytium
sync device_board_phytium end
sync vendor_phytium
sync vendor_phytium end
sync kernel
sync kernel end
applay 0001_drivers_peripheral.patch
applay 0001_foundation_arkui_ace_engine.patch
applay 0001_foundation_graphic_graphic_2d.patch
sync phytium end!
這里我們需要傳入兩個參數(shù): 第一個是鴻蒙的根目錄。 第二個是指設(shè)備ID,1對應(yīng)e2000,2對應(yīng)phytiumpi-firefly
代碼中默認(rèn)是文件系統(tǒng)是存放在sata磁盤,使用其他不同的存儲介質(zhì),fstab文件及啟動參數(shù)會有差異,更換不同的介質(zhì)需要修改對應(yīng)的fstab文件,具體修改方法參考《OpenHarmony多種存儲介質(zhì)配置說明》。
3.代碼編譯
3.1 OpenHarmony編譯
cd $PROJ_ROOT
./build.sh --product-name e2000 --ccache --target-cpu arm64
編譯成功提示:
post_process
=====build e2000 successful.
編譯完成,我們進(jìn)入到out目錄查看生成的文件:
cd out/e2000/packages/phone/images/
tree
.
├── kernel
│ ├── dtb
│ │ ├── e2000d-demo-board.dtb
│ │ └── e2000q-demo-board.dtb
│ ├── EFI
│ │ └── BOOT
│ │ ├── bootaa64.efi
│ │ └── grub.cfg
│ └── Image
├── boot_uboot.img
├── ramdisk.img
├── system.img
├── updater.img
├── userdata.img
└── vendor.img
4 directories, 10 files
可以看到,其中生成了內(nèi)核和系統(tǒng)相關(guān)鏡像文件!
默認(rèn)只會生成uboot啟動需要的boot_uboot.img,UEFI啟動的boot鏡像需要通過手動執(zhí)行make_boot.sh腳本進(jìn)行生成,腳本運(yùn)行需要sudo權(quán)限,請用有sudo權(quán)限的賬戶執(zhí)行該腳本。
cd out/e2000/packages/phone/images/
sh ./make_boot.sh . efi
腳本執(zhí)行日志如下參考,執(zhí)行成功后會在當(dāng)前目錄下生成boot_efi.img
making efi boot image…
src path:./boot/, dis image name:./boot_efi.img, size:64M, block size:4096
mkfs.fat 4.1 (2017-01-24)
mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
[sudo] password for xxxx:
<<<<< make efi boot image success.
4.鏡像燒寫
目前提供了兩種鏡像燒錄方式,按分區(qū)燒錄與整體鏡像燒錄,可以根據(jù)硬件形態(tài)選擇合適的燒錄方式。
4.1 按分區(qū)燒錄
1.硬盤分區(qū)
準(zhǔn)備一塊SATA硬盤,刪除原有分區(qū)后,在linux環(huán)境下,使用fdsik命令分區(qū),創(chuàng)建4個分區(qū),依次為boot,system,vendor,userdata,根據(jù)實(shí)際情況設(shè)定,比如可以設(shè)定為500M,3G,1G,10G。p1 500MB for BOOT/EFIp2 3GB for systemp3 1G for vendorp4 10G for data
fdisk命令詳細(xì)使用方法可自行百度谷歌,或者參考飛騰嵌入式 LINUX 用戶 手冊中的磁盤分區(qū)部分內(nèi)容。
2.將這三個分區(qū)并格式化為ext4,sdX中的X燒寫之前先用df命令確認(rèn)一下是多少,可能是b,c…等,這里一定要注意不要燒錯。
sudo mkfs.ext4 sdx1
sudo mkfs.ext4 sdx2
sudo mkfs.ext4 sdx3
sudo mkfs.ext4 sdx4
使用dd命令將3.1 OpenHarmony編譯章節(jié)編譯生成的鏡像文件燒寫到對應(yīng)分區(qū)中。
sudo dd if=boot_uboot.img of=/dev/sdX1 bs=1M
sudo dd if=system.img of=/dev/sdX2 bs=1M
sudo dd if=vendor.img of=/dev/sdX3 bs=1M
如果是UEFI啟動,燒錄boot分區(qū)時,需要燒入boot_efi.img
重要的事情說三篇,不要燒錄userdata分區(qū)!只需要將sdx4格式化為ext4格式就OK了!
4.2 整體鏡像燒錄
1.使用generate_image.sh工具打包鏡像。
確保你的賬戶有sudo權(quán)限,進(jìn)入鏡像生成目錄,執(zhí)行g(shù)enerate_image.sh腳本
cd out/e2000/packages/phone/images/
#uboot啟動
./generate_image.sh
#UEFI啟動
./generate_image.sh efi
打包時會有如下打印信息:
start generate phytium_oh_xxx.img
start creating empty image, please wait…
…
…
losetup loopdevice…
generate phytium_oh_xxx.img successfully!!!
2.將生成的整體鏡像燒入磁盤 Linux環(huán)境下,使用dd命令燒錄即可.
$sudo dd if=phytium_oh_xxx.img of=/dev/sdb bs=1M
也可以在windows環(huán)境下,使用win32Diskimager、rufus、balenaEtcher等燒錄工具進(jìn)行燒錄。
5.設(shè)備啟動
將燒寫好的SATA硬盤, 連接串口線,連接到e2000 EVB板上。上位機(jī)的串口調(diào)試工具波特率設(shè)置為115200,上電開機(jī)。
5.1 Uboot啟動
在開機(jī)階段,按回車,設(shè)置uboot環(huán)境變量
setenv bootargs console=ttyAMA1,115200 earlycon=p1011,0x2800d000 root=/dev/ram0 elevator=deadline rootwait rw loglevel=6 hardware=e2000 rootfstype=ext4 initrd=0x93000000,90M cma=256M
setenv bootcmd “ext4load scsi 0:1 0x90100000 e2000q-demo-board.dtb;ext4load scsi 0:1 0x90200000 Image;ext4load scsi 0:1 0x93000000 ramdisk.img;booti 0x90200000 - 0x90100000”
saveenv
boot
這里的設(shè)備樹,以手上實(shí)際的調(diào)試設(shè)備為準(zhǔn)!因?yàn)閑2000系列有不同的版本,這里我的測試板子是e2000q,所以設(shè)備樹就是e2000q-demo-board.dtb了!
5.2 UEFI啟動
啟動參數(shù)已經(jīng)在燒寫EFI分區(qū)時已寫好,上電后,會直接進(jìn)入系統(tǒng)。文章來源:http://www.zghlxwxcb.cn/news/detail-854909.html
代碼代碼倉庫
https://gitee.com/phytium_embedded/phytium-openharmony-device文章來源地址http://www.zghlxwxcb.cn/news/detail-854909.html
到了這里,關(guān)于E2000/飛騰派運(yùn)行OpenHarmony 4.0的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!