一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實(shí)現(xiàn)鴻蒙系統(tǒng)編譯、燒錄不跨平臺(tái)的?

電子工程師 ? 來源:HarmonyOS社區(qū) ? 作者:HarmonyOS社區(qū) ? 2020-11-11 09:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

拿到鴻蒙開發(fā)板 AI Camera 已經(jīng)一個(gè)星期了,期間查找了眾多的資料教程來學(xué)習(xí),無奈各位老師們的講解起點(diǎn)很高,各自的環(huán)境又不盡相同,經(jīng)驗(yàn)碎片化很嚴(yán)重;各種工具和設(shè)置之間的切換也容易讓人摸不著頭腦,非常不利于我們這種剛剛接觸鴻蒙的小小白們?nèi)腴T。鑒于此我把目前的一點(diǎn)點(diǎn)操作流程初步總結(jié)一下,希望當(dāng)作自己的記錄也能為別人提供一些幫助。

本文將盡量簡(jiǎn)潔明了通俗易懂來描述各個(gè)環(huán)節(jié)的操作,包括以下四大步驟:


一、開天辟地:安裝一個(gè)只有 Linux操作系統(tǒng)實(shí)現(xiàn)全部工作,而不是在 Windows+各種虛擬機(jī)下完成,既提高運(yùn)行效率又減少很多額外的操作,即使只有 4G 小內(nèi)存的機(jī)器也不怕了;


二、編譯環(huán)境:編譯工具就那么幾種,下載解壓配置一下環(huán)境變量就可以使用,固定的操作模式就能編譯出用于燒寫的鏡像文件;


三、開發(fā)環(huán)境:光燒寫沒有用,還得能把自己的文件添加進(jìn)去,這步來說明怎樣最簡(jiǎn)單的生成自己的可執(zhí)行文件;


四、燒寫文件:鴻蒙目前的弱點(diǎn),Windows 下不能編譯,Linux 下又沒有燒寫工具。雖然 vscode有個(gè) DevEcoDevice 插件,但是網(wǎng)絡(luò)不好我始終也安裝不完全,沒法用。所以只好自己動(dòng)手,Linux 下敲命令來燒寫吧。

下面和我一來起操作,簡(jiǎn)單低級(jí)的東西可以直接略過。

一、開天辟地:


1.拆機(jī)裝硬盤;

完全拋棄 Windows,因?yàn)榍捌谝呀?jīng)折騰的不像樣了,Windows 本身+Linux 虛擬機(jī)+vscode+瀏覽器+一個(gè)內(nèi)存盤,筆記本 8G 的內(nèi)存用起來提心吊膽,所以干脆只用 Linux,有強(qiáng)迫癥的我連硬盤都不希望和 Windows 共用一個(gè)。

翻出來一個(gè)很老的機(jī)械硬盤,跑 Linux 一樣飛快。拆機(jī)僅供參考,拆壞了可別找我。


2.安裝 Lubuntu18.04.5;

不像 Ubuntu 那樣臃腫,Lubuntu 可算是在各個(gè)發(fā)行版中比較精簡(jiǎn)的,ARM 上都能流暢操作更別說x86 的了。最新版 Lubuntu20.04 是一個(gè)重大的更新版,但用起來不習(xí)慣了,最后還是退一步選擇了
Lubuntu18.04.5。

http://cdimage.ubuntu.com/lubuntu/releases/,各種版本自己挑吧,別太老就行。

二、編譯環(huán)境:

由于系統(tǒng)默認(rèn)的是 dash 而不是 bash,所以首先把它改掉。

dpkg-reconfigure dash
rm -RF/bin/sh
ln -s /bin/bash /bin/sh

1.鴻蒙編譯環(huán)境:


1) 安裝:

apt-get install dosfstools mtools zip libffi-dev python3-setuptools python3-pip -y

Lubunt18.04 是 python3.6,已驗(yàn)證可用。真要是碰到不行的時(shí)候想辦法裝 3.8 以上版本吧。

2)下載:

https://repo.huaweicloud.com/HarmonyOS/compiler/gn/1523/linux/gn.1523.tar
https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar

https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar

