免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1700 | 回复: 1
打印 上一主题 下一主题

[Linux] 关于linux内核和SDRAM的问题 [复制链接]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-03-13 15:26:06CU大牛徽章
日期:2013-03-13 15:26:47
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-22 14:26 |只看该作者 |倒序浏览
本帖最后由 460769013 于 2013-10-22 14:27 编辑

问题背景:
在2416arm板子上面配有两片SDRAM,64M*2=128M,分别挂在bank6和bank7上面。由bootload进行地址映射,且把参数传给linux内核。
1、当我把SDRAM的参数128M传给内核后(两片内存),内核启动、文件系统跑起来什么的都正常。问题在于当我在执行CP(或者mv、dd)命令时,只要我复制的文件大小大于20M时,系统就会崩溃,打印出Oops消息。如果小于20M就没事。Oops消息:http://bbs.chinaunix.net/thread-4100966-1-1.html

2、当我把SDRAM的参数64M传给内核后(一片内存),内核启动、文件系统跑起来什么的都正常。而且CP命令也正常,100多M都没有问题。

基于这问题,我想知道内核是怎样判断SDRAM是多大的??怎么初始化SDRAM。为什么会出现上面的那个问题??
{
PS:1、网上看了一些资料,是从bootload那边参数传过来的,直接用。
    2、内核本身会再对SDRAM进行一次初始化,并进行把不连续的物理地址映射成连续的虚拟地址。
}
大家知道的能否帮忙指导下!!在下感激不尽啊!!

最近的进展:
因为是加了两片的SDRAM后才出现CP等命令会出现系统崩溃,所以怀疑是将物理地址映射到虚拟地址出了问题,
例如:
物理地址是:bank6:0x30000000-0x34000000 (映射虚拟地址:0xc0000000-0xc4000000)。
                 bank7:0x38000000-0x3c000000 (映射虚拟地址:0xc4000000-0xc8000000) 。
怀疑在bank6和bank7映射到虚拟地址的衔接处是不是没映射过去,导致这一段会出现空指针。

于是就做了测试:
在boot命令下我把内核下载到 0xc3c50000 (内核大小是:0x3bc660,+0xc3c50000=0XC400C660),这样可以下载进去,
但是直接在这边启动内核(命令:bootm 0xc3c50000),确跑不起来,会停在 start kernel 。。。。
如果我把内核下载到0xc3c40000 或者 0xc4000000等,只要内核不夸越两片内存就都会起来。。

分析:因为可以下载在两片内存的衔接处,这可以说明这两片SDRAM映射到连续的虚拟地址上是没有问题的吧??那为啥内核起不来?

若是内存映射连续虚拟地址没问题,那我上面的CP等问题是不是由于内核处理内存时出的错吗???、

求解啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

论坛徽章:
1
酉鸡
日期:2014-09-15 15:40:31
2 [报告]
发表于 2013-10-22 20:44 |只看该作者
建议楼主:
1.对照下原理图,查看下s3c2416地址总线是哪个脚来片选你的2个ram的,
  按楼主说的
  ram1 映射到内存物理地址空间0x30000000-0x34000000
  ram2 映射到内存物理地址空间0x38000000-0x3c000000
  目测原理图上应该是使用地址总线上的A26,A27这两个脚来接ram芯片的cs引脚
2.楼主看下s3c2416的datasheet,看看内存管理控制器配置是否与你实际的原理图匹配
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP