分享调试Hi3519V100的一些经历

由于是自己做的板子,在调试硬件的时候发生了很多事情分享出来。

  1. 问题现象

按照手册生成Uboot后,通过Hitools下载Uboot时,进度到5%时显示下载头帧错误如图1-1图1-2所示:

正在上传…重新上传取消

图 1-1 Uboot烧写到Norflash

正在上传…重新上传取消

图 1-2 Uboot烧写到DDR

从上图1-1、1-2所示,将Uboot烧写到DDR和Norflash的现象一样。

  1. 海思Uboot烧写Norflash和DDR机理

2.1当Uboot烧写到Norflash的时候,过程如下:

①海思芯片从自己的BOOTROM(32KB)启动,在这个过程中初始化时钟、堆栈、串口等等。然后等待(15秒)PC机从串口下载数据到BOOTRAM中。

②BOOTRAM中下载Uboot的部分代码后,开始执行代码,初始化DDR。先将BOOTRAM的代码拷贝到DDR中,然后接收Uboot剩下的代码到DDR中。

③等待Uboot下载完成,转到DDR中执行程序,Uboot启动。

④校验各种信息,详细见图2-2。

⑤通过Uboot中的程序,擦除flash,然后将DDR中的Uboot拷贝到flash中去,rest从flash启动。启动成功,下载成功。

正在上传…重新上传取消

图 2-1 Hi3531Dv200烧写Norflash

正在上传…重新上传取消

图 2-2 Hi3531Dv200烧写Norflash详情

2.2当Uboot烧写到DDR的时候,过程如下:

①海思芯片从自己的BOOTROM(32KB)启动,在这个过程中初始化时钟、堆栈、串口等等。然后等待(15秒)PC机从串口下载数据到BOOTRAM中。

②BOOTRAM中下载Uboot的部分代码后,开始执行代码,初始化DDR。先将BOOTRAM的代码拷贝到DDR中,然后接收Uboot剩下的代码到DDR中。

③等待Uboot下载完成,转到DDR中执行程序,Uboot启动。

正在上传…重新上传取消

图2-3 Hi3519V101烧写Uboot到DDR

  1. Debug测试

3.1思路分析:

经查资料,当DDR参数没有的时候,烧写DDR也会成功,但系统不会启动。经过实验发现Hi3531Dv200现象确实如此,如图3-1所示。实验Hi3519V100现象和图1-2现象一样,烧写的5%就失败了,但是我们把串口线引出来,发现芯片发送一次字符DDRTR。实验Hi3519V101发现芯片一次DDRTR之后,还发送“DDRT Err:”。如图3-2所示。由于现象不一致,可以通过软件Debug的方式来锁定软件运行终止原因。

正在上传…重新上传取消

图3-1 Hi3531Dv200 Uboot烧写DDR成功

正在上传…重新上传取消

图3-2 Hi3519V101  Uboot烧写DDR失败

3.2 Debug结果分析:

烧写带寄存器参数的Uboot到DDR中,在init_register函数失败。烧写不带寄存器参数的Uboot到DDR中,由于会跳过init_register函数,在ddr_training函数失败,具体原因是读写了一个ddrc(ddr ctrl)类寄存器后程序卡死。

Debug结果分析:DDR配置或者硬件电路有问题。

  1. 可能原因及排查措施

4. 1 FLASH型号不正确

进行Uboot烧写到Norflash失败。排查发现板子上焊接的Norflash型号是winband 25Q256JWFQ,查询手册得到这个Norflash是1.6到1.9V的供电。电路设计是3.3V供电。更换Norflash芯片型号为winband 25Q256JVFQ(3.3V),然后再次烧写Uboot到Norflash失败,见图1-1烧写到5%就停止了。

4.2DDR问题

4.2.1硬件问题

  1. 电路设计

分别参考了Hi3519V100、Hi3519V101、Hi3531DV200的demo板DDR设计部分电路,没有发现明显问题。确认DDR为DDR3 T型拓扑结构,测量接线没有问题

