0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现鸿蒙系统编译、烧录不跨平台的?

电子工程师 来源:HarmonyOS社区 作者:HarmonyOS社区 2020-11-11 09:59 次阅读

拿到鸿蒙开发板 AI Camera 已经一个星期了,期间查找了众多的资料教程来学习,无奈各位老师们的讲解起点很高,各自的环境又不尽相同,经验碎片化很严重;各种工具和设置之间的切换也容易让人摸不着头脑,非常不利于我们这种刚刚接触鸿蒙的小小白们入门。鉴于此我把目前的一点点操作流程初步总结一下,希望当作自己的记录也能为别人提供一些帮助。

本文将尽量简洁明了通俗易懂来描述各个环节的操作,包括以下四大步骤:


一、开天辟地:安装一个只有 Linux操作系统实现全部工作,而不是在 Windows+各种虚拟机下完成,既提高运行效率又减少很多额外的操作,即使只有 4G 小内存的机器也不怕了;


二、编译环境:编译工具就那么几种,下载解压配置一下环境变量就可以使用,固定的操作模式就能编译出用于烧写的镜像文件;


三、开发环境:光烧写没有用,还得能把自己的文件添加进去,这步来说明怎样最简单的生成自己的可执行文件;


四、烧写文件:鸿蒙目前的弱点,Windows 下不能编译,Linux 下又没有烧写工具。虽然 vscode有个 DevEcoDevice 插件,但是网络不好我始终也安装不完全,没法用。所以只好自己动手,Linux 下敲命令来烧写吧。

下面和我一来起操作,简单低级的东西可以直接略过。

一、开天辟地:


1.拆机装硬盘;

完全抛弃 Windows,因为前期已经折腾的不像样了,Windows 本身+Linux 虚拟机+vscode+浏览器+一个内存盘,笔记本 8G 的内存用起来提心吊胆,所以干脆只用 Linux,有强迫症的我连硬盘都不希望和 Windows 共用一个。

翻出来一个很老的机械硬盘,跑 Linux 一样飞快。拆机仅供参考,拆坏了可别找我。


2.安装 Lubuntu18.04.5;

不像 Ubuntu 那样臃肿,Lubuntu 可算是在各个发行版中比较精简的,ARM 上都能流畅操作更别说x86 的了。最新版 Lubuntu20.04 是一个重大的更新版,但用起来不习惯了,最后还是退一步选择了
Lubuntu18.04.5。

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

二、编译环境:

由于系统默认的是 dash 而不是 bash,所以首先把它改掉。

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

1.鸿蒙编译环境:


1) 安装:

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

Lubunt18.04 是 python3.6,已验证可用。真要是碰到不行的时候想办法装 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

我把鸿蒙所有相关的东西放到了一个单独的分区里,工具也都扔在那里。

4) 配置:

找到用户目录下的.bashrc 文件,把这些东西添加进去。我用的是 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

告诉当前用户这些工具从哪里能找到。保存后重启一下,或者 source ~/.bashrc 来生效。

5)鸿蒙代码:

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

tar xzvf code-1.0.tar.gz

其中/HarmonyOS 是鸿蒙分区,可以随意更改。Env 就是上面解压的那些工具,OHOS 是源代码解压改名的目录,编译要从这里开始。先不要急着编译,还要做一下小小的改动,否则需要重新编译。

2.改造编译命令:

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

搜索 if os.path.exists(rootfs):语句,然后注释掉三行,编译后就不会自动删除 rootfs 目录了。

3.编译内核:

python build.py ipcamera_hi3516dv300 -bdebug

编译出的文件保存在 out 目录下, 其中 OHOS_Image.bin、 rootfs.img、 userfs.img 用于烧写,rootfs 目录保存自己编译后可执行文件并可以单独生成 rootfs.img 文件, 不用全部重新编译。默认情况下,编译后会将 rootfs 目录删除。虽然保留了 rootfs.tar 文件,但是每次还得解压再使用,麻烦。rootfs 的详细用法稍后说明。

三、开发环境:

1.Linux 下的 IDE:

Linux 下开发 C 语言的 IDE 有很多,不过我感觉最好用的还是 vscode,小巧灵活,众多的插件也能实现复杂的功能。其实严格来说,vscode 不是一个 IDE,只能算是一个 DE。但是这是一个非常出色的 DE,可以看成是一个工具的集合,把本不该它做的事也都做了。

