本帖最后由 jf_89761755 于 2020-10-19 07:32 编辑

Linux下的鸿蒙

--tjCFeng

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

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

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

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

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

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

下面和我一来起操作,简单低级的东西可以直接略过,转载请注明出处及作者。

一、开天辟地:

1.拆机装硬盘;

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

安装硬盘.jpg (241.57 KB, 下载次数: 0)

2020-10-10 19:04 上传

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

2.安装 Lubuntu18.04.5;

不像 Ubuntu 那样臃肿,Lubuntu 可算是在各个发行版中比较精简的,ARM 上都能流畅操作更别说

x86 的了。最新版 Lubuntu20.04 是一个重大的更新版,但用起来不习惯了,最后还是退一步选择了

Lubuntu18.04.5。

安装系统.jpg (200.46 KB, 下载次数: 0)

2020-10-10 18:33 上传

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

二、编译环境:

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

dpkg-reconfigure dash

rm -RF /bin/sh

ln -s /bin/bash /bin/sh

1.鸿蒙编译环境:

1) 安装:

安装环境支持工具.png (163.01 KB, 下载次数: 0)

2020-10-10 18:34 上传

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

Lubunt18.04 是 python3.6,已验证可用。真要是碰到不行的时候想办法装 3.8 以上版本吧。

2)下载:

wgethttps://repo.huaweicloud.com/HarmonyOS/compiler/gn/1523/linux/gn.1523.tar

wgethttps://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar

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

wgethttps://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar

wgethttps://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

pip3 install 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)鸿蒙代码:

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

tar xzvf code-1.0.tar.gz

鸿蒙分区.png (139.44 KB, 下载次数: 0)

2020-10-10 18:36 上传

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

2.改造编译命令:

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

修改生成rootfs代码.png (270.55 KB, 下载次数: 0)

2020-10-10 18:38 上传

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

3.编译内核:

python build.py ipcamera_hi3516dv300 -b debug

生成所需的文件.png (244.02 KB, 下载次数: 0)

2020-10-10 18:39 上传

编译出的文件保存在 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 版本,直接选择对应的操作系统下载。

下载VSCode.png (92.45 KB, 下载次数: 0)

2020-10-10 18:40 上传

安装VSCode.png (122.62 KB, 下载次数: 0)

2020-10-10 18:40 上传

https://code.visualstudio.com/Download

dpkg -i code_1.49.3-1601661857_amd64.deb

2.编写代码:

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

证引用路径是否正确,不必等待编译的时候再看报错信息。

建立代码目录.png (115.48 KB, 下载次数: 0)

2020-10-10 18:42 上传

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.生成烧录镜像文件:

重新生成rootfs.png (189.56 KB, 下载次数: 0)

2020-10-10 18:44 上传

./make.sh

./rootfs.sh

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

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

1) PL2303

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

PL23303串口.png (142.88 KB, 下载次数: 0)

2020-10-10 18:45 上传

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

2) apt install minicom

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

Minicom设置保存.png (74.52 KB, 下载次数: 0)

2020-10-10 18:46 上传

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

TTL信息.png (68.95 KB, 下载次数: 0)

2020-10-10 18:47 上传

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

3) apt install tftpd-hpa

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

tftpd配置.png (116.85 KB, 下载次数: 0)

2020-10-10 18:48 上传

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

3.烧录并运行程序:

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

uboot.png (79.61 KB, 下载次数: 0)

2020-10-10 18:49 上传

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

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里即可开机自动进系统。

tftp_rootfs.png (63.7 KB, 下载次数: 0)

2020-10-10 18:51 上传

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

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

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

运行程序.png (82.46 KB, 下载次数: 0)

2020-10-10 18:52 上传

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

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

信息.png (75.87 KB, 下载次数: 0)

2020-10-10 18:53 上传

全文完。转载请注明出处及作者。

3

