加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于自制dm6446的ubl启动问题的解决

发布时间:2020-12-15 18:39:11 所属栏目:百科 来源:网络整理
导读:请教darkhate,关于dm6446的ubl启动 ? 我先说说我的情况:使用的是合众达的dm6446开发板,自己做的板子是根据开发板的原理图做的,只是把DDR RAM由开发板的256M换成了64M。自己做的板子在裸写的程序下测试都很好,主要指读写DDR,读写NAND flash。现在开始移


请教darkhate,关于dm6446的ubl启动 ?

我先说说我的情况:使用的是合众达的dm6446开发板,自己做的板子是根据开发板的原理图做的,只是把DDR RAM由开发板的256M换成了64M。自己做的板子在裸写的程序下测试都很好,主要指读写DDR,读写NAND flash。现在开始移植ubl和uboot,可写进去后发现串口没有输出。?

我对程序做出的修改主要如下:?

1、把nandflash.out的源代码里的static Uint32 ublheader[6]={0xA1ACED00,0x000024ac,0x0000001c,0x00000001,0x00000000};?
0x000024ac为编译ubl后显示的?
arm_v5t_le-objcopy -R .ddrram -R .ddrram2 --gap-fill 0xFF --pad-to 0x3800 -S -O binary ubl_davinci_nand ../ubl_davinci_nand.bin?
The entry point of the binary is 0x24ac?

2、把ubl里的DDRinit函数里的DDR寄存器值改为了适合自己板子的值,这些值是使用裸写程序测试过的?

除了上面两个步骤,还需要别的什么步骤吗??

此外,我有一个疑问:?
看了你写的“排查过程,在买的开发板上ATA的 R/W信号和Nand flash的 R/W信号同样的连接到cpu dm6446上,在PCB布线的过程中,需要考虑信号的串扰,另外还需要考虑信号电平的互相干扰,如果布线不合适,ATA即使没有接上,它们的信号也会导致nand flash的 status改变,从而导致cpu无法接收到正确的状态信息。可以考虑将ATA先断开。 ”?
我的板子上没用到ATA,只不过把pinmux的ATAEN位清零了,这样是不是就是你所说的ATA断开?

文章选项:?

?Re: 请教darkhate,关于dm6446的ubl启动??[re: zhlyp2007]

?

?

请教不敢当,我也刚接触这个芯片,参考板咱们用得估计是一块板子,以后也可以互相讨论,呵呵。?

看了你的说明,我想说的是,你说的这些,我认为有些问题就是,你不能确定串口的硬件工作正常,可以在CCS参考板子的裸板测试代码,利用串口调试助手,检测串口硬件的工作状态,这个厂家是做好了的,在软件包里面是有的,串口与其他部分没有关联,基本上你改它的可能性也不大,所以拿过来应该可以直接测试,检测一个数据的大回环。?

另外,我的检测过程中,我感觉参考板上的硬件还是会有一些问题的,不知道是不是我们拿的版本比较早一点,我们在硬件测试的过程中,发现了几处原理图上电阻阻值的错误,我不做硬件,具体位置不太清楚,只能大概提示:一处是jtag口处,需要去掉两个电阻,一个是nand flash的控制信号处,具体可以看看我之前的nand flash相关帖。还有一个是音频的电阻。?

UBL的代码工作原理比较简单明了,如果硬件没有问题,是可以跑起来的,你可以重点关注一下你ddr芯片的位宽,另外,你说的入口地址最好还是用objdump命令查看一下,不过按照这里也是和引导uboot相关,和ubl 自身启动是没有关系的。看进度,咱们两个公司进度差不多哦。我是个新手,如果你不嫌弃的话,我们可以一起探讨和学习,一个人做太郁闷了,我也需要一个能够讨论的伙伴,如果可以,加我qq:406173699 或者 MSN:?wf_stonemonkey@hotmail.com?

文章选项:?

?Re: 请教darkhate,关于dm6446的ubl启动??[re: darkhate]

?

?

先谢谢那么晚给我的回复?

首先我能保证的是我的串口是正常的。因为当cpu处于uart boot时,串口一直有“bootme”输出的,而且我也用裸写的程序测试过了?

电阻阻值错误的问题我也有发现,在网络部分就有些阻值标错了,不过在nand flash部分真没发现有电阻用错,此外我读写nand flash的程序一直是正常的?

objdump的入口地址正是ubl的入口地址,而uboot的入口地址被nandflash.out默认为了81080000。我的DDR的参数也是经过板子验证的,可我的ubl还是不能给我想要的结果,很郁闷啊

文章选项:?

?Re: 请教darkhate,关于dm6446的ubl启动??[re: zhlyp2007]

?

?

恩,我特意在我的板子上试了试,只烧写一个ubl_nand.bin进去,启动的时候,会打印出串口代码的,不过启动模式有好几种的,不知道你强调uart_mode,有何种深意??

你是如何烧写二进制代码进去的?CCS? DVflash?还是什么别的?感觉是估计是CCS啊??

如果我没猜错,我想你需要仔细看看DM644xInit() 函数里面的DDR2init部分,还是和你换DDR2芯片相关的。

文章选项:?

?Re: 请教darkhate,关于dm6446的ubl启动??[re: darkhate]

?

?

不知道你到底做的怎么样了,好歹给个回复啊,如果搞定了,接帖是必要的素质,网络上大家是人人为我,我为人人。

文章选项:?

?Re: 请教darkhate,关于dm6446的ubl启动??[re: darkhate]

?

?

呵呵,别着急啊,今晚终于解决了,现在是分享时间:?
1,自己编译nandflash.out时,一定要用带ECC检查的nandflash源代码库,否则编译出来的nandflash.out是不对的,不能正确的把UBL写入相应的位置?
2,第二条就是我的板子出的问题,其实硬件是没问题的,编译出来的nandflash.out和ubl.bin也是正确的,问题就是出在硬件中没有自启动时reset the cpu,6446文档有这么一句话:The BOOTCFG register (located at address 0x01C4 000A) contains the status values of the BTSEL1,BTSEL0,DSP_BT,EM_WIDTH,and AEAW[4:0] pins captured at the rising edge of RESET,所以6446的电路在上电后要复位一下才可以用的(后来找到毛病后有人告诉我很多DSP都是这样的,汗!我以前做arm的不是很懂dsp,没想到硬件工程师也。。。。)

?如需访问原内容可参考网址:点击打开链接

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读