微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > cc3200 reboot 无法启动

cc3200 reboot 无法启动

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

我没有使用TI ota的lib进行OTA升级,自己写的一个简单的tcp socket ,服务端也是简单的用socket 进行文件传输,收到升级的新文件后,调用了

static void RebootMCU()
{
  //
  // Configure hibernate RTC wakeup
  //
  PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR);

  //
  // Delay loop
  //
  Report("Delay loop...\r\n");
  MAP_UtilsDelay(8000000);

  //
  // Set wake up time
  //
  Report("Set wake up time...\r\n");
  PRCMHibernateIntervalSet(330);

  //
  // Request hibernate
  //
  Report("Request hibernate...\r\n");
  PRCMHibernateEnter();

  //
  // Control should never reach here
  //
  while(1)
  {

  }
}

这个函数后,系统无法重启,从串口看log,卡住了(没有重新从main启动)。我烧录的application_bootloader是从SDK中编译出来的,没有改动,升级后用Uniflash 查看的文件列表 见附件。而且发现升级后读取/sys/mcubootinfo.bin 明明是把img状态写进去了,而且也把文件正常关闭了,但是当我软件重启失败后,用硬件reset,后再次打印文件内容,发现读取的还是默认的数值, 所以我有点怀疑,软件reset 可能是卡在了读取/sys/mcubootinfo.bin 整个文件的操作上,这只是猜测。

追问一下,我的程序里面运行了几个TASK,OTA 是其中的一个TASK,如果有TASK,处于BLOCK状态,尤其是优先级比OTA TASK 要高的TASK,处于BLOCK状态,会不会影响reboot?

发现一个问题,如果我不用SDK 里面的application_bootloader.bin 作为mcuimg.bin的话,用上面的RebootMCU方法就可以重启成功,如果用了就会系统卡住,起不起来了,TI的工程师有什么好的调试建议么?可能是什么原因造成的?

  PS:application_bootloader.bin里面加不了log,加入的话就会出现编译不通过,提示内存越界了

刚刚加了log,发现调用RebootMCU后代码运行到了 bootmgr main.c 里面的 Run(APP_IMG_SRAM_OFFSET); 之后就没有然后了, 系统就卡住了,TI工程师能帮忙分析一下么?

找到问题了,RebootMCU没问题,问题是我个人的 写文件出现了错误,文件大小有问题

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

网站地图

Top