x210-2023-03-14
1、初始化完ddr2,由于开启了整个512M空间的访问,为了测试后256M是否能正常访问,所以选择往0x30000000(即从后面256M空间选定一个地址进行读写测试)写入一个数据然后再读出,一开始出现过读出内容一直显示为0x30000000,而不是写入的那个0x12345678,排查过程就是直接先屏蔽掉写入语句,只执行读出0x30000000地址内容的语句,等确认完确实能读出0x30000000中内容再打开写入语句继续测试。
2、笔记本右下角无线图标突然消失,可能和拆卸清灰有关(因为调试过程中间风扇突然出现异响并且持续不断,所以没办法只好暂停手头工作先处理了),尝试过右键任务栏设置选择显示网络图标(关键是没关闭过此选项,保险起见也重新关闭选择然后再打开,但是无效),重启WLAN服务也是无效,最后是使用命令行管理员模式,执行了netsh winsock reset然后重启就可以了。
3、下面错误是由于标号写错,应该是_start而不是start。

2、按照《54-实验五:将u-boot.bin从SD卡搬运到DDR内存中2》试验,一开始只打印出了0xEA000014及前面部分的内容,而后面U-Boot 2012.10往后的内容并无打印,一开始想的也肯定是使用led进行调试,所以在low_level_init.S中屏蔽掉了原来led_on尝试打印,结果一下子就打印出来了,现象虽然出来了,但是问题的原因一开始始终想不明白,怎么start.S里的一个普通led_on函数竟然会导致程序无法一直向下运行,其实程序逻辑比较简单,就是start.S->low_level_init.S->led_on(在start.S)->board_init_f(在start.S),既然没打印U-Boot 2012.10等内容,说明board_init_f没运行成功,由于board_init_f使用到了lr寄存器,然后led_on函数也只使用了一句mov pc,lr语句,由于之前被调试串口碰到的由于lr不保存好导致无法返回函数入口点的问题折腾了很长时间,所以这次也先入为主地认为总要在哪加lr保存语句才好,但是看来看去的结论就是不用保存lr其实按照正常逻辑就应该能跑下去才对的,却没有仔细回过头来检查其实led_on函数中由于使用了r11来存储IO口寄存器的基地址(毕竟led_on前面调试一直用都没问题所以想当然地以为没问题所以就没细看才导致一直想不到是这里的问题),而r11在low_level_init.S开头处用于保存low_level_init被调用后的返回地址,所以一旦调用led_on就会冲掉low_level_init的返回地址,才会产生无法继续向下运行的现象。



浙公网安备 33010602011771号