https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar
https://files.pythonhosted.org/packages/8a/f1/d98a89231e779b079b977590efcc31249d959c8f1d4b5858cad69695ff9c/kconfiglib-14.1.0-py2.py3-none-any.whl

也可以用瀏覽器下載,保存到哪里都可以。

3)解壓:

tar xvf gn.1523.tar
tar xvf ninja.1.9.0.tar

tar xvf hc-gen-0.65-linux.tar
tar xvf llvm-linux-9.0.0-34042.tar
pip3install kconfiglib-14.1.0-py2.py3-none-any.whl

我把鴻蒙所有相關(guān)的東西放到了一個(gè)單獨(dú)的分區(qū)里,工具也都扔在那里。

4) 配置:

找到用戶目錄下的.bashrc 文件,把這些東西添加進(jìn)去。我用的是 root 登錄的,那么就在/root下找,其他用戶在 /home/登錄名 中。

export PATH=/HarmonyOS/Env/gn:$PATH
export PATH=/HarmonyOS/Env/ninja:$PATH
export PATH=/HarmonyOS/Env/hc-gen:$PATH
export PATH=/HarmonyOS/Env/llvm/bin:$PATH

告訴當(dāng)前用戶這些工具從哪里能找到。保存后重啟一下,或者 source ~/.bashrc 來生效。

5)鴻蒙代碼:

https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz

tar xzvf code-1.0.tar.gz

其中/HarmonyOS 是鴻蒙分區(qū),可以隨意更改。Env 就是上面解壓的那些工具,OHOS 是源代碼解壓改名的目錄,編譯要從這里開始。先不要急著編譯,還要做一下小小的改動(dòng),否則需要重新編譯。

2.改造編譯命令:

用文本工具打開/HarmonyOS/OHOS/build/lite/gen_rootfs.py 文件,

搜索 if os.path.exists(rootfs):語句,然后注釋掉三行,編譯后就不會(huì)自動(dòng)刪除 rootfs 目錄了。

3.編譯內(nèi)核:

python build.py ipcamera_hi3516dv300 -bdebug

編譯出的文件保存在 out 目錄下, 其中 OHOS_Image.bin、 rootfs.img、 userfs.img 用于燒寫,rootfs 目錄保存自己編譯后可執(zhí)行文件并可以單獨(dú)生成 rootfs.img 文件, 不用全部重新編譯。默認(rèn)情況下,編譯后會(huì)將 rootfs 目錄刪除。雖然保留了 rootfs.tar 文件,但是每次還得解壓再使用,麻煩。rootfs 的詳細(xì)用法稍后說明。

三、開發(fā)環(huán)境:

1.Linux 下的 IDE:

Linux 下開發(fā) C 語言的 IDE 有很多,不過我感覺最好用的還是 vscode,小巧靈活,眾多的插件也能實(shí)現(xiàn)復(fù)雜的功能。其實(shí)嚴(yán)格來說,vscode 不是一個(gè) IDE,只能算是一個(gè) DE。但是這是一個(gè)非常出色的 DE,可以看成是一個(gè)工具的集合,把本不該它做的事也都做了。

不夸了,趕緊安裝。官網(wǎng)上已經(jīng)提供了編譯好的 Linux 版本,直接選擇對(duì)應(yīng)的操作系統(tǒng)下載。

https://code.visualstudio.com/Download
dpkg -i code_1.49.3-1601661857_amd64.deb

2.編寫代碼:

隨便找個(gè)目錄存放自己的代碼,目錄文件的內(nèi)容包括代碼的各個(gè).c、.h,編譯用的 make.sh 文件,和生成燒寫鏡像的 rootfs.sh 文件。程序的內(nèi)容就不多說了,想寫什么就寫什么,要保證頭文件引用對(duì)了。使用 IDE 開發(fā)的好處就是支持代碼跳轉(zhuǎn),在 vscode 中配置好頭文件所在的路徑,按住 ctrl,然后鼠標(biāo)點(diǎn)擊頭文件名即可打開對(duì)應(yīng)的文件,便于查看,點(diǎn)擊函數(shù)名或變量等也可以,這樣在開發(fā)過程中就能驗(yàn)證引用路徑是否正確,不必等待編譯的時(shí)候再看報(bào)錯(cuò)信息。

