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