关于KEAZ1284 CAN bootloader

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

关于KEAZ1284 CAN bootloader

2,258 Views
347996379
Contributor III

dear,

附件是我上传的bootloader工程,开发环境是MDK,

直接烧录app程序能够正常运行,通过boot烧录app程序能够正常烧录,且烧录完成之后在调试中重新读取app的程序进行比对,是正确的,

问题:通过boot升级app 程序不能实现跳转,已经连续调试了几天找不出问题,在此请freescale的工程师帮忙看一下,问题出在哪里,附件是我的bootloader工程,谢谢~

1、在APP的.S文件注释掉了如下:

                ;IF      :LNOT::DEF:RAM_TARGET

                ;AREA    |.ARM.__at_0x400|, CODE, READONLY

                ;DCB     BackDoorK0, BackDoorK1, BackDoorK2, BackDoorK3

                ;DCB     BackDoorK4, BackDoorK5, BackDoorK6, BackDoorK7

                ;DCB     0xFF,       0xFF,       0xFF,       0xFF

                ;DCB     0xFF,       FPROT,      FSEC,       FOPT

                ;ENDIF

app1.png

0 Kudos
6 Replies

1,187 Views
kerryzhou
NXP TechSupport
NXP TechSupport

楼主你好!

关于KEA128的CAN bootloader,建议你先看下我们这个帖子:

KEA128 CAN Bootloader 

里面有相关的代码以及跳转程序,你参考下那边的代码再修改下自己的代码。

如果还有问题,欢迎继续交流。


Have a great day,
Kerry

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,187 Views
347996379
Contributor III

你好!

   现在我用你们的flash驱动做测试,如果周期读写会造成单片机死机,初始化只读取一次就没有问题,请问一下这是什么原因?

0 Kudos

1,187 Views
kerryzhou
NXP TechSupport
NXP TechSupport

你好,不好意思,上周一直比较忙,没有回复你。

你说的周期读写,你在第二次写之前是否已经做了对应区域的擦除?

另外,在做flash编程和擦除的时候,你需要关闭中断,这个做了没有?还有发起flash命令的代码最好拷贝到RAM里面,你那边有没有做?


Have a great day,
Kerry

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,187 Views
347996379
Contributor III

你好!flash二次写之前都做了擦除,读写之前都关闭了中断。

还有发起flash命令的代码最好拷贝到RAM里面”,这句话怎么理解?是KEAZ128读写flash必要的操作还是?

除了上面飞思卡尔单片机以外,像DZ60、XEQ512这一类,需要把代码拷贝到RAM里面的操作只是在CAN升级之后,重新把app拷贝到RAM运行,对于flash的操作也没有提到需要把代码拷贝到RAM

在flash这一块它们之间有很大不同吗?

0 Kudos

1,187 Views
kerryzhou
NXP TechSupport
NXP TechSupport

其实就是launch commander那个命令函数,拷贝到RAM运行。

#if (defined(IAR))
__ramfunc  void FLASH_LaunchCMD(uint8_t bWaitComplete)
#else
void FLASH_LaunchCMD(uint8_t bWaitComplete)
#endif
{
#if     defined(FLASH_ENABLE_STALLING_FLASH_CONTROLLER)
     MCM->PLACR |= MCM_PLACR_ESFC_MASK;          /* enable stalling flash controller when flash is busy */
#endif
    FTMRH->FSTAT = 0x80;    
    if(bWaitComplete)
    {
      // Wait till command is completed
      while (!(FTMRH->FSTAT & FTMRH_FSTAT_CCIF_MASK));
    }
}

你看,IAR的,可以直接用__ramfunc 去定义这个函数到RAM。

这个是kinetis芯片的特性,和flash模块有关。

其他的芯片我不了解。


Have a great day,
Kerry

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,187 Views
347996379
Contributor III

@Kerry Zhou

0 Kudos