2021-10-26 16:29:52
0
Hi3861 LiteOs-m启动介绍:
https://bbs.elecfans.com/jishu_2168238_1_1.html
从asm文件和map文件梳理函数调用关系并修改启动log信息
MODULE_INIT调用关系
- basestartupbootstrap_liteservicessourcecore_main.h
- MODULE_CALL
- MODULE_BEGIN
- MODULE_END
- __zinitcall_##name##_start
- __zinitcall_##name##_end
复制代码
SYS_INIT调用关系
- SYS_CALL
- SYS_BEGIN
- SYS_END
- __zinitcall_sys_##name##_start
- __zinitcall_sys_##name##_end
复制代码
为什么可以这样调用?
编译链接阶段生成指定的段,初始化时调用指定段
- SYS_RUN(LedExampleEntry);
- #define SYS_RUN(func) LAYER_INITCALL_DEF(func, run, "run")
- #define LAYER_INITCALL_DEF(func, layer, clayer)
- LAYER_INITCALL(func, layer, clayer, 2)
- #define LAYER_INITCALL(func, layer, clayer, priority)
- static const InitCall USED_ATTR __zinitcall_##layer##_##func
- __attribute__((section(".zinitcall." clayer #priority ".init"))) = func
复制代码
最后变成了
- zinitcall.run2.init
- zinitcall.run.start
复制代码
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
侵权投诉