2)供电

测量了Hi3519V100的芯片供电和DDR的供电,都是正常的,没有发现明显问题。DDR供电1.5V/1.35V都进行试验,现象一致见图1-2,烧写到5%停止。

3)上电时序

测量上电时序正常,详细见《SP104_Hi3519V100上电时序确认》。

4)时钟

DDR时钟是差分时钟,使用示波器没有测量到。原因是DDR的(497M和250M)频率太高,示波器无法测量。后来通过频谱器测得时钟OK。

  1. 复位

   测量DDR复位信号一直为低电平(处于复位)。对比Hi3531Dv200的DDR烧录过程,在DDR烧录到20%时候,DDR复位发型0->1的跃迁。Hi3519V100烧录直到5%,所以排除5%的出错不是因为复位信号导致。

3.2.2软件配置问题

  1. DDR相关寄存器参数配置

海思提供了一份可以生成寄存器配置参数的excel。通过查阅海思的寄存器手册和镁光DDR3的数据手册,更改了excel中sheet“mddrc_dmc”的寄存器值。通过反复修改,尝试。现象都之前一致,见图1-2烧写到5%就停止。通过网上大量查询资料,并且对照Hi3531DV200的DDR4配置信息和DDR3配置信息。发现只要DDR的片数和容量没有变化,寄存器信息就可以不用改。所以之前的DDR寄存器的配置应该是对的,此外海思使用的大多数寄存器,官方提供的手册中都没有说明。

2)容量配置

更改Uboot中所带的寄存器信息,实现挂载为单片DDR,烧写Uboot到DDR失败,现象一致。

3)时序配置

更改Uboot中所带的寄存器信息,使得DDR的时钟为不同的频率,烧写Uboot到DDR失败,现象一致。

4)更换与demo板一致的DDR

在Hi3519V100的demo板上使用的是两片的海力士的DDR3。SP104使用的是镁光的DDR3。更换为海力士的DDR3,烧写Uboot到DDR失败,现象一致。

  1. 其他海思板子测试情况

Hi3531Dv200可以成功的烧写没有寄存器参数的Uboot到DDR中。

Hi3510V101不能烧写没有寄存器参数的Uboot到DDR中。

怀疑原因为:Hi3531Dv200使用的Uboot代码为Uboot2016、Hi3519V101使用的Uboot代码为Ubot2010。Uboot代码在升级的时候,海思官方可能修改增加了一些针对DDR的优化代码。

  1. 网上查询相同情况及解决措施排查

主要是查询网站“易百纳”

6.1相同情况1,附上链接:自己做的3519板子,使用hitool下载失败_问答_易百纳技术社区 (ebaina.com)

对于上面相同情况1进行分析:

正在上传…重新上传取消

①问题:完全参考demo设计的Hi3519V100的板子烧写到5%停止见上图

②相似度分析:芯片使用的是Hi3519V100和SP104一致,DDR使用的是镁光和SP104一致。

正在上传…重新上传取消

③所做过的努力:更改参数配置的execl。

正在上传…重新上传取消

④解决的措施:换3519V101,重新设计板子

6.2相同情况附上链接:Hi3531上DDR3初始化问题,高手帮忙下?_问答_易百纳技术社区 (ebaina.com)

正在上传…重新上传取消

正在上传…重新上传取消

①问题:烧录到6%提示失败

②相似度分析:两块板子的问题一致,都是烧录到6%失败

正在上传…重新上传取消

③解决的措施:发现DDR个别电压问题。串口加载的3531a的Uboot下载DDR的地址和实际不一样。

  1. 最后发现的问题

Hi3519v101最后的问题是因为省略了RTC时钟晶振导致的问题,猜想是RTC寄存器配置的影响。

后来把Hi3531的RTC晶振拆下来之后,发现依然可以正常烧写uboot等。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值