arm9200开发文档

这篇博客记录了作者在2007年移植U-Boot到ARM9200开发板上的过程,包括设置程序运行地址,调试仿真器,初始化NAND Flash,解决IIC问题,以及针对硬件的特定配置。作者详细描述了nand_init()函数的实现,以及如何为板子的NAND Flash定制硬件控制函数。此外,还提到了配置文件的修改,如设置CFG_NAND_LEGACY,以及解决环境变量存储在NAND Flash中的问题。
摘要由CSDN通过智能技术生成

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.选择的pllapllb可以通过设置相应的寄存器来倍频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
SDRAM: 32M (2× 8M ×16
)           0x2000_0000-0x21FF_FFFF
NAND Flash: 64M ->
存放数据

JP100: 1
2短接,从flash启动,启动Flash中固化的程序。
       2
3短接,从片内ROM启动,启动片内ROM中的程序。

[编辑]

主要地址资源分配

[编辑]

使用厂商提供的低级初始化模块的资源分配

资源名字

接口方式

内存分布

备注

SDRAM

NCS1

20000000-21FFFFFF

32M

FLASH

NCS0

10000000-103FFFFF

4M

 

 

10000000-10005FFF

boot.bin

 

 

10010000-1001FFFF

Uboot.gz

 

 

10020000-1015FFFF

uImage

 

 

10160000-102FFFFF

ramdisk

 

 

103F 0000-103FFFFF

环境变量的存放地点

[编辑]

完全使用Uboot来做bootloader的资源分配

资源名字

接口方式

内存分布

备注

SDRAM

NCS1

20000000-21FFFFFF

32M

FLASH

NCS0

10000000-103FFFFF

4M

 

 

10000000-1001FFFF

u-boot.bin

 

 

10020000-1015FFFF

uImage

 

 

10160000-102FFFFF

ramdisk

 

 

103F 0000-103FFFFF

环境变量的存放地点

[编辑]

移植u-boot到目标板

[编辑]

U-Boot主要目录结构

board 目标板相关文件,比如Makefileu-boot.lds等都和具体的开发板的硬件和地址分配有关;
common
独立于处理器体系结构的通用代码,与体系结构无关的文件。实现各种命令的C文件,如内存大小探测与故障检测;
cpu
与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;
disk disk
驱动的分区处理代码
driver
通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好)
doc U-Boot
的说明文档;
examples
可在U-Boot下运行的示例程序;如hello_world.c,timer.c
include U-Boot
头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;
lib_xxx
处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与PowerPCARM体系结构相关的文件;
net
与网络功能相关的文件目录,如bootp,nfs,tftp
post
上电自检文件目录。尚有待于进一步完善;
rtc RTC
驱动程序;
tools
用于创建U-Boot S-RECORDBIN镜像文件的工具;

[编辑]

u-boot 1.1.6 boot.bin移植方法

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用来配置Flashu-boot.lds是内核链接器的脚本文件。 命令:

cd u-boot- 1.1.6 /board
cp at91rm9200dk/ h 9200m –R
cd h 9200m
mv at91rm9200dk.c h 9200m .c
vi Makefile
       /at91rm9200  
u-boot 1.1.6版本中在第28行)
      
修改at91rm9200dkh 9200m

2、进入./include/configs

    at91rm9200dk.h为模板,生成h 9200m .h;在这里的文件都是和硬件系统配置息息相关,它需记录新平台的所有配置参数。 命令:

cd u-boot- 1.1.6 /include/configs
cp at91rm9200dk.h h 9200m .h

3、修改Makefile以及

    编辑源码根目录下的Makefile,搜索at91rm9200 1.1.6 版本在1766行,在1768行插入配置代码,编辑源码目录下 MAKEALL,搜索at91rm92001.1.6版本在190行,在at91rm9200dk后加入h 9200m 即可。
命令:

vi u-boot- 1.1.6 /Makefile
       /at91rm9200
      
输入:
       h 9200m _config   :        unconfig
                @$(MKCONFIG) $(@:_config=) arm arm920t h 9200m NULL at91rm9200
vi u-boot-1.1.6/MAKEALL
       /AT91RM9200      (1.1.6
版本是在第190)
     
(插入h 9200m ,插入后如下:)

             At91rm9200dk     h 9200m       cmc_pu2                    /

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值