4364|5

73

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

小熊派-鸿蒙-季 BearPi-HM Nano 3 + 在vscode下进行编写源码过程分析 [复制链接]

上次按照教程,一步一步的开始hello_world的例程的开发。由于涉及的步骤较多,一时也没太弄明的是怎么就成功的。这次先停一下,对hello_world的开发过程进行分析梳理。

由于上次使用的是vim操作,在这种多文件构成的工程目录下,还是很不直观,为此,在ubuntu操作系统下下载了vscode,并配置了C和GN文件的高亮插件,这样效率高起来的。需要注意的是vscode只是用来修改与查看代码使用的,真正来编译还是在终端下通过hb命令来完成。

这里插一个小经验,在使用hb build 命令时,必须在/home/bearpi/proj/bearpi-hm_micro_small目录下,否则在其它目录下会重新下载。之所以在这个目录下,也可能是第一次使用hb build命令时在这个目录下下载过,而其它目录下不支持。也可能是hb是在这个目录的根目录下,目前没仔细调查。

在vscode下可以直观地看到目录结构。这里需要编辑的文件主要集中在applications、build、vendor下。

1、applications文件夹下

主要用于存放源代码 。按习惯一般每个应用程序都在建有一个文件夹,里边至少存放一个c文件和一个gn文件,c为业务代码,BUILD.gn为编译脚本

hello_world.c比较简单,就是printf信息。这里主要看看BUILD.gn

###首先导入 gni 组件,将源码hello_world.c编译成hello_world_lib库文件###
import("//build/lite/config/component/lite_component.gni")

executable("hello_world_lib") {
    output_name = "hello_world"###输出的可执行文件名称由output_name定义为hello_world###
    sources = [ "hello_world.c" ]###源文件为hello_world.c###
    include_dirs = []
    defines = []
    cflags_c = []
    ldflags = []
}
###将hello_world_lib打包成 lite_component,命名为my_app组件###
lite_component("my_app") {
    features = [
        ":hello_world_lib",
    ]
}

这里的my_app要注意下面有对应的地方。

2、build文件夹下

接下来处理两个json,其中一个是build/lite/components/applications.json,主要是在"components": []中添加一个{},主要对新建的组件名称、目录、目标文件进行声明。

3、vendor文件夹下

另一个json文件是vendor/bearpi/bearpi_hm_micro/config.json,主要是在"subsystem": "applications",下添加单板配置文件,内容比较简单,

{
"subsystem": "applications",
    "components": [
      { "component": "bearpi_sample_app", "features":[] },
      { "component": "my_sample", "features":[] },
      { "component": "bearpi_screensaver_app", "features":[] }
    ]
  },

最后,就可以在终端编译后,通过stm32Programer下载到开发板上,在Moba里输入指令“./bin/hello_world”执行写入的demo程序

总结一下,主要过程(参考gitee教程)

  1. 在config.json中添加"my_sample"组件,"my_sample"组件在applications.json中被定义。
  2. 在my_sample的targets里面添加"my_app"的lite_component名称
  3. "my_app"字段链接到my_first_app文件下BUILD.gn里面的lite_component。
  4. lite_component里指定lib库为"hello_world_lib"。
  5. 通过hello_world_lib里面sources来指定要编译的.c文件,并通过output_name来指定生成的可执行程序名称

同时注意几个json文件与gn文件内的关系图。可参考如下关联走向图。

只要这个关联关系的名称对应的上,基本都能编译通过。

磨刀不误砍柴工,今天就先到这吧。

最新回复

pcycharm 挺好的呀,IDE没什么不好,不要听别人说什么高手都用记事本。   详情 回复 发表于 2022-4-12 16:17
点赞 关注

回复
举报

6960

帖子

11

TA的资源

版主

沙发
 
Json的添加,一直是个麻烦活,感觉郁闷的一件事。

点评

是的,嵌入式这边老想往互联网上靠,编译环境你一个我一个,json,xml,yml的配置,这完全是没必要的事情。现在搞个单片机还要把互联网配置那一套学一遍。。。  详情 回复 发表于 2022-4-11 16:57
 
 

回复

7608

帖子

18

TA的资源

五彩晶圆(高级)

板凳
 
lugl4313820 发表于 2022-4-10 08:18 Json的添加,一直是个麻烦活,感觉郁闷的一件事。

是的,嵌入式这边老想往互联网上靠,编译环境你一个我一个,json,xml,yml的配置,这完全是没必要的事情。现在搞个单片机还要把互联网配置那一套学一遍。。。

点评

以后还请你多多指教,我弄Python整到后面还是用pcycharm弄。  详情 回复 发表于 2022-4-11 17:52
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

6960

帖子

11

TA的资源

版主

4
 
freebsder 发表于 2022-4-11 16:57 是的,嵌入式这边老想往互联网上靠,编译环境你一个我一个,json,xml,yml的配置,这完全是没必要的事情 ...

以后还请你多多指教,我弄Python整到后面还是用pcycharm弄。

点评

pcycharm 挺好的呀,IDE没什么不好,不要听别人说什么高手都用记事本。  详情 回复 发表于 2022-4-12 16:17
 
 
 

回复

7608

帖子

18

TA的资源

五彩晶圆(高级)

5
 
lugl4313820 发表于 2022-4-11 17:52 以后还请你多多指教,我弄Python整到后面还是用pcycharm弄。

pcycharm 挺好的呀,IDE没什么不好,不要听别人说什么高手都用记事本。

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

6
 

在ubuntu下打开vscode,可直接输入code

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表