【NCU100】上电后程序执行顺序,System_Init函数的作用?

拙见成章 |浏览1923次
收藏|2015/06/10 11:29

定义这个函数有什么用,还有__main的作用(网上搜索):

在ADS1.2中__main()作为c语言的入口函数,它主要做了以下工作:
1.把RO,RW从他们的加载域复制到他们的运行域中去(可以用在LINKER中设置RO=,RW=,来确定,也可以用scatter文件来定义)
2.初始化ZI域
3.跳到__rt_entry.
而库函数__rt_entry()会完成以下工作:
1.调用__rt_stackheap_init()设置stack和heap
2.调用__rt_lib_init()初始化相应的库函数,
3.调用main(),即是我们自己的应用程序了
4.调用exit()来处理main()函数的返回值
从上面我们可以看到__main()运行时库主要是初始化一些东西,然后跳到用户的main()中去,所以我们不用__main()函数初始化运行环境的时候,要自己编写相应的代码来完成相应的内容

那在这个空函数添加什么内容会造成错误呢,我尝试添加了main函数中一般的初始化函数(NUC100Series.h),单步调试直接跳过了

满意回答

2022/09/06 18:00

在 Start_up_xxxxx.S这个启动文件里,可以看到复位后先执行函数 System_Init(),才又跳转去 __main(),这是留给客户”复位后立即做一些事情或功能“的地方。

Angus

其他回答(0)
0人关注该问题
+1
 加载中...