DSP中的 - c - int00的问题
_c_int00是c语言程序的入口。 我们知道,在DSP启动后,系统会进入复位中断,此时复位中断服务函数为c_init00,此函数用于建立C环境,为进入main()函数进行系统初始化,主要工作是建立堆栈,初始化全局变量等。 全局变量的初始化:如果程序在链接时采用-c选项,则编译链接后的可执行程序会将全局变量的初始化放在c_init00()函数中进行,在此函数中会调用_auto_init(CINIT)函数,将.cinit段的内容拷入.bss中相应的变量中,此过程是在系统上电后进入main()函数之前执行的。 如果程序在链接时采用-cr选项,则编译后的可执行程序中全局变量需要使用loader进行初始化,这种方法一般用于在JTAG调试时,CCS即为loader。 系统上电复位后,首先执行reset矢量代码,如果这个代码是我们写的话,我们就令CPU转到c_int00,这段程序为c语言运行做准备。准备工作完成后,就转到c语言的main()。 如果reset矢量代码不是我们写的,是TI公司写的那么就执行bootloader程序,该程序将从某个外部得到的真正程序放在规定的地方,改后转过去执行该代码。 那么如何决定reset矢量代码是ti写的还是我们写的,那就看复位后mp/mc脚的电平。要是调试的时候我们的mp/mc脚选择了我们不希望的方式,怎么办?(在调试的时候一般不管bootloader的,只有项目最后成功了才管),用jtag来控制。 C程序开始运行时,必须首先初始化C运行环境,这是通过_c_int00函数来完成的,这个函数在运行支持库(rts.lib)中。连接器会将这个函数的入口地址放在复位中断向量中,使其可以在初始化时被调用。 _c_int00函数为建立C运行环境,需完成以下工作: l 为系统堆栈产生.stack块,并初始化堆栈指针; l 从.cinit块将初始化数据拷贝到.bss块中相应的变量; l 调用main函数,开始运行C程序; l 用户可以对c_int00函数进行修改,但修改后的函数必须完成以上任务。 关于C6000的引导过程: CPU复位后首先把系统程序加载到内部RAM或者外部高速RAM中,然后在RAM中运行, bootloader就是完成加载的过程。 C6000有3钟引导方式(1)无引导(2)ROM引导 (3)主机引导 我只用过ROM引导。 ROM引导加载过程: (1)当CPU的Reset引脚处于低电平状态时,BOOTMODE的引脚状态根据预设设定(我的目标版 上面有这几个开关可设置),RESET信号处于上升沿的时候,相应加载方式启动。 (2)ROM加载方式是通过DMA控制器,将外部ROM的一段固定大小的代码复制到内部RAM中(加 载时CPU处于stall状态),对于不同型号芯片,复制的代码大小不同。67X的应该是1KB (3)加载完毕后,CPU开始从0地址执行。 想象一下,有的程序都很大,1K是不能解决问题的,所以,一般在0地址处建立一个叫做 “bootloader”的段(代码小于1KB),这一小段程序也叫“引导程序”,上电或者重启后首 先执行它,完成将其余程序(真正完成用户要求算法的程序)加载,然后跳转到主程序入口 地址运行。 举例: 我的目标版FLASH地址为0x9000 0000, 在完成源代码编写,编译,连接后生成*.out文件,通 过hex6x.exe工具转换成*.hex文件(16进制数据文件),然后使用Flashburn工具烧写到外部 Flash Rom中。 程序boot.asm ,功能:完成数据大小为FLASH_SIZE 的数据搬移,源地址FLASH_START,目的 地址RAM_START,搬移结束后跳转的主程序入口点_c_int00运行 FLASH_START .set 0x90000400 ;DMA已经加载可1KB(400H),所以地址从0x90000400开 始 RAM_START .set 0x400 FLASH_SIZE .set 0x40000 .ref _c_int00 .def start .sect \start: mvkl FLASH_START,A4 mvkh FLASH_START,A4 mvkl RAM_START,B4 mvkh RAM_START,B4 mvkl FLASH_SIZE,B5 mvkh FLASH_SIZE,B5 zero A1 loop ldw *A4++,B0 nop 5 stw B0,*B4++ add 1,A1,A1 cmplt A1,B5,B0 nop [B0] b loop nop 5 b _c_int00 nop 5
…… 此处隐藏:114字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




