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


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

heero69102011-05-15 12:58:22

請教一個問題,我是使用 2011.03的u-boot, 果然有一些bug, 然後我都

fix完後, 發現在我的command.c中的find_cmd,其__u_boot_cmd_start &

__u_boot_cmd_end 皆為 0,但是我看u-boot.map其值是正常的,請問我是那個

步驟出錯呢??

PS : 如果可以我可以把我整好的code請你幫忙看那裡有問題.....

=>已解決......

newolf200002011-03-27 00:14:14

tekkamanninja: 1、我的编译器是自己做的,制作方法在我的博客里有:http://blog.chinaunix.net/space.php?uid=20543672&do=blog&id=94369
2、6410可以跑到667,这个和.....
感谢楼主提示,我尝试按照你的提示,根据你的博文(http://blog.chinaunix.net/space.php?uid=20543672&do=blog&id=94369

疯狂小诗2011-03-21 10:55:57

厉害~~~

楼主你好啊,我最近在mini2440上做sd卡上系统的启动,但是每次启动之后都要手动把一堆的参数写上去。。。
设置完参数之后,saveenv,然后就显示ereasing nand什么的。。重启之后就完全没有之前设置的参数了
楼主有没有遇到过这个问题啊或者,希望能给个建议

tekkamanninja2011-03-20 23:59:20

newolf20000: 首先要对楼主的工作致敬!

然后想咨询一个问题:

我手上的是TE6410,看了下原理图差不多,配置也基本相同,所以想采用楼主的U-Boot源码,以便能够较好的支持网.....
1、我的编译器是自己做的,制作方法在我的博客里有:http://blog.chinaunix.net/space.php?uid=20543672&do=blog&id=94369
2、6410可以跑到667,这个和你的uboot没法启动应该是无关的,我的怀疑是你的编译器有问题,建议自己做一个试试。只要硬件没有什么差别,我的代码直接编译就可以了,我自己下载测试过了。

newolf200002011-03-20 01:30:33

首先要对楼主的工作致敬!

然后想咨询一个问题:

我手上的是TE6410,看了下原理图差不多,配置也基本相同,所以想采用楼主的U-Boot源码,以便能够较好的支持网络/LCD等,但是发现下列两个问题:

1。根据楼主分享的U-Boot源码,我尝试用4.2.2的交叉编译器编译无法通过,检查发现Makefile指向的编译器是CROSS_COMPILE = arm-arm1176jzfs-linux-gnueabi-,不知楼主所用的这个编译器哪里有下载?

2。我尝试使用arm-1176jzfs_i386-linux-gnueabi.tar.bz2中的编译器进行编译,能够生成u-boot.bin了,但下载到板子上没反应,检查发现在mini6410.h中设置了#define CONFIG_CLK_667_133_66,而TE6410是532M,于是改用#define CONFIG_CLK_533_133_66的配置,但编译通过后下载到Nand Flash上启动仍然没反应,不知楼主能