[文章]龙芯openharmony 【2】启动分析

阅读量0
0
5
开源项目见:

1 启动文件和链接脚本
龙芯开发板的板级代码位于:deviceloongsonls1c300b_hrst 文件夹
其中,启动文件位于 deviceloongsonls1c300b_hrstsrclib 文件夹下,文件名:
start.S 文件
链接脚本:deviceloongsonls1c300b_hrst 文件夹下
ld.script 文件
图片2.png
可以看到链接的地址是 0x80200000,也就是说我们编译出来的固件要加载到这个地址运行。

2系统启动流程
代码启动流程图如下,首先 start 函数会做芯片相关初始化,然后跳转到main函数,接下来会调用bsp_init进行板级初始化,包括串口初始化等,接下来进入 run_los 函数,进行LOS_KernelInit内核初始化,create_test_task创建测试线程,最后调用LOS_Start启动内核。
流程如下:
图片3.png

3main函数
启动文件 start.S 中会执行CPU相关的初始化,例如内存初始化、代码拷贝、BSS段清零等。最后会执行main函数,如下:
图片4.png
我们来看下main函数:
图片5.png
可以看到main函数首先执行 bsp_init 进行板级初始化,
bsp_init 函数主要执行串口初始化、硬浮点初始化,中断初始化等,最后打印CPU时钟:
图片6.png
clk_print_all 函数打印的CPU时钟信息可以在通过打印看到,如下:
图片7.png

执行完 bsp_init 初始化后,会开始执行 run_los 执行openharmony内核,代码如下:
图片8.png

create_test_task 会根据相关的宏创建对应的测试线程,开发者可以根据需要打开相应测试:
图片9.png

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友