极海GW3323蓝牙芯片开发时常见有哪些代码报错?怎么解决

2026-04-28 16:59:42/ By Admin

  一、极海GW3323程序烧录失败,提示“错误芯片不支持功能请求”

  原因

  芯片供电异常:检查Vbat输入、Vddio输出电压是否均为3.3V

  软件开启芯片不支持的功能:使用downloader工具复核配置

  上一版程序改写芯片配置:全擦芯片无效,需主板完全断电静置10分钟后重新烧录


  二、GW3323ERR类报错

  ERR:2,EPC:13e

  原因:指令跑飞异常

  ERR:4,EPC:87302

         1 (1)

  原因:RAM溢出(野指针、空指针);固件升级后wav文件地址变更,调用原地址触发异常

  解决:使用20250327及以后版本的libplatform.a、res_user.xm、ui.xm、prebulid.bat等文件,通过setresmode配置音频文件位置

          2

  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后接收烧录指令)

         4

  十、内存与函数功能异常

  内存溢出(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通信时钟未开启

  解决:置位对应时钟位


  十一、其他通用解决方法

  将工程编译警告清零,避免因变量地址不一致导致逻辑执行异常。

立即留言,解锁专属福利!

  • 免费样品申领

  • 合理定价保障

免费精准报价

comment
icon_up
close_white