打印
[其他ST产品]

在str711上使用USB进行IAP,IAP中断如何响应

[复制链接]
2605|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvpeng1979|  楼主 | 2007-11-19 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
USB, iap, ST, ic, TI
在str711上使用USB进行IAP,因为使用的是USB进行下载dfu格式目标文件,IAP程序中使用到了usb的中断。用户程序中也有中断要处理,用户程序的中断处理用到了lut1lut“如何利用STR71x的UART进行IAP 补充说明 版本2.0”的方法:
  extern u32 T0TIMI_Addr;
  u32 * p = (u32 *)& T0TIMI_Addr;
  u8 bCounter;
  u32 offset;

  
  EIC->ICR = 0x00000000; 
  EIC->IER = 0x00000000; 
  EIC->IPR = 0xFFFFFFFF; 
  EIC->FIR = 0x0000000C; 
  EIC->CIPR = 0x00000000; 
  
  EIC->IVR  = 0xEA000000; // IVR = high half of "B offset" instruction

  for (bCounter=0;bCounter<32;bCounter++)
    {
      offset = (((*p)&0xffff)+0x7E0) >> 2;
      p++;
      EIC->SIR[bCounter] = offset << 16;
    }
  }

IAP程序vect.s中中断入口改为LDR  PC, =0x400040f8;用户程序用户J-link烧写到0x40004000。用户程序的中断都可以响应。这样IAP程序无法使用中断。


然后我将IAP程序vect.s中中断入口还原LDR  PC, IRQ_Addr,即将0x40000000。IAP程序的usb中断才能实现,且可以将用户的dfu格式的文件下载到ox40004000,且可以运行,但此时用户的中断是不能响应的。

我的问题是有两套中断系统都要响应:一是IAP程序里的中断,二是用户程序里的中断。请教各位! 不甚感谢!
沙发
浪淘沙| | 2007-11-19 15:25 | 只看该作者

ST的中文网站

http://www.stmicroelectronics.com.cn/mcu

使用特权

评论回复
板凳
lvpeng1979|  楼主 | 2007-11-19 15:28 | 只看该作者

我用的就是它的dfu程序

我用的就是它的dfu程序,可是有问题,用户程序是不能响应中断的。

使用特权

评论回复
地板
浪淘沙| | 2007-11-19 16:03 | 只看该作者

当你做IAP时,用户程序没有运行,做完DFU后才运行用户程序

这两个部分不会冲突呀。

使用特权

评论回复
5
lvpeng1979|  楼主 | 2007-11-19 16:19 | 只看该作者

IAP程序vect.s中中断入口需要改为LDR PC, =0x400040f8吗

IAP程序vect.s中中断入口需要改为LDR  PC, =0x400040f8吗? 只有这样用户程序的中断才能响应啊,但改了后dfu是不能用的。iap程序最终的中断入口地址怎么写?

使用特权

评论回复
6
浪淘沙| | 2007-11-19 17:17 | 只看该作者

要在用户程序中加入DFU的功能,对中断跳转当然要做特殊处

你必须自己放一个基本的中断处理程序去判断现在是运行于IAP模式还是用户程序模式,然后根据这个判断跳转到不同的中断处理。

另一个办法是,在初始化STR71x的中断向量寄存器时,根据运行程序的模式用不同的地址初始化这个寄存器。关于中断向量寄存器(EIV_IVR)的使用请看STR71x的技术参考手册的有关章节。记得lut1lut的帖子中介绍了这个方法。

使用特权

评论回复
7
lvpeng1979|  楼主 | 2007-11-19 17:25 | 只看该作者

谢谢,有了思路

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

36

帖子

0

粉丝