完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-21 10:57 编辑
芯片:AM3354ZCZD72 硬件环境: 硬件是自己设计的,最小系统部分地参考了评估板的原理图。内存用的DDR2。 由于不需要使用RTC和电源管理功能,所以电源部分设计的比较简单,使用一个TPS650250产生1.8V、1.1V、1.26V电压,又用一个DCDC产生3.3V电压。 经过测量,上电时序满足要求(参照文档sprs717e,Figure4-5)。 经过测量,24M晶振已经起振。32.768K晶振未起振(我们不需要RTC,但不确定32K晶振是否还有其它用途,所以就先焊上了)。 软件环境: 编译器:ti-sdk-am335x-evm-05.05.00.00 源代码:LINUXEZSDK-AM335X 没有使用CCS,板上也没有留JTAG接口 目前尝试过以下两个U-BOOT版本: u-boot-2011.09-psp04.06.00.08 u-boot-2012.10-psp05.06.00.00 问题现象: SYSBOOT[4:0] 设置为00001(00010、00011也试过,效果相同),整个SYSBOOT的值为:0x4041 上电后,串口一直打印CCCCCC,用超级终端通过XMODEM协议下载u-boot-spl.bin文件,可以下载,但是下载完成后就没有任何动静了,串口不再打印CCC,也没有打印其它任何信息。一开始担心超级终端有问题,于是又试了Tera Term、串口调试助手等工具,结果都一样。 仔细查看过SPL的代码,因为我们没有使用PMIC,所以把代码中I2C相关的部分都去掉了,但还是没有效果。 在s_init()函数中初始化PLL的后面加了一些代码,操作GPIO点灯,但是灯并没有点亮。 现在不知道CPU到底执行到哪里了,有没有跳转到SPL。 是由于什么原因导致ROM Code认为加载SPL没有成功么?但是不太像,因为加载后不再打印CCC了,貌似是跳转了。但如果跳转到SPL了,为什么没反应呢?至少串口要打印个标题,或者能点灯吧。是在初始化串口之前就跑飞了?但是那之前都是在初始化CPU的内部状态,跟外围电路没什么关系,而且那些代码也没修改过。 现在这种情况下,接下来该怎么调呢? |
|
相关推荐
10个回答
|
|
1. 检查下内存,看是否正确配置,具体可以查看 http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips
2. 关于eeprom部分的代码也要去掉,这个也检查下 如果我的回答解决了您的问题,请确认答案,谢谢!:) |
|
|
|
如yaoming的建议,可以修改u-boot下arch/arm/include/asm/arch-am33xx/ddr_defs.h中的DDR2的寄存器值,改成与你的板子DDR匹配的参数
|
|
|
|
jvwueurw 发表于 2018-6-21 02:06 感谢二位的及时回应。我还有一些疑问,首先,现在的问题好像和DDR2的配置没有什么关系,因为从函数s_init()可以看出,是先初始化串口,后初始化DDR2的,在初始化串口之后立刻就打印了SPL版本号等信息。因此即使DDR2初始化不正确,也是后来的事,至少前面的打印不应该受影响。现在的问题是连任何打印都没有,GPIO点灯也不行,像是SPL根本没运行。不过既然你提到需要修改DDR2的配置,那我也试一下好了,等试完了再来反馈。 二、我们调试用的am3354芯片是从电子市场买的,对方说芯片是来自正规渠道的,但是芯片上的丝印有点奇怪,丝印第一行写着XAM3359ZCZ,但是用一横线划掉了,第二行才是AM3354ZCZD72。这个芯片不会有问题吧? 三、向你们反馈一个软件BUG,版本:u-boot-2012.10-psp05.06.00.00 在修改DDR2配置的时候,我发现有一个函数 void config_io_ctrl(unsigned long val) [ writel(val, &ioctrl_reg->cm0ioctl); writel(val, &ioctrl_reg->cm1ioctl); writel(val, &ioctrl_reg->cm2ioctl); writel(val, &ioctrl_reg->dt0ioctl); writel(val, &ioctrl_reg->dt1ioctl); ] 这个函数中,全局指针ioctrl_reg被赋予地址0x44E11404,这个指针的类型是如下结构体 struct ddr_cmdtctrl [ unsigned int resv1[1]; unsigned int cm0ioctl; unsigned int cm1ioctl; unsigned int cm2ioctl; unsigned int resv2[12]; unsigned int dt0ioctl; unsigned int dt1ioctl; ]; 由于结构体中一开头就保留了一个整型字段,因此上面函数中第一行的 writel(val, &ioctrl_reg->cm0ioctl); 所写入的寄存器地址是0x44E11408,但查看手册发现,这个寄存器的地址是0x44E11404(文档编号spruh73g,第758页),也就是说这5个寄存器的地址都向后错位了4字节。 |
|
|
|
mvueurtwd 发表于 2018-6-21 02:31 借了块Starter Kit,经过试验,即使SPL里不初始化DDR,从UART0加载SPL后也会有打印 “U-Boot SPL 2012.10 (Mar 21 2013 - 10:31:40)”,这和我之前的判断是一样的,串口打印不依赖于DDR配置。 但是我们自己做的板子加载SPL后却什么都不打印,这应该是个硬件问题。 现在的问题是,ROM Code能够运行,但SPL不能运行。既然ROM Code能运行,是否可以认为电源、复位信号、时钟是正常的?有什么原因会导致现在的这种情况? 附上我们芯片的照片,这个芯片的丝印是改过的,请帮忙看一下这个芯片有没有问题。 |
|
|
|
mvueurtwd 发表于 2018-6-21 02:41 芯片从丝印上看不出什么问题,X代表是工程样片,出现问题的几率非常低,可以暂时不用考虑,先查查软件配置等,关于uart的启动,请参考 http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#Boot_Over_UART 如果我的回答解决了您的问题,请确认答案,谢谢!:) |
|
|
|
jvwueurw 发表于 2018-6-21 03:00 现在可以确定,CPU的确运行到SPL里面了,但是CPU挂死在rtc32k_enable()函数里。 我们硬件的配置是这样的: http://processors.wiki.ti.com/index.php/AM335x_Schematic_Checklist#RTC 这个问题是否和配置有关?有没有解决办法?如果跳过这个函数,会不会对其他部分有什么影响? |
|
|
|
个人理解,RTC处于复位状态,未解复位,这时访问RTC寄存器会使CPU挂死。 |
|
|
|
你好,我现在调试一块板子,遇到跟你一样的问题,程序卡了 请你您是怎么解决的?谢谢! |
|
|
|
怎么解决的 求赐教 遇到同样的问题 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
326 浏览 1 评论
524 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
768 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
647 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1122 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
46浏览 29评论
80浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
243浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
196浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
54浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 09:33 , Processed in 1.135446 second(s), Total 95, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号