学习ARM开发(13)

由于UBOOT大部份源程序已经修改好,目前就是修改网络部份了。由于网络设计,是采用了16位数据线的方式,还有RTL8019AS采用了9346的存储器,这样的设计都带来了很大的麻烦。因为是全新的东西,没有任何经验,也没有相应的仪器。所以开发这个RTL8019AS的网络驱动,就成为了一个很大的问题。

无论有多难,都要去面对的。要写RTL8019AS的驱动,首先的问题,就是找到S3C44B0访问RTL8019AS的寄存器,如果没有寄存器,就无法对它编程,也没有办法对它控制。那么它的寄存器地址是在那里呢?起先,我是从原理图上找到它的选片接线,是接到CPU的nGCS3上,那么它的地址肯定是从0X0600_0000开始了。接着看到我的RTL8019AS是16位的接线方式,那么它与CPU的连接方式是要从地址线1开始连接,因为S3C44B0对于8位,16位,32位的地址线输出是要求的。这样就可以算出RTL8019AS的地址是0x0600_0000再加上寄存器址左移一位,因为地址线0是不用的,只有1到5在使用。比如复位寄存器地址就是0x0600_0000+(0x1F<<1),这样就可以找到所有寄存器地址了。

地址找到了,那么我就要对它进访问。由于嵌入式的CPU是内存地址与寄存器地址是统一编址的,因此直接访问就行了。刚开始,我直接写寄存器,和读取寄器,发现数据全部都是0XFF,这显然是不对的。就当我修改为其它值,再读出来,都是0XFF,说明寄存器不响应。这时,我不知道是什么原因引起的。接着为了寻找这个问题,就找了一堆资料,结果都找不到。然后又查看硬件,又查找软件。都没有发现有什么问题,实在没有办法了。看到别人的板都没有9346这个存储器,是不是我的存储器有问题?我也搞不懂它。后来就把它拔下来,接着再试还是不行。读取寄存器,还是0XFF值。接着再查看RTL8019AS的DATASHEET,发现65脚跳线也是一个问题。我查看一下我的接线是接了一个电阻,然后再接到VDD上。我试着把这个电阻断开,让它是低电平。

后来一试,果然读写寄存器的值变了,不是0XFF了。说明这些寄存器有效了。

你可能感兴趣的:(ARM)