工具/软件:TI C/C++编译器
大家好
TI_RTOS 内核(SYS/BIOS)用户指南 SPRUEX3U 2018年2月
第 3.1章 SYS/BIOS 启动顺序
1. CPU 复位后立即执行目标/器件专用 CPU 初始化(从 c_int00开始)。
请参阅的《汇编语言工具用户指南》中的"程序加载和运行"一章
您的目标系列,了解有关此步骤和 cinit()步骤的详细信息。
2.在 cinit()之前,运行"reset functions"表(xdc.runtime.Reset 模块提供此挂钩)。
调用 Reset.Fxns[]数组中指定的函数。 这些复位功能只在上调用
在运行程序之前执行复位的平台。
3.运行 cinit()以初始化 C 运行时环境。
4.运行用户提供的"第一个函数"(xdc.runtime.Startup 模块提供此挂钩)。
5.运行所有模块初始化函数。
6.运行用户提供的"最后功能"(xdc.runtime.Startup 模块提供此挂钩)。
7.运行 Pinit()。
8.运行 main()。
那么、我在 TMDSCNCD28388D 板上调试的示例 tcpEchoF2838X 示例、
包含*。cfg 文件并相应地包含此文件
路径 SYS/BIOS ->系统->启动->模块设置
初始大小选项 启动设置
堆大小0 用户复位函数- 空
堆栈大小2048 最大模块初始化通过- 32
参数大小0
在 C 运行时初始化之前调用的函数 模块初始化前调用的函数
不适用 第一个函数0 - ti.sysbios.heaps.HeapMem.init
Firstfunction 1 - ti_SysBIOS_family_ARM_f2838x_init_Boot_initStartup
第一个函数2 - ti_sysbios_hal_hwi_initStack
第一项功能3 - ti.sysbios.family.arm.m3.Hwi.initNVIC
模块初始化后调用的函数
不适用
"模块初始化前调用的函数"列表中的函数1。 - ti_sysbios_family_arm_f2838x_init_resetISR、
跳转至汇编器标准 _c_int00、
但是,第 3.1章相应地提到,它应该在第1步中,但在第4步中完成。
因此、我对函数列表的正确性有一些怀疑。
"模块初始化前调用的函数"列表中是否有正确的内容?
为什么将此函数放置在模块初始化之前调用的函数中
但不会到达
1) 1)重 置矢量、 如 用户指南 SPRUEX3U 2018年2月所述
或
2) 2) C Runtime 初始化前调用的函数
我之所以问它、是因为上面提到的示例在 CM 应用程序加载和重新执行时出现问题(请参阅主题 "TMDSCNCD28388D:TCP/IP 调试")
此致
Andrii Shevchuk