打印

S3C4510B+ATA硬盘的调试笔记2

[复制链接]
327|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
菊江先生|  楼主 | 2018-8-31 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一步:

由于ataResources没有在外部定义,所以在这里自己进行了定义,它主要就是定义IDE寄存器的地址映射,我这里定义如下:

UINT32 ioStart[2] = {0x3600000,0x3604000};

pCtrl->data   = ATA_DATA (ioStart[0]);

pCtrl->error  = ATA_ERROR   (ioStart[0]);

pCtrl->feature    = ATA_FEATURE (ioStart[0]);

pCtrl->seccnt = ATA_SECCNT  (ioStart[0]);

pCtrl->sector = ATA_SECTOR  (ioStart[0]);

pCtrl->cylLo  = ATA_CYL_LO  (ioStart[0]);

pCtrl->cylHi  = ATA_CYL_HI  (ioStart[0]);

pCtrl->sdh    = ATA_SDH     (ioStart[0]);

pCtrl->command    = ATA_COMMAND (ioStart[0]);

pCtrl->status = ATA_STATUS  (ioStart[0]);

pCtrl->aStatus    = ATA_A_STATUS    (ioStart[1]);

pCtrl->dControl   = ATA_D_CONTROL (ioStart[1]);

pCtrl->dAddress   = ATA_D_ADDRESS (ioStart[1]);



第二步:

设置ataDrv()函数的参数值,我是在函数体内直接设好了。具体参数如下:

    ctrl = 0;     /* IDE0 */

    drives = 1;   /* 只有一块硬盘 */

configType = 0x066b; /*配置类型,就是选择Transfer mode、Transfer bits、Transfer unit、Geometry parameters 等参数 */

    wdgTimeout = 10;        /*软件狗定时 */

semTimeout = 10;        /*信号量超时 */

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

447

帖子

0

粉丝