想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
前言
本文介绍了在VScode中编写程序源码,如何将源码编译成二进制文件,宏命令,以及一些爆红问题的处理,IntelliSense设置,屏蔽内置的 test suite方法
一、编写程序源码
1、准备开发套件
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
2、建立目录
ps1:获取虚拟机ip地址确保虚拟机处于开机状态
ps2:如何获取虚拟机ip地址,下载编译源码可以看我的另一篇文章 https://ost.51cto.com/posts/24912打开VScode,点击左上角file,点击open folder,输入两个\ 和虚拟机ip地址
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
双击home文件夹,进去到1.1.3根目录,选择1.1.1根目录文件夹打开。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
打开之后…
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
3、编写源码
打开 applications\sample\wifi-iot\app\startup 点击左上角新建文件图标 新建hello.c文件
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
下面编写C程序代码,保存文件。
- ps1:其中 #include “ohos_init.h” 为OpenHarmony特定的头文件。
- ps2:SYS_RUN为ohos_init.h头文件定义的一个宏。
- ps3:这里爆红先不急。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
4、编写编译脚本
ps:千万要注意有两个BUILD.gn。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
先打开 applications\sample\wifi-iot\app\startup\BUILD.gn。
需要把helloworld做成静态库,把source_set改成static_library。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
定义库名称,静态库需要编译的源文件,include目录,保存文件。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
再打开 applications\sample\wifi-iot\app\BUILD.gn。
ps:features字段用于指定业务模块,使目标模块参与编译,保存文件。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
二、将源码编译成二进制文件
打开虚拟机 进入 OpenHarmony 源码根目录,选中1.1.3,鼠标右击选择在终端打开。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
输入:
hb build -f
查看编译结果,编译成功完成。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
三、将二进制文件烧录到开发板
编译生成的固件位置
两个\ 虚拟机 IP\home\lushikai\openharmony\1.1.3\out\hispark_pegasus。
wifiiot_hispark_pegasus\Hi3861_wifiiot_app_allinone.bin。
首先,连接开发板,打开HiBurn,进行初始配置。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
选择固件打开。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
烧录
ps:老方法,不会烧录可以看另一篇文章 https://ost.51cto.com/posts/24912烧录成功,点击disconnect。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
四、查看程序运行结果
打开MobaXterm,连接好开发板串口。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
按下开发板RST键,开始运行。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
查看输出。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
五、OpenHarmony启动的8个阶段
宏命令
core: CORE_INIT()
core system service: SYS_SERVICE_INIT()
core system feature: SYS_FEATURE_INIT()
system startup: SYS_RUN()
system service: SYSEX_SERVICE_INIT()
system feature: SYSEX_FEATURE_INIT()
application-layer service: APP_SERVICE_INIT()
application-layer feature: APP_FEATURE_INIT()
六、VScode的IntelliSense设置
ps:有智能感知功能,自动代码补全,代码提示,代码导航,右键跳转,实时错误检查等。
回到VScode,打开写好的hello.c文件,鼠标移动到爆红位置会显示错误提示。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
在有错误提示地方有个黄色小灯泡点击打开,点击edit includePath setting。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
找到包含路径。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
添加路径。
${workspaceFolder}/utils/native/lite/include
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
ok~
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
建议的额外设置,完成之后保存文件。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
ps:如果#include
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
打开配置文件,""输入路径 注意第二行后面别忘了加逗号 然后保存文件。
${workspaceFolder}/device/hisilicon/hispark_pegasus/sdk_liteos/platform/os/Huawei_LiteOS/components/lib/libc/musl/include
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
ok~
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
七、VScode解析 .gn 文件
1、安装gn.exe
PS:这一步有能力自行操作,安不安装并不影响编译。
下载 gn-windows-amd64.zip。
建议将 gn.exe 放到 C:\Windows\System32\ 不需要配置环境变量。
2、安装GN插件 GNFormat插件
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
3、格式化 .gn 文件
回到start up目录下的BUILD.gn文件。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
app目录下的BUILD.gn文件。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
按下 Alt+Shift+F 进行格式化。
八、屏蔽内置的 test suite
ps1:test suite会影响观察程序运行结果。
ps2:注意删除的还有86行的逗号。
删除86-93行,保存文件,重新编译。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
回到虚拟机,找到1.1.3源码根目录选择在终端打开,进行全量编译。
hb build -f
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
打开HiBurn,对重新编译的Hi3861_wifiiot_app_allinone.bin固件进行烧录。
ps:烧录前先把MobaXterm关闭。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
打开MobaXterm,连接串口,按下RST键。
可以看到串口输出日志不再包含测试输出了。
【OpenHarmony快速入门】使用VSCode编写程序源码以及基础设置-开源基础软件社区
九、快速查找文件和代码
按内容查找。
grep -nr xxx
按文件名查找
find . -name 'xxx'
想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com