2007.8.13
u-boot 1.1.6 初步调试成功。
1.在网上找了几个u-boot的移植文档,之前一直没有成功,后来,设置好u-boot的程序运行地址后,make clean && make at91rm9200dk_config && make ,生成u-boot.bin文件。
2.在调试好arm9200的仿真器后,选择File->Load memory from file ,选择u-boot.bin 文件。
3.文件Load 成功以后,将PC指针设置为u-boot程序的运行地址。
4.执行程序,即可在串口终端看到u-boot的提示符。
2007.8.14
1.发现在文件Start.S中调用了LowLevelInit函数,初始化SDRAM,终端,DEBUG串口,NAND等,根据需要添加。在u-boot中没有进行LowLevelInit,所以会出现初始化不正确的时候会有问题。
2.经常会出现IIC不能写的状况,原因不明。
3.AXD调试的时候,经常要重启才可以。有时候要进行断电。
4.u-boot的程序启动地址在board/at91rm9200dk/config.mk中修改TEXT_BASE的值
2007.8.15
1.研究PMC时钟是怎么回事,给个时钟是如何产生的,看数据手册的方框图。
设置master clock 的寄存器,选择使用slow clock ,main clock,plla,pllb中的一个作为时钟输入,通过master clock controller后生成master clock 和process clock.选择的plla和pllb可以通过设置相应的寄存器来倍频main clock.
2007-8-20
1.u-boot- 1.1.6 成功从nand flash 上启动。但是还有很多问题没有搞清楚。board/at91rm9200dk/config.mk,这个TEXT_BASE的值所起的作用,没有搞清楚。U-boot.bin
文件从flash中读取到sdram中的内存的位置不是这个地址,也还是可以启动的。所以,之前的bios9200的代码完全不用作任何的改变,就可以将u-boot烧写到nand flash上,并且读入内存,启动u-boot。之前虽然也进行过直接烧写的工作,但是可能是u-boot中的代码,初始化的串口有问题,造成没有什么输出,显示的。现在代码中写死了。
2.阅读了一下bios9200的代码,关键的部分在于,不同的板子,要进行不同的LowLevelInit工作的,所以之前的at91rm9200_for_Uboot,不能够使用,也是因为LowLevelInit初始化的可能有些问题,在u-boot 启动的时候,按照网上的修改方法,并没有进行LowLevelInit,所以出现问题。
3.u-boot的移植配置,参看以下文章
开发板H 9200M 简介 FLSH: 4M ( 2M ×16) ->固化Linux内核 0x1000_0000-0x103_FFFF [编辑] [编辑]
[编辑]
[编辑] [编辑] board 目标板相关文件,比如Makefile和u-boot.lds等都和具体的开发板的硬件和地址分配有关; [编辑] 1、增加目标平台到./board/下(此步骤可选,主要为了不影响源码) 因为我们当前平台h 9200m 用的是at91rm9200 CPU,因此我们找最接近的已有平台来简化移植过程,进入board目录下,以原有at91rm9200dk为模板,拷贝at91rm9200dk为我们 的h 9200m 目录,进入目录h 9200m ,将at91rm9200dk.c更名为h 9200m .c,再编辑当前目录下的Makefile,编辑并搜索 at91rm9200,在28行会找到at91rm9200dk.o,将其改为h 9200m .o;目录中config.mk是用来记录U-boot复制到 内存的基址,flash.c用来配置Flash,u-boot.lds是内核链接器的脚本文件。 命令: cd u-boot- 1.1.6 /board 2、进入./include/configs下 以at91rm9200dk.h为模板,生成h 9200m .h;在这里的文件都是和硬件系统配置息息相关,它需记录新平台的所有配置参数。 命令: cd u-boot- 1.1.6 /include/configs 3、修改Makefile以及 编辑源码根目录下的Makefile,搜索at91rm9200, 1.1.6 版本在1766行,在1768行插入配置代码,编辑源码目录下 的MAKEALL,搜索at91rm9200,1.1.6版本在190行,在at91rm9200dk后加入h 9200m 即可。 vi u-boot- 1.1.6 /Makefile 4、根据具体的硬件配置,修改参数 因为在at91rm9200引导时,厂商提供了前期初始化的boot.bin,它主要作了部分的硬件初始化,替代U-boot的 stage1部分,所以在U-boot中就应该去掉这部分功能,不然会导致重复配置,使U-boot在初始配置时当掉,因此我们要修改. /include/configs/h 9200m .h,添加#define CONFIG_SKIP_LOWLEVEL_INIT 1(我们默认添在第40行),使U-boot跳过低级初始化过程;我们使用的开发板的nor flash是 4M 的,因此我们搜索PHYS_FLASH_SIZE,复制这行,并将上面的原始一行注释掉,将下面的0x200000 |