TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2642R: 运行float函数导致单片机死机,无法识别芯片

Part Number:CC2642R

工具CCS10,协议栈5.10.00.48.

CC2642R调试过程中,使用float函数,可以运行一段时间,时而跑到一半卡死,复位后正常,时而卡死至无法识别芯片,复位也无效。已有两块单片机无法识别。即使是函数或逻辑出错,也不应该会损坏单片机吧?函数大概如下,是个OLED屏幕显示,先前在CC2640R1F上运行没有什么问题。

static void SimplePeripheral_performPeriodicTask(void)//定时一秒轮询定一秒轮询 
{
static uint32_t uptime = 0;

char TempBuf[20]={0};

uptime++;

if(uptime>=255)
uptime = 0;

sprintf(TempBuf, "time = %3.1f",(float)uptime);
OLED_ShowString(0, 32, (u8*)TempBuf, 16,1);
}

//显示字符串
//x,y:起点坐标
//size1:字体大小
//*chr:字符串起始地址
//mode:0,反色显示;1,正常显示
void OLED_ShowString(u8 x,u8 y,u8 *chr,u8 size1,u8 mode)
{while((*chr>=' ')&&(*chr<='~'))//判断是不是非法字符!{OLED_ShowChar(x,y,*chr,size1,mode);if(size1==8)x+=6;else x+=size1/2;chr++;}
}

YiKai Chen:

基本上函数或逻辑出错不应该会损坏单片,試試檢查一下你的應用程序有沒有可能會在低電壓的時候操作到NV導致NV损坏?

,

Susan Yang:

xiaoxiong 说:时而卡死至无法识别芯片,复位也无效。已有两块单片机无法识别。即使是函数或逻辑出错,也不应该会损坏单片机吧?

理论上不会造成芯片的损坏。现在这两块芯片还是无法识别?

,

xiaoxiong:

感谢回复。第一块测试几遍还是无法使用,便被遗弃,已经更换了芯片。第二块多次尝试后又可以检测到。后面发现可能是任务堆栈为默认值,未加大导致,现在加大了(#define SP_TASK_STACK_SIZE                   2048//1408)好像不出现卡死或死机现象。至于先前为什么造成无法识别还不可知,如果只是内存异常,按道理复位应该还是可以跑起来的。

,

xiaoxiong:

感谢回复。第一块测试几遍还是无法使用,便被遗弃,已经更换了芯片。第二块多次尝试后又可以检测到。后面发现可能是任务堆栈为默认值,未加大导致,现在加大了(#define SP_TASK_STACK_SIZE                   2048//1408)好像不出现卡死或死机现象。至于先前为什么造成无法识别还不可知,如果只是内存异常,按道理复位应该还是可以跑起来的。

,

Susan Yang:

是的,如果堆栈溢出的话,是会可能造成死机

,

xiaoxiong:

又有一块芯片出问题了,我怀疑这次供货的芯片是问题芯片。这次来个新问题,烧写引导时,顺带全擦除。烧写后,把app的地址数据恢复了,导致无法烧写app。我使用另一块正常的芯片,全擦除后烧写bim,再读取内存,可以看到内存只从引导开始0X00056000,地址0x00是FF,是可以烧写APP的。这一块问题芯片全擦除后烧写bim,再读取内存,可以看到内存0x00开始有数据,我即使使用强制性擦除,再读取,可以看到全部内存为FF,一旦烧写bim,会占用起始0x00的内存,而且数据是部分app原始数据,像是假性擦除。

以下图片为全擦除后烧写bim

以下图片为全擦除后,烧写bim,再读取内存

以下图片为全擦除后,烧写bim,再读取内存,再烧写app,提示出错

以下为强制性擦除

以下为强制性擦除后,烧写bim,依旧出现占用内存问题

,

Susan Yang:

谢谢您的详细反馈。我们会尽快check该问题。 请问您是在何处购买的芯片呢?

,

xiaoxiong:

不太清楚,公司合作伙伴的。

,

YiKai Chen:

建議先問問你公司合作伙伴在何处购买的芯片

,

Susan Yang:

若是可以的话,请您先确认一下,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » CC2642R: 运行float函数导致单片机死机,无法识别芯片
分享到: 更多 (0)