我刚开始学习TIVA c,需要实现在一个主程序中通过中断向量捕获另一个用户区程序的main入口,然后将中断向量表交付给用户程序,如何实现?跪求具体实例代码说明,谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我刚开始学习TIVA c,需要实现在一个主程序中通过中断向量捕获另一个用户区程序的main入口,然后将中断向量表交付给用户程序,如何实现?跪求具体实例代码说明,谢谢
ye,
建议下载一个TI的关于TIVA的开发包,里面包含了很多入门的实例工程,下载链接如下:
http://www.ti.com/tool/sw-tm4c?keyMatch=tivaware&tisearch=Search-EN
另外,我们相配套的入门级的文档和PPT可以在下面的wiki网页上找到:
http://processors.wiki.ti.com/index.php/Getting_Started_with_the_TIVA%E2%84%A2_C_Series_TM4C123G_LaunchPad
希望可以帮到你了解我们的tiva
谢谢
楼主,
Tivaware里面boot_demo例程就是实现的楼主要的功能,建议楼主参考。另外,你的想法是对的,确实需要中断向量表的重定位,这是通过设置VTABLE寄存器来实现的。
Ye hu
如果你想使用串口进行升级的话,可以直接使用TI 的Bootloader。
请下载最新的完整版的Tivaware。相关的例程在dk-TM4C123G文件夹下。包括boot_serial,boot_demo2,boot_demo1。 如果你是使用的EK-TM4C123GXL板子的话,请将例程中相关的LCD的操作去掉。
该例程是基于Flash Based的bootloader。你可以按照以下操作进行实验:
1. 下载boot serial到Flash(该部分在Flash中的起始地址为0x0000).
2. 下载boot_demo1到Flash(该部分在Flash中的其实地址为0x2800)
3. 使用LM_Flash programmer的UART模式,下载boot_demo2到芯片中(下载时,地址栏中请修改默认的0x0为0x2800)。
4. 轮换下载boot_demo1和boot_demo2。
该方式演示的便是你想要的通过串口远程下载。
其中,
1. boot serial即为你提到的“住留程序”,源代码在Tivaware的bootloader文件夹下。
2.boot_demo1和boot_demo2即是你提到的“用户程序”。代码中下面的语句,便实现了中断向量标的重定位(Bootloader 的中断向量表)。
//
// Return control to the boot loader. This is a call to the SVC
// handler in the boot loader.
//
(*((void (*)(void))(*(uint32_t *)0x2c)))();
3. 用户程序存放的起始地址可以在boot_demox(1或2)_ccs.cmd中修改,
#define APP_BASE 0x00002800
修改此处的同时,应该修改Bootloader即驻留程序中相对应的用户程序地址,在bl_config.h中修改,
#define APP_START_ADDRESS 0x2800
需要注意的是,该地址之前的Flash空间一定不能小于驻留程序FW的大小。同时该值必须是1024字节的倍数。
以上是针对Flash Based Bootloader的描述,如果你只需要使用串口进行升级的话,可以使用TIVA芯片ROM中的Bootloader。相对简单。同时能够节省Flash空间。
具体的测试方法如下:
1. 新建工程,将附件中的代码添加到工程下载到Flash中。
2.使用LM_Flash programmer的UART模式,下载bin文件到芯片中。注意此处program选项卡中的的地址保持为默认0x0。
该方式相对简单,固话在ROM中的Bootloader对应驻留程序,编译产生的为用户应用程序。代码中的ROM_UpdateUART();为向量表重定位,该函数在rom.h中定义。
以上两种方式为Bootloader的演示,具体的请参考Bootloader users guide和Rom uses guide。这两份文档均可在Tivaware中的docs文件夹下找到对应你所使用的Tivaware版本的。
Ye hu
LM_Flash programmer 的configuration选项卡中不要勾选 disable Auto Baud support.
关于Bootloader的入口及执行流程,请参与Bootloader user guide 的startup Code章节。
Ye hu
看到你在代码中加入了LED 观察到的现象正确吗?
参考下面这个帖子
http://www.deyisupport.com/question_answer/microcontrollers/tiva_arm_cortex/f/96/p/61154/136313.aspx#136313
Ye hu
1. Win7是没有问题的。请检查驱动是否装好。
2.跟芯片没有关系。
3. 能否提供以下你的LM Flash Program的配置。 configuration和program标签页
Ye hu
不明白你的截获相应的入口地址是很么意思?没有类似的API函数。
Bootloader在执行完升级或烧写完FW之后,会自动跳转到用户应用程序的起始地址,用户的应用程序的起始地址可以在bl_config.h中进行设置。
另外,建议结合相关代码,阅读一下Bootloader users guide中的startup code章节。里面针对这一流程有很详细的描述。
Ye hu
配置没有问题。做下面实验操作:
1. 用JTAG模式看是否能够烧写。
2.如果JTAG可以烧写,请将Flash完全擦出后断电重上电,然后尝试使用前面提到的UART进行烧写,看是否可行。
(完全擦除Flash后上电,芯片会自动进入bootloader)