Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4250852
  • 博文数量: 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等,无法在启动是自动配置。  


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

tekkamanninja2012-04-27 11:26:25

abc3240660: ninja你好,希望能被你看到,并得到你的回复,不胜感激!
想咨询一个问题:
mini6410上电时,会自动拷贝nand flash的前4KB到片内SRAM(steppingstone),并从SR.....
对于6410,uboot分两级:SPL+ uboot.bin
你所说的4K限制是在SPL中,它的map在:nand_spl/u-boot-spl.map
你看的u-boot.map是uboot.bin的。

abc32406602012-04-27 11:03:29

ninja你好,希望能被你看到,并得到你的回复,不胜感激!
想咨询一个问题:
mini6410上电时,会自动拷贝nand flash的前4KB到片内SRAM(steppingstone),并从SRAM开始运行,可是查看你的u-boot-2010.12-for-MINI6410编译出来的u-boot.map文件,发现,lowlevel_init函数地址为0x57e28db4,已超出SRAM的最大地址范围(8KB),如果我的理解正确的话,那么在start.S中执行到bl        lowlevel_init时不就挂了么?

希望能得到你的回复,谢谢!打扰之处,还望见谅!

tekkamanninja2011-12-12 15:13:27

Z-yalinux: kernel可以支持两种情况的sdram吗?我现在遇到的问题是原来使用了两块128MB的DDR组成256MB,现在直接使用一块256MB的DDR,但又希望使用同一个kernel同时支持两种.....
这个和内核无关,DDR的初始化是bootloader做的,内核只管用就好了~~
这个只要硬件支持,在bootloader中的初始化只要稍微改下就好了

Z-yalinux2011-12-12 14:01:53

kernel可以支持两种情况的sdram吗?我现在遇到的问题是原来使用了两块128MB的DDR组成256MB,现在直接使用一块256MB的DDR,但又希望使用同一个kernel同时支持两种DDR情况,试了很多种方法均为成功,博主有没有什么高招可指点下?谢谢

liaowei1102011-07-20 20:48:38

请教楼主,近期我也下载了楼主的uboot2010.12,我的开发板是tiny6410 ,256m内存,2G的nandflash,用arm-linux-4.5.1编译后将uboot.bin或者uboot_nand.bin文件下载到nandflash,启动没有响应,请问必须使用arm-1176jzfs_i386-linux-gnueabi这个编译器吗?如果采用SD卡启动应怎么样修改程序呢?谢谢楼主的贡献