现在的位置: 首页 > 综合 > 正文

uboot中IDE移植

2012年09月29日 ⁄ 综合 ⁄ 共 1824字 ⁄ 字号 评论关闭

1.配置

首先要支持IDE需要在CONFIG_COMMANDS中添加CFG_CMD_IDE命令,然后要添加IDE的相关配置信息。不看代码就不知道需要哪些信息,可以先编译一下试试,如果出错就会提示哪些宏没有定义,直接定义就行了,而且在u-boot的README文件中没有相关信息,这一点也感觉有点儿不解,为什么没有IDE的相关配置说明?

我是搜索/include/configs文件夹中的配置文件,支持IDE的配置文件有几个,但多是PPC的,ARM的只有shannon.h而且CPU用的是sa1100,其它ARM的开发板好像都不支持IDE,或者说没有把u-boot的IDE移植过去。又看了几个支持IDE的配置文件,大概需要以下几个配置:

#define CFG_ATA_BASE_ADDR 0x04000000 /* Offset for data I/O */  
#define CFG_ATA_IDE0_OFFSET 0x0000

#define CFG_ATA_REG_OFFSET 0 /* Offset for alternate registers */  
#define CFG_ATA_DATA_OFFSET 0 /* Offset for normal register accesses */   
#define CFG_ATA_ALT_OFFSET 0

#define CFG_IDE_MAXBUS 1 /* max. 1 IDE bus */  
#define CFG_IDE_MAXDEVICE 1 /* max. 1 drive per IDE bus */

配置完了,一编译又出现新的错误,说有些函数没有定义,如inb, outb, inw, outw, insw, outsw等,查看了一下cmd_ide.c文件,发现里面相关的配置信息里有一个关于IO操作的配置,不同的板子引用了不同的IO操作的头文件,这些头文件都在/include/asm-xxx目录里,当然s3c44b0的就应该在/include/asm-arm里。打开io.h,发现里面已经有这几个函数的宏定义了,但被一个宏__io给控制着,可能这个宏没有定义,也不知道这个宏应该在哪儿定义,看形状像是编译器的一个选项,但又没地儿去查,于是就在下面重新定义了那些IO的操作宏

2006-09-1  
今天开始调试,都是超时,没有反应,后来看IDE的寄存器地址发现板上的地址线居然连得都是乱的,导致硬盘的寄存器地址在配置时很麻烦,就在ata.h中重新定义了宏。

感觉地址应该没问题,但编译后仍然无法识别硬盘,考虑到是不是数据线宽度不同,于时就查看low_level_init.s,发现nGCS2是16位,应该没有问题;又想到是不是时序有问题,就改了nGCS2 的配置,把所有的时间参数都调到最大,然后判断WAIT,结果不超时了,但是仍然不能识别设备。由于还没弄清楚WAIT有多大影响,试试不就行了,于是去掉了WAIT判断,结果可以识别设备,但识别为Removable Harddisk,提示信息如下:

Device 0: Model: Firm: 02 0 Ser#:

Type: Removable Hard Disk

Capacity: 101791.1 MB = 99.4 GB (208468288 x 512)  
而我的硬盘是80G的,那么这些数据应该读得不正确!

2006-9-1  
查了一下信号,又发现DMACK-应该是从主机向设备方向的信号,原来在IO初始化程序中DMACK-被初始化为输入,而输入可能导致设备处信号为低电平,而该信号又刚好是低电平有效,有可能导致数据的读写被忽略!后将PG3配置为输出,高电平。   

结果读出来的是不一样了,但也不对啊容量还是不对,提示信息   
OK

Device 0: Model: Firm: 082 Ser#:

Type: Removable Hard Disk

Capacity: 101791.1 MB = 99.4 GB (208468288 x 512)

ide_read dev 0 start 0, blocks 1 buffer at C6CF8C0

Powersaving FF

这是第一次,以后的就成了  
OK

Device 0: Model: Firm: 082 Ser#:

Type: Removable Hard Disk

Capacity: 101791.1 MB = 99.4 GB (208468288 x 512)

ide_read dev 0 start 0, blocks 1 buffer at C6CF8C0

Powersaving FF  
Firm成了082

抱歉!评论已关闭.