免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: prettyguyzq
打印 上一主题 下一主题

[内存管理] linux内核启动问题,什么原因 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2014-03-17 10:03 |只看该作者
回复 29# linuxfellow


    硬件方面测试过没问题,下面是uboot中的ddr部分,至于你说的内核直接使用uboot参数是怎么回事,有具体的函数吗
/* DDR Setup */
#define CONFIG_VERY_BIG_RAM
#define CONFIG_FSL_DDR3       /*ZQ DDR2 TO DDR3*/
#undef CONFIG_FSL_DDR_INTERACTIVE
#define CONFIG_SPD_EEPROM                /* Use SPD EEPROM for DDR setup */
#define CONFIG_DDR_SPD

/*#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER*/        /* DDR controller or DMA? */
#define CONFIG_MEM_INIT_VALUE        0xDeadBeef

#define CONFIG_SYS_DDR_SDRAM_BASE        0x00000000
#define CONFIG_SYS_SDRAM_BASE                CONFIG_SYS_DDR_SDRAM_BASE

#define CONFIG_NUM_DDR_CONTROLLERS        1
#define CONFIG_DIMM_SLOTS_PER_CTLR        1
#define CONFIG_CHIP_SELECTS_PER_CTRL        2

/* I2C addresses of SPD EEPROMs */
#define SPD_EEPROM_ADDRESS        0x50        /* CTLR 0 DIMM 0 */
#define CONFIG_SYS_SPD_BUS_NUM                1

/* These are used when DDR doesn't use SPD. */
/*#define CONFIG_SYS_SDRAM_SIZE                256        *//* DDR is 256MB */
/*#define CONFIG_SYS_DDR_CS0_BNDS        0x80044202
#define CONFIG_SYS_DDR_CS0_CONFIG        0x80044202*/ /* Enable, no interleaving */
/*#define CONFIG_SYS_DDR_TIMING_3        0x00010000
#define CONFIG_SYS_DDR_TIMING_0        0x40110104
#define CONFIG_SYS_DDR_TIMING_1        0x4a496646
#define CONFIG_SYS_DDR_TIMING_2        0x0fa8c8c8
#define CONFIG_SYS_DDR_MODE_1                0x00441011
#define CONFIG_SYS_DDR_MODE_2                0x00000000
#define CONFIG_SYS_DDR_INTERVAL        0x08200100
#define CONFIG_SYS_DDR_DATA_INIT        0xdeadbeef
#define CONFIG_SYS_DDR_CLK_CTRL        0x02000000
#define CONFIG_SYS_DDR_OCD_CTRL        0x00000000
#define CONFIG_SYS_DDR_OCD_STATUS        0x00000000
#define CONFIG_SYS_DDR_CONTROL        0xC3008000*/        /* Type = DDR2 */
/*#define CONFIG_SYS_DDR_CONTROL2        0x04400010

#define CONFIG_SYS_DDR_ERR_INT_EN        0x0000000d
#define CONFIG_SYS_DDR_ERR_DIS                0x00000000
#define CONFIG_SYS_DDR_SBE                0x00010000*/

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
32 [报告]
发表于 2014-03-18 04:17 |只看该作者
回复 31# prettyguyzq
DRAM memory控制器有寄存器的参数是在u-boot里设定,这些参数设置好了以后内核就直接使用,不再改变。
你的板子里定义SPD, 你的memory chip也应该有SPD支持。我没有用过SPD,你的配置也看不出什么问题。最好能找一个debugger,看看有关dram控制寄存器参数设置,是否与手册匹配。

还有一个办法就是找一个没有任何硬件改动的freescale官方evk板上,在那块板上先运行,evk板上运行成功的经验,网上比比皆是;那样也容易得到帮助。还有evk板上硬件问题基本上可以排除,专心解决软件上的问题。只要能在evk板上跑起来,你就会有足够的经验来调通你自己的板子。其他的也没有什么太好的办法,希望没有误导你,浪费你的时间。


   

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
33 [报告]
发表于 2014-03-18 18:52 |只看该作者
如果你的板子和官方板子只是ddr2和ddr3的区别的话,而ddr又具有spd参数自动配置功能,那么在官方板子上能运行起来的代码应该完全能在你的板子上运行。如果不行,说明spd有问题。
如果你的板子和官方板子还有其他的区别的话,精简软件去掉两块板上不同的模块(当然是除ddr之外的其他不同模块),做成一个能在两块板上运行的最小系统,先在官方板子上运行,再到你的板子上运行。你就能发现问题。

论坛徽章:
0
34 [报告]
发表于 2014-03-24 18:51 |只看该作者
回复 33# linuxfellow


    谢谢你,问题解决了,不是kernel的问题,今天换了一个内存条,uBOOT都过不去,通过uboot代码定位发现是DDR的数据传输率太低了,硬件的问题

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
35 [报告]
发表于 2014-03-25 06:07 |只看该作者
回复 34# prettyguyzq
祝贺祝贺!  如果是第一次调试自己的板子,花一两个月是很正常的。
DDR不直接配置传输速度,用的是总线时钟。是不是EMI时钟和cpu时钟的匹配问题? 一般手册上有cpu时钟和总线时钟的推荐组合,用那些组合可以达到功能优化。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP