这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 44b0 ide驱动问题

共4条 1/1 1 跳转至

44b0 ide驱动问题

菜鸟
2005-12-06 00:29:21     打赏

我按照liaodao大哥的方法,对//include/asm-armnommu/ide.h文件进行了修改,编译已经通过,运行时也看到了添加的printk("ide_init_hwif_ports\n");的提示,但就是找不到硬盘,请问是什么原因,是不是还需要修改其他的什么地方?

修改后的代码如下,

#define IDE_BASE 0x04000000//硬盘控制器开始地址
#define IDE_CTRL 0x0400002c//
#define IDE_IRQ INT_EINT2 //使用的外部中断号
/*----------------------------------------------------------*/
static __inline__ int ide_default_irq(ide_ioreg_t base)
{
return IDE_IRQ;
}
static __inline__ ide_ioreg_t ide_default_io_base(int index)
{
return IDE_BASE;
}
/*----------------------------------------------------------*/
/*
* Set up a hw structure for a specified data port, control port and IRQ.
* This should follow whatever the default interface uses.
*/
static __inline__ void ide_init_hwif_ports( hw_regs_t *hw, ide_ioreg_t data_port,
ide_ioreg_t ctrl_port, int *irq)
{
ide_ioreg_t reg = data_port;
printk("ide_init_hwif_ports\n");//给点提示,让我们知道uClinux的确跑到这里了
hw->io_ports[IDE_DATA_OFFSET] = 0x04000002;
hw->io_ports[IDE_ERROR_OFFSET] = 0x04000012;
hw->io_ports[IDE_NSECTOR_OFFSET] = 0x04000022;
hw->io_ports[IDE_SECTOR_OFFSET] = 0x04000032;
hw->io_ports[IDE_LCYL_OFFSET] = 0x0400000A;
hw->io_ports[IDE_HCYL_OFFSET] = 0x0400001A;
hw->io_ports[IDE_SELECT_OFFSET] = 0x0400002A;
hw->io_ports[IDE_STATUS_OFFSET] = 0x0400003A;
hw->io_ports[IDE_CONTROL_OFFSET] = 0x0400002c;
}
//――――――――――――――――――――――
/*----------------------------------------------------------*/
/*
* This registers the standard ports for this architecture with the IDE
* driver.
*/
static __inline__ void ide_init_default_hwifs(void)
{
hw_regs_t hw;
printk("ide_init_default_hwifs\n");
//--------------------------------------------------------
(*(volatile unsigned short *)0x0A200000)|=0x0040; // Set IDE Reset to High
(*(volatile unsigned short *)rPCONG) |= 0x0030;//Enable EINT2 Func 设置该端口为外部中断功能
(*(volatile unsigned short *)rPUPG) &= 0xFFFB;//Enable Pull-up for EXTINT2 使能内部上拉电阻
(*(volatile unsigned long *)rEXTINT) &= 0xFFFFF8FF;//Set Rising edge 设置为上升沿触发中断
(*(volatile unsigned long *)rEXTINT) |=0x00000400;
//--------------------------------------------------------
ide_init_hwif_ports(&hw,IDE_BASE,IDE_CTRL, NULL);
hw.irq = IDE_IRQ;
ide_register_hw(&hw, NULL);

同时也改动了 uClinux-release/vendors/Samsung/44b0x/下的makefile 文件内容

\
hda,b,3,0 hdb,b,3,64 \
hda1,b,3,1 hda2,b,3,2 hda3,b,3,3 hda4,b,3,4\
hda5,b,3,5 hda6,b,3,6 hda7,b,3,7 hda8,b,3,8\
hdb1,b,3,65 hdb2,b,3,66 hdb3,b,3,67 hdb4,b,3,68\
hdb5,b,3,69 hdb6,b,3,70 hdb7,b,3,71 hdb8,b,3,72\
\




关键词: 驱动     问题     ports    

菜鸟
2005-12-06 16:32:00     打赏
2楼

怎么没人来啊?


菜鸟
2005-12-12 16:32:00     打赏
3楼

我用的是炜煌的是s3c44box,demo板是不是网上的公板?


菜鸟
2006-06-04 22:59:00     打赏
4楼
I have the same problem.
How to solve the problem???

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]