犯下的大坑,导致了浪费很多时间调试
1 没有修改.config中的
CONFIG_SYS_TEXT_BASE=0x9ffb0000
以为是修改include/configs/ap152.h的CONFIG_SYS_LOAD_ADDR.
导致绝对地址跳转失败, 调了几个小时,最后反汇编才发现。
2 擦除的时候只擦除了+4000,,少了个0,导致start.S跳转到debug_uart_init失败。一直以为是sp的异常。艰苦的排查,复位时设置sp,直接跳转到puts,失败,没有打印,但是可以返回,后续的亮灯有执行。但是bare metal可以,最后读取rodata中字符串常量的值,发现是0
ath> md.l 9ffe1264
9ffe1264: 00000000 ....
,然后才定位到少擦除了~~~~~