flash:uboot下调试qspi nor flash的问题

目录

问题现象:

问题原因:


问题现象:

在uboot命令行下输入sf probe后,发现程序走到上图中的位置就挂掉了。

问题原因:

追踪代码发现是在下面这行打印中挂掉的。

 查看flash的datasheet可知,opcode为0x05是读状态寄存器,且SO会输出状态寄存器的S0~S7位,也就是一个字节的数据;同时,op->data.nbytes是发送/接收的数据字节数,可以看到num = 0x1,说明状态寄存器输出的就是1个字节的数据。

 但是因为op->data.buf.in的强转类型为uint32_t *,也就是unsigned int *,是4个字节的数据,所以可能是由于地址越界导致非法地址的访问才挂掉,于是将强转类型改为u8 *(unsigned char *),输出格式改为0x%x即可解决问题。

更好的改法是判断op->data.nbytes的大小来决定强转的类型,配合输出的格式,这样可以使不同opcode的打印数据信息完整;例如opcode = ox9f时,是读取flash的device id,之前data打印是0xc81860c8,改成u8 *后,data打印为0xc8,感官上可能会觉得打印信息不完整。

改完后经验证sf probe成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值