鸿蒙能用linux许可证,【HarmonyOS HiSpark AI Camera试用连载 】Linux下的鸿蒙相关推荐

  1. 【HarmonyOS HiSpark AI Camera试用连载 】AI_Camera_Hi3516DV300开发套件非专业开箱

    0.序   HarmonyOS面世已经有一段时间了,但是实际能上手体验还是头一遭.借由此次申请的AI_Camera_Hi3516DV300开发套件来实际体验一下这未知的鸿蒙.感谢电子发烧友能够提供这么 ...

  2. 【HarmonyOS HiSpark IPC DIY Camera试用连载4 】 鸿蒙OS内核liteos-a如何启动第一个用户进程init_lite

    [HarmonyOS HiSpark IPC DIY Camera试用连载4 ] 鸿蒙OS内核liteos-a如何启动第一个用户进程init_lite 1. 鸿蒙OS编译知识 2. 从编译过程看鸿蒙O ...

  3. 【HarmonyOS HiSpark IPC DIY Camera试用连载1】开箱组装初印象

    [HarmonyOS HiSpark IPC DIY Camera试用连载1] 开箱组装初印象 一. 开箱资料 二. 包含的元件 三. 组装步骤 四.原装功能演示 五. 注意事项 /* 本人为文章作者 ...

  4. 鸿蒙IPC摄像机,【HiSpark IPC DIY Camera试用连载 】第二篇 视频的人脸检测

    [HiSpark IPC DIY Camera试用连载 ]第二篇 视频的人脸检测, 本帖最后由 瑟寒凌风 于 2021-1-14 00:13 编辑 实在的,ipc本身就带有这个功能,只要摄像头出现画面 ...

  5. 鸿蒙开发板 Hi3816 Wi-Fi IoT 智能家居套件试用连载 - LiteOS万物互联

    HiSpark Wi-Fi IoT 智能家居套件 10.8号休假回来荣获一份豪礼,我感到非常开心.我很荣幸参加电子发烧友举行的HarmonyOS开发板试用活动,获得了鸿蒙OS WiFi lot sma ...

  6. 对鸿蒙操作系统和AI Camera Hi3516dDV300 开发过程的记录和理解

    对鸿蒙操作系统和AI Camera Hi3516dDV300 开发过程的记录和理解 写在前面 鸿蒙的资料比较少,各方面出现报错之后可能无法解决,所以在开始开发的时候,千万不要乱搞,不然会出现很多重大错 ...

  7. 华为HarmonyOS鸿蒙系统介绍,华为鸿蒙OS系统怎么样 华为HarmonyOS鸿蒙系统介绍

    华为鸿蒙OS系统怎么样?华为在8月9日的2019华为开发者大会上正式发布了华为HarmonyOS鸿蒙系统,大家知道这个系统具体是用在哪些产品上的吗?有哪些功能呢?能兼容别的系统吗?下面小编为大家带来了 ...

  8. 鸿蒙os开发者创新大赛,【高校|加速孵化鸿蒙生态,华为首届HarmonyOS开发者创新大赛揭榜】...

    『联盟·玩科技摘要_高校|加速孵化鸿蒙生态,华为首届HarmonyOS开发者创新大赛揭榜』即将到来的万物互联时代,则为开发者带来了又一次引领时代的机会."华为消费者业务软件部总裁.AI与智慧 ...

  9. 《HarmonyOS开发 - IPC Camera开发笔记》第2章 HiSpark IPC Camera开发环境搭建(基于V1.1.4)

    开发环境: 开发系统:Ubuntu 20.04 Harmony版本:code-v1.1.4-LTS.tar HiSpark IPC Camera基于华为海思Hi3518芯片,支持LiteOS.Open ...

最新文章

  1. gis怎么改鼠标滚轮缩放_ArcGIS鼠标滚轮方向之代码篇
  2. FPGA实现智能小车竞速
  3. DataGridView控件中显示图片及其注意事项 【z】
  4. 本来中午打算应付下随便吃点,可是连盐都没有放的辣椒炒蛋实在是令人不快...
  5. mysql5.6 主从配置_CentOS7+mysql5.6配置主从
  6. Java NIO网络编程之群聊系统
  7. 支持带有书签的PDF生成的文本编辑工具Typora
  8. 3.看板方法---一种成功秘诀
  9. 批处理获取网卡名称(附修改IP、网关、DNS脚本)
  10. 脚本之家python专题_一个简单的python读写文件脚本
  11. windows系统下压力测试工具(cpu使用率,内存使用率,磁盘使用率,磁盘空间)
  12. 计算机网络英文缩写汇总,计算机网络名词英文缩写解释大全
  13. 雷电模拟器 手机模拟器 安装 连接
  14. 错误Could not locate executable null\bin\winutils.exe in the Hadoop binaries的解决方案
  15. 银行钱数(带小数位)转大写
  16. IBM员工回顾与华为合作20周年:这是一支有激情的团队
  17. 高等数学(导数的应用)
  18. GPU与CPU性能比较
  19. 云堡垒机和信创堡垒机主要区别讲解
  20. sentence Bert解读及代码示例

热门文章

  1. 计算机操作系统之期末考试复习——作业调度和进程调度
  2. 邵东一中2021年高考成绩查询,邵东市2020年高考捷报全市文科理科状元在一中 创新一本上线破千...
  3. kml文件批量转shapefile
  4. 若依集成企业微信步骤
  5. C++数据结构——中序遍历二叉树
  6. 北航计算机学院面向对象(2023 第一单元)
  7. 推荐7个免费在线学习平台,免费自学网站
  8. 低年级趣味写话——绘本故事《小猪变形计》
  9. Please move or remove them before you switch branches.Aborting
  10. 从校园到职场,学会做个成年人