新做了个8168的板子,板子的情况是:
没有sd卡,也没有仿真器接口,只有串口、网口、usb口。串口已经调好。
dm8168只支持串口升级,不能直接烧写uboot,现在nandflash是空的。
我用别的工具将u-boot.noxip.bin烧写到nandflash的地址0x0位置,然后焊接到8168的板子上。
BTMODE[4:0]设置为10010,CS0MUX0、CS0MUX1、CS0BW、CS0WAIT均为0。
上电以后,串口用输出,串口设置 115200,8,even,1,none。
用串口大师看打印是这样的"♬"音符。用hyper terminal看是"???",用tera term看是“<<<”这样的符号。
测量了上电时序大约为:evm_3v3–>2ms–>1v0_avs–>10ms–>1v0_con–>8ms–>1.8v–>5ms–>1.5v–>8ms–>0.9v
测量RESETN,PORZ引脚都为高。启动以后RSTOUTN输出为高,复位PORZ的时候为低,。WD_OUT昨天忘记测了。
测量nandflash,各个控制、数据引脚均有波形,包括we引脚上也有。但是数据引脚的波形不太好。
我的理解是上电以后romcode被拷贝到内部的sram运行,紧接着设置看门狗和pll,然后判断最高优先级启动模式为nandflash,便从nandflash地址0x00开始读取uboot,发现uboot不对,在设备列表中选择次优先级的启动。
请问用别的工具把uboot烧在nandflash的0x00是否可行,或者地址不是0x0,是否还需要其他描述?
we有波形,romcode有对nandflash进行写的操作 ?
还有什么办法处理我这种情况么,uboot烧不进去其他都调不了。着急啊。
谢谢!
Chris Meng:
你好,
请参考DM8168 TRM ROM的相关章节,NAND启动是需要一个Image Header的。
还有你可以先配置为uart启动,看串口是否有CCC来确认板子是否正常工作了。
feng qiu:
回复 Chris Meng:
您好,感谢您的回答!
TRM里面对Image Header的介绍很少,请问还有详细的介绍么,Image Header是不是在uboot里面修改的,u-boot.noxip.bin里面不包含这些?
我的板子在配置为uart启动时,串口打印是“♬”,别的模式下也是这个打印 ,示波器看了串口发送的波形正常,看来是芯片工作不正常了。
Eason Wang:
回复 feng qiu:
你好,不是很明白你说的串口已经调好指的是什么。我的理解是串口调好的前提是DM8168已经正常工作,然后才会往uart打印东西,可以使从uart启动发送CCC也可以使从其他的启动。 而据你所讲,串口就很有问题,麻烦澄清一下。
串口乱码很可能是波特率不对。可能是你的终端设置不对,也可能是8168这边发送出来的波特率与标准的差异太大,你需要量出来看的。
此外,你还可以尝试用EMAC启动,如果芯片正常的话,在网络上是可以抓到BOOTP的包的
feng qiu:
回复 Eason Wang:
您好,我说串口调好了,的确是不准确的,现在只是能从8168的串口收到东西,内容应该是不对的,不能说是调好了。
我的波特率是115200,其他波特率收不到数据。回头我去量出来看下,是pc这面收错了,还是8168就发错了。
EMAC启动,有个问题是网卡芯片还没调,不确定能不能用,得先调网卡,串口走不通我再去试试。
第一版,估计各部分的调试都不会太顺利了。
feng qiu:
回复 Eason Wang:
晚上测量了串口的波形,在附件中,绿色的是dm8168输出的,黄色的是经过转换芯片之后的。
从数据上看8168发送的是43H,对应是“C”没问题,但是波特率不对,1bit大概16us,波特率大概62500
查看手册uart模块参考时钟是48Mhz,48mhz时钟是由DDR PLL产生的。pll参考时钟为外部的27mhz晶体。
测量27m波形如附件,基本也没问题。。。。
Louis:
回复 feng qiu:
你好,
UART是工作在32452的波特率下的,具体的请查看勘误表http://www.ti.com/lit/er/sprz329d/sprz329d.pdf:
Louis:
回复 Louis:
顺便补充一下,由于UART波特率的限制,一般很难找到对应波特率的PC,所以通常使用其他的启动方式来刷Uboot,待uboot启动后,再通过串口来进行调试。
feng qiu:
回复 Louis:
感谢!
今晚测了下,用友善的串口助手可以支持任意波特率的,波特率调到32452,还是收不到"C"。
从我昨晚的截图来看,我示波器采到的串口波特率大概在62500,调整波特率,也是收不到。
又看手册发现,上电的顺序是要求前一个电源上升到至少80%的时候,后一个电源才开始启动。之前没有注意到这个严格的关系。
又回去重新查电源发现:
3.3v和1.0v_avs ;1.8v和1.5v 这两组之间的关系不符合条件。这可能也就是我上电以后,必须再复位一次por引脚串口才有输出的原因。
今天太晚了,还没调,准备明天在试试。
我是因为板子设计的失误,现在没法烧写uboot。。。我打算把芯片状态调整对了,用别的工具先把uboot烧写到nandflash,再焊到板子上。
之前一位工程师说uboot之前还有一个image header,但是手册上介绍太少,只是说了这header的大小和内容,但我的疑问是怎么生成这个header。
实在没有办法的话 ,我打算用evm板把nandflash烧好,可以运行了,再拆下来焊到自己做的板子上。想听听您的建议,谢谢!
Chao Wei2:
回复 feng qiu:
大侠, 刚调一个8168, 串口输出我也是这个波形, 敢问你那边是否已经解决该问题, 如何解决的? 静候指点, 多谢
shupeng hu:
回复 Chris Meng:
想请教您一个问题,我用的是ti8147,现在需要把nandflash从128M的换成512M的,是同一款型号的,但是页大小不一样,(我认为uboot中既然已经检测到了,应该可以支持的,所以就没有改代码)本来读写时会出现ecc错误,后来我改了ecc layout就不报错了,但是uboot启动不成功,还是一直打印CCCCCC,请问这是怎么回事呢。
128M的datesheet:
512M的datesheet:
根据128M的ecc layout写的512M的ecc layout: