一、极海GW3323程序烧录失败,提示“错误芯片不支持功能请求”
原因
芯片供电异常:检查Vbat输入、Vddio输出电压是否均为3.3V
软件开启芯片不支持的功能:使用downloader工具复核配置
上一版程序改写芯片配置:全擦芯片无效,需主板完全断电静置10分钟后重新烧录
二、GW3323ERR类报错
ERR:2,EPC:13e
原因:指令跑飞异常
ERR:4,EPC:87302

原因:RAM溢出(野指针、空指针);固件升级后wav文件地址变更,调用原地址触发异常
解决:使用20250327及以后版本的libplatform.a、res_user.xm、ui.xm、prebulid.bat等文件,通过setresmode配置音频文件位置

ERR:20
原因:除0运算异常
三、ERROR======>;GIE-DIS in Flash:1,EPC=19602 MISS=1005a452
原因
关中断临界区内调用Flash函数引发异常,1005a452为异常调用位置。
解决方法
中断内打印使用printk函数,全局变量添加volatile修饰,中断函数添加AT(.com_text.isr)指定存放区域;中断内嵌套调用的函数,也需放入该区域
关中断程序及开中断前的操作,必须在Flash中执行
函数内变量未初始化会读取随机地址数据,需完成变量初始化
非对齐访问触发硬件错误中断,在.ld文件添加.=ALIGN(512)或.=ALIGN(4)
四、ERROR======>;thread suspend:thread disorder,2
原因
中断配置异常导致线程挂起
解决方法
中断内打印用printk、全局变量加volatile修饰、中断函数添加AT(.com_text.isr)
五、ERROR======>;timer_thread miss:178a2,4c624
原因
系统timer函数中调用Flash函数,通过.map文件搜索178a2可定位异常函数
解决方法
将timer内的Flash函数添加AT(.com_text)放入公共区,减少中断内执行逻辑
六、ERROR======>;CRC报错
原因与解决
CRC:5085 c29f
原因:Flash读取地址内容CRC校验不匹配,原程序被破坏或Flash配置被修改
解决:在config.h中修改#define FLASH_SIZE FSIZE_1M
CRC:db5c acd5
原因:执行fot_write()时,音频播放函数wav_res_play_user_kick()仍在运行
解决:将PICEN=0x47832e改为PICEN=0x47802e临时关闭音频,等待8ms音频处理完成
app.xm中setfotaddr未生效
解决:替换2024.02.28及以后版本header.bin,在strong_symbol.c添加FOT使能函数
变量被非法改写
解决:调用前打印变量排查,规范变量使用与代码编写
七、编译链接报错
riscv32-elf-ld.exe:Outputobjram.o:1:syntax error
原因:工程路径包含中文或括号
解决:修改工程路径为纯英文、无特殊符号
appxm.o unrecognize function"setfotaddr"
解决:app.xm中setflash后添加setfotaddr(addr),编译链更新至RV32-Toolchain-Setup v1.3.9及以上
八、delay_ms()函数异常
程序卡死在delay_ms()
原因:TMR0CON寄存器值从0x85变为0x10,延时功能失效
解决:打印异常前TMR0CON值定位改写位置(如未插USB调用ude_rx_ack())
delay_ms()无效果
解决:使用系统库函数delay_5ms()
九、烧录工具与设备报错
错误不支持的目标设备型号
解决:使用downloader_V3.3.0及以上版本
报“FOT_ERR_CRC_VERIFY”
解决:确认header.bin为2024.02.28及以后版本(大小4KB),生成fot文件工程添加setuserbin、setfotaddr函数
错误无效的存储设备
原因:供电正常但芯片损坏
解决:更换芯片
PB3与Vbat/Vusb同时上电无法烧录
解决:先接PB3,点击烧录开始后再插Vbat/Vusb(芯片上电约125ms后接收烧录指令)

十、内存与函数功能异常
内存溢出(section重叠、data区域溢出)
解决:调整ram.ld中__data_ram_size,同步修改__comm_vma、__comm_ram_size
memcpy函数失效
原因:SPI1等时钟未开启、is_fot_update_en函数未添加
setresmode等函数报错
原因:libdrivers.a、libbtstack.a、libplatform库版本低于20241030
setuserbin多次调用
规则:仅最后一次调用生效,仅保留一处配置
升级fot_get_err()报11(CRC错误)
解决:排查数据断包、跳包、重复包,fot_write前校验数据连续性
程序卡在fot_write()
原因:CLKGAT1的bit5(SBCEC)、bit12(SPI1)未置1,Flash通信时钟未开启
解决:置位对应时钟位
十一、其他通用解决方法
将工程编译警告清零,避免因变量地址不一致导致逻辑执行异常。
Copyrights© Shenzhen Linkchip Co.,LTD All Rights Reserved.