3.單一程序的編譯:

make.sh 和 rootfs.sh 在使用之前請(qǐng)先編輯一下,把 ROOT 變量改為自己的正確的路徑。

make.sh:編譯出可執(zhí)行文件,并拷貝到 rootfs/bin 目錄下。

ROOT=/HarmonyOS/OHOS
clang -target arm-liteos

--sysroot=$ROOT/prebuilts/lite/sysroot/
-o Test *.c
cp Test $ROOT/out/ipcamera_hi3516dv300/rootfs/bin/

rootfs.sh:直接生成 rootfs.img 文件,不用再去全部重新編譯。
ROOT=/HarmonyOS/OHOS
rm $ROOT/out/ipcamera_hi3516dv300/rootfs.img
$ROOT/kernel/liteos_a/tools/scripts/make_rootfs/rootfsimg.sh
$ROOT/out/ipcamera_hi3516dv300/rootfs vfat

可執(zhí)行文件的名字是在 make.sh 里指定的,叫 Test,也可以改為其他名字,拷貝到 rootfs/bin里的就是這個(gè) Test。

四、燒錄并運(yùn)行:

1.生成燒錄鏡像文件:

./make.sh
./rootfs.sh

運(yùn)行完之后會(huì)先把之前的 rootfs.img 刪除,再重新生成一個(gè)。如果不放心可以把原來的文件改名備份一下,再等著新文件的產(chǎn)生。

2.安裝燒錄用到的工具:

1) PL2303

AI Camera 開發(fā)板上有個(gè) TTL 的調(diào)試串口,并且附送了一條 PL2303 的串口線。Lubuntu自帶 PL2303 的驅(qū)動(dòng),插上后從設(shè)備中可以找到這個(gè)串口,ttyUSB0。

不一定都叫這個(gè)名字,根據(jù)實(shí)際情況而定。

2) aptminicom

Windows 下有許多串口調(diào)試工具,Linux 下也有,比較常用的是 minicom。安裝之后要先指定一下使用哪個(gè)串口。

minicom -s,然后選擇 A,把默認(rèn)的串口號(hào)改為/dev/ttyUSB0,按回車返回,再選擇保存。

重新運(yùn)行 minicom,給開發(fā)板上電,可以看到 uboot 的啟動(dòng)信息,串口通訊成功。

3) apt tftpd-hpa

修改/etc/default/tftpd-hpa 文件中的 TFTP_DIRECTORY 為鏡像文件所在的路徑和目錄。

修改配置文件之后保存,重新運(yùn)行 tftpd,service tftpd-hpa restart。

3.燒錄并運(yùn)行程序:

燒寫之前,uboot 的環(huán)境變量要先設(shè)置一下,最主要的是本機(jī) MAC 地址、本機(jī) IP、ServerIP、bootargs 和 bootcmd 等,可以使用 printenv 來顯示,修改后用 save 保存,reset 生效。

請(qǐng)參照上圖設(shè)置,偷懶不寫出來了。

Windows 下有海思專用的燒寫工具,看著功能很復(fù)雜,其實(shí)萬變不離其中,歸根結(jié)底就是幾條命令:
mw.b 0x81000000 0xFF 0x4f0000
tftp 0x81000000 OHOS_Image.bin
mmc write 0x0 0x81000000 0x800 0x2780

mw.b 0x81000000 0xFF 0xe05c00
tftp 0x81000000 rootfs.img
mmc write 0x0 0x81000000 0x5000 0x702e

mw.b 0x81000000 0xFF 0x3200000
tftp 0x81000000 userfs.img
mmc write 0x0 0x81000000 0xc800 0x19000

reset

分別燒寫了三個(gè)文件, kernel、 rootfs、 userfs。燒寫的過程就是先通過 tftp 下載文件到內(nèi)存中,再保存到 mmc 里。這樣可以直接脫離工具使用命令來完成。三個(gè)文件都成功后需要重啟才能運(yùn)行。運(yùn)行后還會(huì)停在 uboot 里,手動(dòng)執(zhí)行 go 0x80000000 來進(jìn)入系統(tǒng)。因?yàn)檫@個(gè) go我沒有讓它直接運(yùn)行, 為了方便燒寫。要自動(dòng)運(yùn)行的話, 把 go 0x80000000 加在環(huán)境變量的 bootargs里即可開機(jī)自動(dòng)進(jìn)系統(tǒng)。