不夸了,赶紧安装。官网上已经提供了编译好的 Linux 版本,直接选择对应的操作系统下载。

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

2.编写代码:

随便找个目录存放自己的代码,目录文件的内容包括代码的各个.c、.h,编译用的 make.sh 文件,和生成烧写镜像的 rootfs.sh 文件。程序的内容就不多说了,想写什么就写什么,要保证头文件引用对了。使用 IDE 开发的好处就是支持代码跳转,在 vscode 中配置好头文件所在的路径,按住 ctrl,然后鼠标点击头文件名即可打开对应的文件,便于查看,点击函数名或变量等也可以,这样在开发过程中就能验证引用路径是否正确,不必等待编译的时候再看报错信息

3.单一程序的编译:

make.sh 和 rootfs.sh 在使用之前请先编辑一下,把 ROOT 变量改为自己的正确的路径。

make.sh:编译出可执行文件,并拷贝到 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

可执行文件的名字是在 make.sh 里指定的,叫 Test,也可以改为其他名字,拷贝到 rootfs/bin里的就是这个 Test。

四、烧录并运行:

1.生成烧录镜像文件:

./make.sh
./rootfs.sh

运行完之后会先把之前的 rootfs.img 删除,再重新生成一个。如果不放心可以把原来的文件改名备份一下,再等着新文件的产生。

2.安装烧录用到的工具:

1) PL2303

AI Camera 开发板上有个 TTL 的调试串口,并且附送了一条 PL2303 的串口线。Lubuntu自带 PL2303 的驱动,插上后从设备中可以找到这个串口,ttyUSB0。

不一定都叫这个名字,根据实际情况而定。

2) aptminicom

Windows 下有许多串口调试工具,Linux 下也有,比较常用的是 minicom。安装之后要先指定一下使用哪个串口。

minicom -s,然后选择 A,把默认的串口号改为/dev/ttyUSB0,按回车返回,再选择保存。

重新运行 minicom,给开发板上电,可以看到 uboot 的启动信息,串口通讯成功。

3) apt tftpd-hpa

修改/etc/default/tftpd-hpa 文件中的 TFTP_DIRECTORY 为镜像文件所在的路径和目录。

修改配置文件之后保存,重新运行 tftpd,service tftpd-hpa restart。

3.烧录并运行程序:

烧写之前,uboot 的环境变量要先设置一下,最主要的是本机 MAC 地址、本机 IP、ServerIP、bootargs 和 bootcmd 等,可以使用 printenv 来显示,修改后用 save 保存,reset 生效。

请参照上图设置,偷懒不写出来了。

Windows 下有海思专用的烧写工具,看着功能很复杂,其实万变不离其中,归根结底就是几条命令:
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

分别烧写了三个文件, kernel、 rootfs、 userfs。烧写的过程就是先通过 tftp 下载文件到内存中,再保存到 mmc 里。这样可以直接脱离工具使用命令来完成。三个文件都成功后需要重启才能运行。运行后还会停在 uboot 里,手动执行 go 0x80000000 来进入系统。因为这个 go我没有让它直接运行, 为了方便烧写。要自动运行的话, 把 go 0x80000000 加在环境变量的 bootargs里即可开机自动进系统。

这是其中一个文件下载的样子,如果没有保存直接 go 了是不会执行新系统的。

另外多说一句,千万不要用串口直接烧写程序,会慢到你怀疑人生。不要问我怎么知道的,因为我怀疑过了。

烧写完毕进入系统,赶紧来找一下自己的程序,在/bin 下。

运行./bin/Test,大功告成。

最后打印一下系统的信息,留个纪念吧。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译
    +关注

    关注

    0

    文章

    607

    浏览量

    32321
  • 烧录
    +关注

    关注

    8

    文章

    213

    浏览量

    35153
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2598

    浏览量

    65128

