2287|3

25

帖子

0

TA的资源

一粒金砂(中级)

【先楫HPM6750EVK2】-4.OpenHarmony源码简析及驱动LED [复制链接]

在开发板的OpenHarmony代码编译完成后,简单的学习了一下源代码。OpenHarmony是支持liteos-a,liteos-m以及linux内核的,这里HPM6700虽然频率很高,功能也很强大,但是还是属于MCU类别的,所以使用了liteos-m内核。
001.png
在device/soc/hpmicro/mpm6700/liteos_m目录下有main.c文件,这个就是main函数的入口文件了。
002.png
在linux下使用vi打开文件,发现有部分乱码,这一看就是不同系统使用不同的回车换行符导致的。
003.png
为了统一开发环境,这里在windows上使用VSCode通过远程SSH连接到Ubuntu,打开源代码的main.c,此时就不会有乱码出现了。
通过分析main函数可以看到,main函数首先进行了板级初始化,串口初始化,打印banner,打印时钟频率等等。
004.png
这些代码实现在了device/board/hpmicro/hpm6750evk2/liteos_m/board.c中。
005.png
main函数最后调用LOS_Start();启动操作系统。
006.png
在 vendor/hpmicro/hpm6750evk2/application目录下的BUILD.gn中可以看到,在应用模块中只启用了lwip,gpio模块被注释掉了。
007.png
我们这里取消注释并保存文件,以便下一次编译时能够把gpio模块编译进去。
008.png
我们在看看gpio模块中的输出部分app_gpio.out.c,这里主要是通过GpioDriverTest函数创建一个任务GpioDriverOutTestTask,这个任务的主要功能就是初始化LED三色灯所在的GPIO,并在While循环中依次点亮和熄灭三色LED灯。间隔为500毫秒。最后使用APP_FEATURE_INIT把这个任务添加到代码中。APP_FEATURE_INIT是一个在头文件 ohos_init.h 中定义的带参数的宏,这个宏的作用就是指示编译器把某个函数(如:本例程中的 GpioDriverTest),编译到某个代码段中,系统启动之后,会遍历这个代码段中的所有函数并执行。
009.png
重新编译后下载OHOS_Image.bin到本地。
010.png
使用HPMProgrammer工具把文件下载到开发板。
011.png
使用串口终端连接到开发板串口后重新启动系统,系统正常启动并输出信息,在最后位置可以看到日志,这里调用了GpioDriverOutTestTask这个任务。
012.gif
再看开发板上的三色LED灯已经循环闪烁了。

最新回复

咱位版块希望有多位大神来搞搞openHarmony。   详情 回复 发表于 2023-2-2 08:59

回复

3932

帖子

3

TA的资源

版主

再看开发板上的三色LED灯已经循环闪烁了。openharmony编译成功。


回复

3468

帖子

0

TA的资源

版主

这么高的频率我觉得跑分辨率很高的屏幕也不是问题~


回复

3932

帖子

3

TA的资源

版主

咱位版块希望有多位大神来搞搞openHarmony。


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

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/5 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表