本帖最后由 Lana636 于 2024-4-30 11:06 编辑
GW3323开发时常见报错代码:
1、ERR: 2, EPC: 13e
2、ERROR ======> GIE-DIS in Flash: 1, EPC=19602 MISS=1005a452
原因:内存报错,变量非法访问,函数调用异常
解决方法:
中断中的打印函数要用printk函数,里面的全局变量要用volatile申明,中断函数要放到com_text区域;即添加AT(.com_text.isr)。以下为示例: AT(.com_rodata.isr) const char str_1[] = "Tim3 done\r\n "; AT(.com_rodata.isr) const char str_2[] = "Tim3 %d\r\n "; volatile u32 duty_n; AT(.com_text.isr) void timer3_isq(void) { if (tmr_get_flag(TMR3, TMR_FLAG_UPDATE2) != RESET) { tmr_clear_flag(TMR3, TMR_FLAG_UPDATE2); func_A();//例如:gpio_toggle_bits(GPIOB_REG, GPIO_PIN_2); printk(str_1); printk(str_2,TMR3CON); } } 例如func_A()中调用了func_B(),那么func_B()也要放入AT(.com_text.isr)区。
3、ERROR ======> thread suspend: thread disorder, 2 原因:中断问题导致线程挂起
解决方法:
中断中的打印函数要用printk函数,里面的全局变量要用volatile申明,中断函数要放到com_text区域;即添加AT(.com_text.isr)。
4、“ERROR ======> timer_thread miss: 178a2, 4c624” 原因:在.map文件中找到“178a2”即可定位发生异常的函数。
解决方法: 中断里面建议少跑点东西。
5、ERROR ======> CRC: 5085 c29f
原因:读取地址内容CRC检验结果不一样就报错。 解决方法:可能是你操作的时候吧flash原来的程序破坏了,不然就是load flash的配置被改了"config.h"中更改#define FLASH_SIZE FSIZE_1M |