微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > OAD问题,BIM跳转问题

OAD问题,BIM跳转问题

时间:10-02 整理:3721RD 点击:

这两天在看OAD方面的东西,请教个问题。

加了BIM后,加电执行的第一块代码在哪个工程中?

我理解的是首先执行的APP工程,之后由于APP工程main中的一段代码

#ifdef FEATURE_OAD
    {
      uint8_t counter;
      uint32_t *vectorTable =  (uint32_t*) 0x20000000;
#if defined(__IAR_SYSTEMS_ICC__)
      uint32_t *flashVectors = &__vector_table;
#elif defined(__TI_COMPILER_VERSION__)
      uint32_t *flashVectors = &ti_sysbios_family_arm_m3_Hwi_resetVectors;
#endif //Compiler.
      
      // Write image specific interrupt vectors into RAM vector table.
      for(counter = 0; counter < 15; ++counter)
      {
        *vectorTable++ = *flashVectors++;
      }
    }
#endif //FEATURE_OAD

执行后,才通过BIOS_start函数跳转到BIM中执行,

之后在BIM中,通过CRC检测确定执行哪个Image。

不知道理解的对不对,总感觉这么的别扭。

 不对,BIM在复位向量处,一上电就执行,没得选择。

那请教一下,向量处的设置在什么地方。

首先BIM和APP是单独编译的。那就是说APP本身应该有一个中断向量表,而BIM也有一个中断向量表。那么,都在什么地方。

请指点一下,谢谢。

我想是这样的:BIM的链接文件指定了位置,main函数自然被放在复位向量处,BIM没有使用其他外设,也就没有外设中断向量,程序的跳转是直接内嵌了LJMP汇编指令。至于APP的向量表,我也想知道是如何处理的,A和B的代码可以分别放在两处,但向量表只有一个,烧写了B不就把A的向量表覆盖了么,求论坛大神解答。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top