飛漫軟件開發(fā)團隊近期完成了合璧操作系統(tǒng)(HybridOS)設備側(cè)在 RK3308 上的移植。在本次移植中,使用的開發(fā)板是瑞芯微公司出品的 ROC-RK3308B-CC-Plus 開發(fā)板,其上 CPU 為 rockchip rk3308。ROC-RK3308B-CC-Plus 開發(fā)板的主要技術參數(shù)為:ARM 四核 64 位 Cortex-A35 內(nèi)核,主頻 1.3GHz 512M DDR3 4GB eMMC 支持 RMII 接口,可擴展 10M/100M bps 以太網(wǎng) 支持 SDIO 3.0,可擴展 2.4GHz/5.0GHz WiFi 和 Bluetooth 4.2/5.0 單/多合一模塊
HybridOS Lite 運行在 RISC-V 開發(fā)板上的實拍操作視頻如下: HybridOS 運行在 RK3308 開發(fā)板上 HybridOS 主要技術特點HybridOS 設備側(cè) R2011 版本在開發(fā)板上,主要使用的軟件組件為:- MiniGUI 5.0.3,多進程模式,合成圖式:
視頻中應用的啟動條、狀態(tài)欄、背景動畫等,基于合成圖式實現(xiàn)。 視頻中應用的縮小展示、切換、管理等,使用了 MiniGUI 在合成圖式下的定制合成器技術開發(fā)。 在瑞芯 PX30 開發(fā)板上,使用 DRM 圖形引擎;在全志 R818 開發(fā)板上使用 FB 圖形引擎。 - 采用的是純軟件渲染效果,暫未啟用 GPU。在使用 DRM 圖形引擎時,動畫流暢順滑,但在使用 FB 圖形引擎時,有丟幀現(xiàn)象。
- hiShell:用于啟動應用、切換應用、管理應用的外殼程序。
- hiWebKit:用于支撐 HTML5 及 HybridOS 擴展特性的 WebKit 擴展版本:
編譯并燒寫 ROC-RK3308B-CC-Plus 開發(fā)板本次所使用的開發(fā)板是 ROC-RK3308B-CC-Plus 開 發(fā)板,并帶 7 寸屏,屏幕分辨率為 1024 x 600。因此所使用的配置文件為 roc-rk3308b-cc-plus_rgb-7.0inch_qt_release_BoardConfig.mk。代碼的獲取升級 SDK$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip device-tree-compiler $ sudo apt-get install libfile-which-perl sed make binutils gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc libmpc3 git repo texinfo pkg-config cmake tree $ sudo apt-get install genext2fs $ sudo apt-get install p7zip-full $ sudo apt-get install gawk $ sudo apt-get install libncurses5-dev
$ mkdir Firefly-RK3308 $ cd Firefly-RK3308 $ 7zr x Firefly-RK3308_Linux_SDK_git_20190924.7z $ git reset --hard HEAD $ git remote -v $ git remote set-url gitlab https:///TeeFirefly/rk3308-linux.git $ git pull gitlab firefly:firefly
$ ./build.sh roc-rk3308b-cc-plus_rgb-7.0inch_qt_release_BoardConfig.mk $ ./build.sh uboot
編譯完,會生成 trust.img、rk3308_loader_xxx.bin、uboot.img 三個鏡像文件。
編譯 Kernel$ ./build.sh roc-rk3308b-cc-plus_rgb-7.0inch_qt_release_BoardConfig.mk $ ./build.sh kernel
最終生成的 kernel.img 和 resource.img 將會被打包進 zboot.img,更換內(nèi)核的時候,只需燒寫 zboot.img 即可。編譯 Buildroot前面編譯的是 uboot 和 kernel,現(xiàn)在編譯一些系統(tǒng)軟件,使用 buildroot。$ source buildroot/build/envsetup.sh 選擇firefly_rk3308_release $ make -j4 $ ./mkfirmware.sh
所有燒寫所需的鏡像都將會拷貝于 rockdev 目錄。 一鍵編譯為了簡化前面的編譯步驟,可以使用瑞芯微提供的一鍵編譯:$ ./build.sh roc-rk3308b-cc-plus_rgb-7.0inch_qt_release_BoardConfig.mk $ ./build.sh
最終生成 update.img,放在 rockdev 目錄下。 燒寫映像文件到開發(fā)板
$ cd tools/linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool_v1.38 $ chmod +x upgrade_tool $ sudo mv upgrade_tool /usr/sbin $ sudo chown root:root /usr/sbin/upgrade_tool $ sudo cp config.ini /usr/sbin
- 按住開發(fā)板上的 recovery 鍵不要松手;
- 拔掉 type-c 接口,使得開發(fā)板掉電;
- 插上 type-c 接口,使得開發(fā)板重新上電;
$ cd rockdev $ sudo upgrade_tool uf update.img
編譯 HybridOS 操作系統(tǒng)代碼的獲取使用下面的命令,獲得 HybridOS 代碼: $ git https://gitlab./hybridos/build-hybridos-rootfs.git $ cd build-hybridos-rootfs
代碼的編譯使用下面的命令,編譯 HybridOS: $ source build/envsetup.sh $ lunch 選擇: rk3308_hybridos $ make -j4
生成的文件,在 output/target 目錄下。 在開發(fā)板上運行 HybridOS$ cd output $ adb push target /userdata $ adb shell
// 添加環(huán)境變量 # vi /etc/profile export LD_LIBRARY_PATH=/userdata/target/usr/lib:/userdata/target/lib:$LD_LIBRARY_PATH export MG_RUNTIME_TMPDIR=/tmp
// 修改啟動腳本 # cd /etc/init.d/ # mv S50launcher ../ # vi S50launcher #!/bin/sh # # Start linux launcher... #
export LC_ALL='zh_CN.utf8' export LC_ADDRESS=zh_CN.UTF-8 export LC_IDENTIFICATION=zh_CN.UTF-8 export LC_MEASUREMENT=zh_CN.UTF-8 export LC_MONETARY=zh_CN.UTF-8 export LC_NAME=zh_CN.UTF-8 export LC_NUMERIC=zh_CN.UTF-8 export LC_PAPER=zh_CN.UTF-8 export LC_TELEPHONE=zh_CN.UTF-8 export LC_TIME=zh_CN.UTF-8
export LD_LIBRARY_PATH=/userdata/target/usr/lib:/userdata/target/lib:$LD_LIBRARY_PATH export MG_RUNTIME_TMPDIR=/tmp
cd /userdata/target/usr/sbin ./hibusd -d
cd /userdata/target/usr/bin ./hiinetd &
cd /userdata/target/usr/libexec ./mginit &
exit 0
// 設置字體 # cd /usr/share # ln -s /userdata/target/usr/share/mime mime # ln -s /userdata/target/usr/share/fonts fonts # cd fonts # /userdata/target/usr/bin/fc-list
// 添加鏈接 # cd /usr/libexec # ln -s /userdata/target/usr/libexec/samples samples # ln -s /userdata/target/usr/libexec/webkit2hbd-1.0/ webkit2hbd-1.0 # cd /usr/local # mkdir share # cd share # ln -s /userdata/target/usr/share/minigui/ minigui # cd /usr/local/share/minigui/res/ # ln -s /userdata/target/usr/share/fonts/ font
// 添加驅(qū)動 # cd /userdata/target/usr/lib # cp -fra gio /usr/lib
// 修改MiniGUI.conf # cd /userdata/target/libexec # vi MiniGUI.conf [system] gal_engine=drm defaultmode=1024x600-32bpp
ial_engine=singletouchkey mdev=/dev/input/mice mtype=IMPS2
[singletouchkey] touch_dev=/dev/input/event0
[cursorinfo] cursorpath=/userdata/target/usr/share/minigui/res/cursor/ cursornumber=0
[resinfo] respath=/userdata/target/usr/share/minigui/res/
[truetypefonts] font_number=1 name0=ttf-Source Sans Pro,SansSerif-rrncnn-0-0-ISO8859-1,UTF-8 fontfile0=/usr/local/share/minigui/res/font/sans-serif-hei-chinese-medium.ttf
// 修改wifi參數(shù) # cd /userdata/target/libexec # vi hybridos.cfg [wifi_test] ssid=your_wifi_ssid password=your_wifi_password
// 添加插件庫 # cd /opt # ln -sf /userdata/target/opt/view-renderers view-renderers
// 重新啟動 # sync # reboot
此時就可以看到 HybridOS 運行界面了。 注意:如果想要對 HybridOS 進行調(diào)試,通過 adb shll 登錄系統(tǒng),則需要運行下面的命令: export LD_LIBRARY_PATH=/userdata/target/usr/lib:/userdata/target/lib:$LD_LIBRARY_PATH export MG_RUNTIME_TMPDIR=/tmp
下載映像文件運行 HybridOS前面的步驟較為繁瑣,為了能讓用戶更快的體驗到 HybridOS,我們提供了映像文件。 $ sudo upgrade_tool uf update.img $ tar zxf target.tar.gz $ adb push target /userdata $ adb shell
# cd /userdata/target # ./setup
開發(fā)板將自動進行配置,并且重新啟動。重新啟動后,既可看見 HybridOS 界面。 后續(xù)計劃飛漫的研發(fā)團隊正在快馬加鞭的將合璧操作系統(tǒng)設備側(cè)的完全版本(HybridOS)移植到 D1 開發(fā)板上。屆時將完成 HybridOS 對 RISC-V 體系架構(gòu)的完全支持。支持合璧操作系統(tǒng),請點亮 GitHub 上 HybridOS 項目的星星吧:
|