多个应用程序使用INIT_APP_EXPORT初始化,先后顺序怎么确定

发表在 BSP2020-3-25 20:24 [复制链接] 4 72

本帖最后由 zhf 于 2020-3-25 20:26 编辑
# O" J: T- G$ H" L- P2 t- v4 t1 t' f: a0 x! x- S' N% B$ e
据我多年的单片机开发经验,有些初始化顺序不对的话,貌似会造成冲突的问题
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2020-3-25 21:12:10 | 显示全部楼层
[td]
5 U  f0 Y& N3 a! C" W% F1 Q
初始化顺序
宏接口
描述
1INIT_BOARD_EXPORT(fn)

非常早期的初始化,此时调度器还未启动

使用该宏后,fn 将属于 “board init functions”

2INIT_PREV_EXPORT(fn)

主要是用于纯软件的初始化、没有太多依赖的函数

使用该宏后,fn 将属于 “pre-initialization functions”

3INIT_DEVICE_EXPORT(fn)

外设驱动初始化相关,比如网卡设备

使用该宏后,fn 将属于 “device init functions”

4INIT_COMPONENT_EXPORT(fn)

组件初始化,比如文件系统或者 LWIP

使用该宏后,fn 将属于 “components init functions”

5INIT_ENV_EXPORT(fn)

系统环境初始化,比如挂载文件系统

使用该宏后,fn 将属于 “enviroment init functions”

6INIT_APP_EXPORT(fn)

应用初始化,比如 GUI 应用

使用该宏后,fn 将属于 “application init functions”


5 C6 _7 E0 F, X7 t, F8 k5 R) g- s可以根据上面的加载顺序,加载自己的程序就行了
* |  ]8 {, R6 f/ d( ?
使用道具 举报 回复
发表于 2020-3-25 21:32:38 | 显示全部楼层
按字母顺序排的,可以取巧定好名称。
' A3 W% k' O8 t; s8 h% D5 y1 [2 H5 g5 b! \
如果需要绝对的顺序,取消这几个的自动初始化,写个init函数 ,然后再让这个Init自动执行。
使用道具 举报 回复
发表于 2020-3-25 22:06:18 | 显示全部楼层
IAR和MDK初始化的顺序会不一致 遇到过问题,后来就不敢把多个放在同一级自动初始化了,还是老老实实手动去调用API
使用道具 举报 回复
发表于 3 天前 | 显示全部楼层
我怎么感觉是按文件位置先后位置去排的。我也遇到这个问题了,我每个初始化都加了打印,结果发现文件在工程里,往上移他就会先运行,往下移就会后运行。keil工程左边project你文件的顺序。
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

zhf

  1. 20 主题
  2. 212 帖子
  3. 212 积分

Ta的主页 发消息

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表