這是其中一個(gè)文件下載的樣子,如果沒有保存直接 go 了是不會(huì)執(zhí)行新系統(tǒng)的。

另外多說一句,千萬不要用串口直接燒寫程序,會(huì)慢到你懷疑人生。不要問我怎么知道的,因?yàn)槲覒岩蛇^了。

燒寫完畢進(jìn)入系統(tǒng),趕緊來找一下自己的程序,在/bin 下。

運(yùn)行./bin/Test,大功告成。

最后打印一下系統(tǒng)的信息,留個(gè)紀(jì)念吧。

責(zé)任編輯:lq

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

    關(guān)注

    0

    文章

    679

    瀏覽量

    33981
  • 燒錄
    +關(guān)注

    關(guān)注

    8

    文章

    289

    瀏覽量

    36341
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2642

    瀏覽量

    68081

原文標(biāo)題:我是如何實(shí)現(xiàn)鴻蒙系統(tǒng)編譯、燒錄不跨平臺(tái)的?

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ArkUI-X平臺(tái)技術(shù)落地-華為運(yùn)動(dòng)健康(二)

    代碼依賴了鴻蒙Next系統(tǒng)的原生能力,我們將該原生能力包稱為A包;與此同時(shí),我們開發(fā)平臺(tái)場(chǎng)景包,為了描述方便,我們將這個(gè)包命名為B包,B包的接口形式與數(shù)據(jù)結(jié)構(gòu)跟A包保持一致,但是B包
    發(fā)表于 06-18 23:04

    ArkUI-X平臺(tái)技術(shù)落地-華為運(yùn)動(dòng)健康(一)

    NEXT系統(tǒng)上運(yùn)動(dòng)健康的架構(gòu)設(shè)計(jì)如下: 1.新建獨(dú)立平臺(tái)的Entry模塊,該平臺(tái)Entry模塊用于
    發(fā)表于 06-18 22:53

    ArkUI-X平臺(tái)應(yīng)用改造指南

    ArkUI-X平臺(tái)應(yīng)用改造指南 現(xiàn)狀與訴求 隨著 HarmonyOS Next 5.0 版本正式發(fā)布,眾多開發(fā)者基于 ArkTS 語言為 HarmonyOS Next 系統(tǒng)開發(fā)了大量應(yīng)用,這極大
    發(fā)表于 06-16 23:05

    鴻蒙5開發(fā)寶藏案例分享---線程性能優(yōu)化指南

    發(fā)現(xiàn)鴻蒙寶藏:線程序列化性能優(yōu)化實(shí)戰(zhàn)指南 大家好呀!今天在翻鴻蒙文檔時(shí)挖到一個(gè)超級(jí)實(shí)用的工具—— DevEco Profiler的序列化檢測(cè)功能 !平時(shí)用<span class
    發(fā)表于 06-12 17:13

    ArkUI-x平臺(tái)Bridge最佳實(shí)踐

    代碼中?到了?持平臺(tái)的API,此時(shí)?想平臺(tái)可以利?此機(jī)制將不?持
    發(fā)表于 06-10 23:06

    Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅

    編譯鴻蒙上可高效運(yùn)行的Native產(chǎn)物,探索Kotlin JS和Kotlin Native在鴻蒙平臺(tái)上的適配落地及其性能優(yōu)化;打通端層和
    發(fā)表于 06-04 16:46

    ArkUI-X平臺(tái)框架接入指南

    和Save location,點(diǎn)擊Finish,等待模版工程創(chuàng)建完成。 編譯構(gòu)建生成平臺(tái)應(yīng)用 DevEco Studio可打包生成不同平臺(tái)的應(yīng)用包。 在主菜單欄,單擊Build &g
    發(fā)表于 05-18 18:21

    【貝啟科技BQ3568HM開源鴻蒙開發(fā)板深度試用報(bào)告】系統(tǒng)鏡像編譯燒錄

    于進(jìn)行圖形界面應(yīng)用的開發(fā)。貝啟科技BQ3568HM開源鴻蒙開發(fā)板配備了顯示屏,可以開發(fā)GUI應(yīng)用。 一、系統(tǒng)鏡像編譯 參考 BQ3568_代碼下載-開源鴻蒙技術(shù)交流-Bearkey-開
    發(fā)表于 03-16 10:53

    迅為RK3588開發(fā)板實(shí)時(shí)系統(tǒng)編譯-Preemption系統(tǒng)/ Xenomai系統(tǒng)編譯-編譯Linux實(shí)時(shí)系統(tǒng)

    這里以 buildroot 系統(tǒng)為例(其他 Linux 系統(tǒng)編譯步驟同)。 Buildroot 是一款集成的編譯集合包,解決了以前交叉編譯麻煩的問題,本小節(jié)將介紹buildroot 鏡
    發(fā)表于 01-21 14:15

    AIGC入門及鴻蒙入門

    模型,能夠生成與給定文本描述相符的圖像。 鴻蒙系統(tǒng)入門 1. 基礎(chǔ)知識(shí): 鴻蒙系統(tǒng)(HarmonyOS)是華為推出的一款分布式操作系統(tǒng),旨
    發(fā)表于 01-13 10:32

    迅為RK3588開發(fā)板實(shí)時(shí)系統(tǒng)編譯-Preemption系統(tǒng)/ Xenomai系統(tǒng)編譯-獲取Linux源碼包

    3.1 Preemption 系統(tǒng)/ Xenomai 系統(tǒng)編譯 3.1.1 獲取 Linux 源碼包 編譯環(huán)境說明: 本手冊(cè)使用的是迅為提供的編譯環(huán)境 ubuntu20.04,在網(wǎng)盤資
    發(fā)表于 01-09 11:03

    OpenHarmony源碼編譯燒錄鏡像教程,RK3566鴻蒙開發(fā)板演示

    本文介紹瑞芯微主板/開發(fā)板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示。搭載了瑞芯微RK3566四核處理器,樹莓派卡片電腦設(shè)計(jì),支持開源鴻蒙
    的頭像 發(fā)表于 12-30 10:08 ?834次閱讀
    OpenHarmony源碼<b class='flag-5'>編譯</b>后<b class='flag-5'>燒錄</b>鏡像教程,RK3566<b class='flag-5'>鴻蒙</b>開發(fā)板演示

    鴻蒙端實(shí)踐-JS虛擬機(jī)架構(gòu)實(shí)現(xiàn)

    在Roma端方案中,JS虛擬機(jī)是框架的核心,負(fù)責(zé)執(zhí)行動(dòng)態(tài)化的JS代碼。在Android平臺(tái)采用了基于V8的J2V8,iOS平臺(tái)則使用了系統(tǒng)自帶的JSCore,而在HarmonyOS中
    的頭像 發(fā)表于 09-30 14:42 ?3000次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>跨</b>端實(shí)踐-JS虛擬機(jī)架構(gòu)<b class='flag-5'>實(shí)現(xiàn)</b>

    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊(cè)第四部分固件編譯第十四章非設(shè)備樹Android4.4系統(tǒng)編譯

    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊(cè)第四部分固件編譯第十四章非設(shè)備樹Android4.4系統(tǒng)編譯
    的頭像 發(fā)表于 09-12 15:43 ?934次閱讀
    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊(cè)第四部分固件<b class='flag-5'>編譯</b>第十四章非設(shè)備樹Android4.4<b class='flag-5'>系統(tǒng)編譯</b>

    人工智能編譯器與傳統(tǒng)編譯器的區(qū)別

    人工智能編譯器(AI編譯器)與傳統(tǒng)編譯器在多個(gè)方面存在顯著的差異。這些差異主要體現(xiàn)在設(shè)計(jì)目標(biāo)、功能特性、優(yōu)化策略、適用范圍以及技術(shù)復(fù)雜性等方面。以下是對(duì)兩者區(qū)別的詳細(xì)探討,旨在全面解析其內(nèi)在差異。
    的頭像 發(fā)表于 07-17 18:19 ?2961次閱讀