_c_int00 是c语言程序的入口.首先上电后,系统执行reset矢量代码,该代码是我们写的话,我们就令cpu转到c_int00,这段程序为c语言运行作准备,准备工作做好后,就转到c语言的main()。 如果reset矢量代码不是我们写的,是ti写的,那么就执行bootloader程序,该程序先将从某个外部得到的真正程序放在规定的地方,然后转过去执行该代码。
那么如何决定reset矢量代码是ti写的还是我们写的,那就看复位后mp/mc脚的电平。 要是调试的时候我们的mp/mc脚选择了我们不希望的方式,怎么办?(在调试的时候一般不管bootloader的,只有项目最后成功了才管),用jtag来控制。 C程序开始运行时,必须首先初始化C运行环境,这是通过c_int0函数完成的,这个函数在运行支持库(rts,runtime-support library)中。连接器会将这个函数的入口地址放置在复位中断向量处,使其可以在初始化时被调用。c_int0函数进行以下工作以建立C运行环境:为系统堆栈产生.stack块,并初始化堆栈指针。从.cinit块将初始化数据拷贝到.bss块中相应的变量。调用main函数,开始运行C程序。用户可以对c_int0函数进行修改,但修改后的函数必须完成以上任务。 |