原文标题:我是如何实现鸿蒙系统编译、烧录不跨平台的?

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    华为鸿蒙生态快速崛起,纯血鸿蒙系统引领行业风潮,带来百万级岗位需求

    华为消费者业务CEO余承东表示:“鸿蒙系统实现了全栈自研的AI框架、大模型、设计系统、编程框架、编程语言、编译器等技术,拥有核心技术、全栈能
    的头像 发表于 01-23 10:09 449次阅读

    【飞腾派4G版免费试用】飞腾派openwrt系统编译/烧录方法

    编译 cp target/linux/phytium/diffconfig .config make V=99 注意:第一次编译建议开启make -jn多核编译参数 二、飞
    发表于 12-07 13:40

    华为鸿蒙系统

    华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的操作系统。 华为鸿蒙
    发表于 11-02 19:39

    鸿蒙 OS 应用开发初体验

    的操作系统平台和开发框架。HarmonyOS 的目标是实现设备的无缝协同和高性能。 DevEco Studio 对标 Android Studio,开发
    发表于 11-02 19:38

    浅谈单片机的烧录方式

    单片机的烧录方式主要可以分为三种:在电路编程(In-Circuit Programming,简称ICP)、在应用编程(In-Application Programming,简称IAP)和在系统编程(In-System Programming,简称ISP)。
    发表于 10-16 17:02 775次阅读

    鸿蒙操作系统的前世今生

    上层接口和分布式能力的统一。 借助以上优势, 鸿蒙操作系统实现不同终端设备之间的极速连接、硬件互助和资源共享,为不同的群体带来升级体验: 对消费者而言, 鸿蒙操作
    发表于 10-08 19:55

    平台编译工具cmake的简单使用

    在使用不同平台的电脑时,使用的编译也会不一样,如果想把一个项目在不同平台编译,那有什么方式可以实现这样的需求呢,这就是这篇文章就来介绍其中
    发表于 08-14 10:40 437次阅读
    跨<b class='flag-5'>平台</b><b class='flag-5'>编译</b>工具cmake的简单使用

    安信可开源硬件:小安派Demo固件编译烧录指南

    小安派-开源硬件 01.克隆Ai-Thinker仓库 02.拉取子模块 03.编译烧录 04.示例——烧录AiPi-Cam ●准备AiPi-Cam-D与USB转TTL,接线如下 ●编译
    的头像 发表于 08-07 17:43 357次阅读
    安信可开源硬件:小安派Demo固件<b class='flag-5'>编译</b>和<b class='flag-5'>烧录</b>指南

    博流BL808三核编译运行上手指南

    bl808是三核异构架构,分为m0、lp、d0,使用的都是平台哥的RISC-V核,分别为E907/E902/C906,每个核需要单独编译烧录到对应的位置,通过本文可以了解三核编译
    的头像 发表于 08-07 17:14 2175次阅读
    博流BL808三核<b class='flag-5'>编译</b>运行上手指南

    小安派Demo固件编译烧录指南

    小安派Demo固件编译烧录指南
    发表于 08-06 09:35 290次阅读
    小安派Demo固件<b class='flag-5'>编译</b>和<b class='flag-5'>烧录</b>指南

    SLG47004 在系统编程指南

    SLG47004 在系统编程指南
    发表于 07-04 18:51 0次下载
    SLG47004 在<b class='flag-5'>系统编</b>程指南

    介绍下Verilog系统完整的8种编译指令

    以反引号(`)开始的某些标识符是 Verilog 系统编译指令。编译指令为 Verilog 代码的撰写、编译、调试等提供了极大的便利。
    的头像 发表于 05-29 16:43 1067次阅读

    为什么我们要掌握Linux系统编程?

    为什么我们要掌握Linux系统编程?
    的头像 发表于 05-17 10:00 582次阅读

    全新适配鸿蒙生态,Cocos引擎助力3D应用开发

    ,与Cocos所具有的平台、低功耗、高性能三大核心特点不谋而合。Cocos作为内容开发工具,将在鸿蒙生态中焕发出强劲的生命力。 Cocos Creator编辑器 二、产品创新体验 Cocos作为国内拥有
    发表于 04-14 11:37

    全新适配鸿蒙生态,Cocos引擎助力3D应用开发

    为创新体验介绍:1、平台适配鸿蒙生态后,加上Cocos Creator本身拥有优秀的平台能力,支持将内容一键打包成移动应用/小程序/We
    发表于 04-14 09:25