Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4131756
  • 博文数量: 241
  • 博客积分: 15936
  • 博客等级: 上将
  • 技术积分: 25293
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 11:22
个人简介

Fedora-ARM

文章分类
文章存档

2016年(3)

2014年(1)

2013年(3)

2012年(50)

2011年(61)

2010年(26)

2009年(27)

2008年(21)

2007年(49)

分类: LINUX

2011-03-12 08:39:29

    以前我移植的u-boot在启动的时候只支持128MB内存,因为最开始友善出的MINI6410只有128MB的DDR内存。但是后面他们升级为256MB的DDR了,我的U-boot一直没有修改,一直在凑合着用。最近几天,由于项目需要,看了一下DDR(1/2/3)的接口和相关的时序,就想到也让U-boot支持一下256MB的DDR,所有就稍微看了看S3C6410的DRAM控制器,调整了两个寄存器就实现了对256MB的支持。
    但是对于两个内存版本的板子,如果要编译出两个u-boot,这肯定比较麻烦。要做就做完美来,自动适应两种RAM大小。友善的superboot支持,这说明技术上是绝对可行的。经过了我一两天业余时间的尝试,昨天晚上搞定了。
识别的原理是利用的在以265MBDDR模式下配置DRAM控制器后读写128MBDDR会出现32MB镜像内存的作用,具体的识别原理我会专门写一个文档来探讨。

所有的代码已经更新到github,可以到这里下载
---------------------------------------------------------------------------
2011.3.15更新:
    只在u-boot的SPL中初始化DRAM控制器,在u-boot.bin中屏蔽了相关初始化代码。
    在初始化开发板后往环境变量中添加了“ramsize”变量,记录了内存的大小,使得bootargs可以实现向内核传递启动参数的“mem=”的自动配置。比如,在uboot中加入命令:
  1. setenv bootcmd 'setenv bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.1.2:/home/tekkaman/development/share/mini6410_rootfs ip=192.168.1.22:192.168.1.2::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=$ramsize ; tftp 192.168.1.2:uImage ;bootm'
    注意:上面bootcmd后面的是用单引号包括起来的,否则mem=$ramsize会变为mem=256M等,无法在启动是自动配置。  


阅读(11990) | 评论(15) | 转发(10) |
给主人留下些什么吧!~~

abc32406602012-04-27 17:24:43

tekkamanninja: 是的,那个有界面的烧写也是用dd的.....
恩,刚试了一下,串口有信息出来了,非常感谢你的耐心解答!
受益匪浅啊!

tekkamanninja2012-04-27 16:46:59

abc3240660: 哦,那你是通过dd命令烧写到sd卡中去的?.....
是的,那个有界面的烧写也是用dd的

abc32406602012-04-27 16:45:23

tekkamanninja: 我这个跟友善的烧写工具根本就是两回事,烧写在Linux下完成,请参考:
http://blog.chinaunix.net/uid-20543672-id-94392.html
http://blog.chinaunix.net/uid-.....
哦,那你是通过dd命令烧写到sd卡中去的?

tekkamanninja2012-04-27 14:01:23

abc3240660: very 3ks!
那要用到2个bin文件(u-boot.bin和u-boot-spl.bin)?
把这两个都放到sd卡上吗?
FriendlyARM.ini文件如何配置呢?.....
我这个跟友善的烧写工具根本就是两回事,烧写在Linux下完成,请参考:
http://blog.chinaunix.net/uid-20543672-id-94392.html
http://blog.chinaunix.net/uid-20543672-id-120424.html

abc32406602012-04-27 12:08:42

tekkamanninja: 对于6410,uboot分两级:SPL+ uboot.bin
你所说的4K限制是在SPL中,它的map在:nand_spl/u-boot-spl.map
你看的u-boot.map是uboot.bin的。.....
very 3ks!
那要用到2个bin文件(u-boot.bin和u-boot-spl.bin)?
把这两个都放到sd卡上吗?
FriendlyARM.ini文件如何配置呢?