|
---uClinux下DM9000a 和SD卡驱动的安装与调试
这篇主要讲网卡dam9000a和SD卡驱动的安装,调试.
以及相应的软硬件设计.
实验环境:
硬件:
红色飓风 Red2-2c70
Flash: 8M*16bit SDRAM: 16M*32bit
软件:
Quartus8.0+Nios8.0+Vmware5.0/6.0+CentOS5.3+uClinux
相关概念:
1>.dm9000a网卡
DM9000a是Davicom公司生产,是一个比较常用的16/8 bit的 MAC+PHY 以太网控制器,可以用3.3v,5v供电,
支持10/100M的网络自适应.
2>.dm9000a驱动
uClinux 下有丰富的网络驱动,支持多种MAC或PHY芯片.
目前dm9000a的驱动常用的有三种:
Microtronix公司写的dm9000x.c,
Davicom公司自己写的dm9ks.c,
还有最常用的是dm9000.c,
比较老的uclinux带有dm9ks.c,实测对于100M的网速,网卡工作有些不稳定.
新的版本(
3>.SD卡相关
SD卡工作方式有两种:
SD模式:有1位SD模式和4位SD模式,4位时使用额外的针脚,实现4位数据并行传输,速率基本是1位SD模式和SPI模式的4倍.
SPI模式:比较常用4线,SDI,SDO,SCK,CS,速率基本是0~25Mbit/s.
由于Altera自带SPI的IP核,且接线简单,所以本设计采用SPI方式读写SD卡.
一. 硬件设计
采用terasIC的DM9000 IP核,
选择Altera自带的SPI IP核.
Interface ProtocolsàSerialàSPI(3 Wire Serial),
设置SPI
SOPC资源sopc
注意事项
1>.在定制dm9000a时,component name应为dm9000
2>.将名字更改为mmc_spi,否则驱动找不着,
或修改linux-2.6/arch/nios2/kernel/config.c文件.
3>.中断号不能为’0’
二. 软件设计
驱动选择:
#make menuconfig //config选择
保存退出后,进入到内核配置界面:
1. dm9000a Driver
1>.选择如下驱动
Networking----à
[*] Networking support
Networking options--à
[*] Packet socket
[*] Unix domain socket
[*] TCP/IP networking
[*] IP: kernel level autoconfiguration
[*] IP: DHCP Support
Device Drivers---à
[*] Network device support
[*] Ethernet (10 or 100Mbit)
[*]DM9000 support
2>.选择应用程序或库文件
Core Applications--à
[*] init
[*] enable console shell
(sash) Shell Program
[*] sash ps
Network Application---à
[*] boa
[*] dhcpcd-new
[*] ftp
[*] inetd
[*] telnetd
再在busybox下面选一些常用工具,即可.
3>.修改驱动,加入MAC地址
2. SD卡Driver
1>.选择如下驱动
Device Drivers----à
[*] SPI support
[*] Altera SPI Controller
[*] MMC/SD card support --à
[*] MMC block device driver
[*] Use bounce buffer for simple hosts
[*] MMC/SD over SPI
File Systems---à
[*] Ext3 journalling file system support
DOS/FAT/NT Filesystems-à
[*] VFAT(Windows-95) fs support
(437) Default codepage for FAT
(iso8859-1) (Latin 1; Western European Languages)
2>.选择应用程序或库文件
在Busybox下选择要使用工具,如mount,umount,fdisk,vi…等
3. 注意事项
1>.Dm9000a的驱动,要在程序中加入MAC地址,否则会出现类似
SIOCSIFHWADDR错误.
2>.在系统识别到SD后,mount时要注意:
对于SD卡,有分区表的,为mmcblk0p1,没有的为mmcblk0.
其实这会在启动信息里显示出来的.
挂载点错误,会出现类似:
mount:mounting /dev/mmcblk0 on /mnt failed: Invalid argument错误
三. 测试方法结果
1.启动信息
在下载内核时,启动过程会显示出设备名称,以及相应的驱动信息.
dm9000a,驱动dm9000.c v.1.30;
IRQ为5 ;
MAC为00:02:ed;0a:07:25
SD卡,显示出SPI的驱动信息,并识别到SD信息: