Linux内核---38.S3C6410中网卡dm9000a的移植
来源:互联网 发布:matlab计算矩阵编程 编辑:程序博客网 时间:2024/05/29 07:58
一. 查看datasheet确认物理信息
1. 查看原理图确认物理基地址
下图是dm9000a的引脚图,从图可知dm9000a是CSN1
CSN1连在了cpu的XMOCSN1上即BANK1
从可知BANK1的基地址是0x1800_0000
2. 确认地址线与数据线的地址
dm9000的cmd引脚是控制数据还是地址的,它连在了6410的addr2上
同时在中有:
当cmd是高,访问的是数据
当cmd是低,访问的是地址
访问不同的地址,ADDR2的值是不同的,即:
0x1800 0000 ADDR2=0 地址线
0x1800 0004 ADDR2=1 数据线
3. 确认dm9000a的位数
中16bit的连线图如下图所示.
16bit的连线图与ok6410中dm9000a的连线图是一样的,
所以ok6410中dm9000a的位数是16bit
4. 中断号的确认
a. 从中可以看出dm9000的中断引脚是IRQ_LAN,
IRQ_LAN与CPU的连线如下图所示
IRQ_LAN连到了XEINT7上面,所以dm9000的中断号是EINT_7.
b. 下面看一下它是上升沿触发还是下降沿触发
EECS, EECK EED_IO这三个引脚都悬空,即都是低电平
在的datasheet中有如下描述
EECK --> 控制中断是高触发还是低触发; high-->低有效; low-->中断高有效
this pin is also used as the strap pin of the polarity of the INT pin
EECS --> 控制总线是8bit还是16bit; high-->8bit; low-->16bit
this pin is also used as the strap pin of the polarity of the internal memory data bus width
二. 移植过程
1. 在arch/arm/mach-s3c64xx/mach-smdk6410.c中添加dm9000的设备信息
在arch/arm/mach-s3c64xx/include/map.h中
1. 查看原理图确认物理基地址
下图是dm9000a的引脚图,从图可知dm9000a是CSN1
CSN1连在了cpu的XMOCSN1上即BANK1
从可知BANK1的基地址是0x1800_0000
2. 确认地址线与数据线的地址
dm9000的cmd引脚是控制数据还是地址的,它连在了6410的addr2上
同时在中有:
当cmd是高,访问的是数据
当cmd是低,访问的是地址
访问不同的地址,ADDR2的值是不同的,即:
0x1800 0000 ADDR2=0 地址线
0x1800 0004 ADDR2=1 数据线
3. 确认dm9000a的位数
中16bit的连线图如下图所示.
16bit的连线图与ok6410中dm9000a的连线图是一样的,
所以ok6410中dm9000a的位数是16bit
4. 中断号的确认
a. 从中可以看出dm9000的中断引脚是IRQ_LAN,
IRQ_LAN与CPU的连线如下图所示
IRQ_LAN连到了XEINT7上面,所以dm9000的中断号是EINT_7.
b. 下面看一下它是上升沿触发还是下降沿触发
EECS, EECK EED_IO这三个引脚都悬空,即都是低电平
在的datasheet中有如下描述
EECK --> 控制中断是高触发还是低触发; high-->低有效; low-->中断高有效
this pin is also used as the strap pin of the polarity of the INT pin
EECS --> 控制总线是8bit还是16bit; high-->8bit; low-->16bit
this pin is also used as the strap pin of the polarity of the internal memory data bus width
二. 移植过程
1. 在arch/arm/mach-s3c64xx/mach-smdk6410.c中添加dm9000的设备信息
- static struct resource smdk6410_dm9000_resource[] = {
- [0] = {
- .start = SMDK6410_PA_DM9000,
- .end = SMDK6410_PA_DM9000 + 3,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = SMDK6410_PA_DM9000 + 4,
- .end = SMDK6410_PA_DM9000 + 4 + 500,
- .flags = IORESOURCE_MEM,
- },
- [2] = {
- .start = IRQ_EINT(7),
- .end = IRQ_EINT(7), //中断号是7
- .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH, //上升沿触发
- },
- };
- static struct dm9000_plat_data smdk6410_dm9000_pdata = {
- .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), //16bit,没有eeprom
- };
- static struct platform_device smdk6410_device_eth = {
- .name = "dm9000",
- .id = -1, //-1说明只有dm9000这个名,没有dm9000.12等
- .num_resources = ARRAY_SIZE(smdk6410_dm9000_resource),
- .resource = smdk6410_dm9000_resource,
- .dev = {
- .platform_data = &smdk6410_dm9000_pdata,
- },
- };
- #define SMDK6410_PA_DM9000 (0x18000000)
0 0
- Linux内核---38.S3C6410中网卡dm9000a的移植
- S3c6410 linux内核移植(2)--- 添加dm9000网卡驱动
- linux-2.6.35内核移植—网卡驱动的移植
- 2440下vxWorks DM9000A网卡驱动移植
- uboot1.3.4(带DM9000A网卡)移植到扬创2440-F的移植详细步骤
- uboot1.3.4(带DM9000A网卡)移植到扬创2440-F的移植详细步骤 .
- WINCE6.0+S3C6410下的DM9000A驱动
- S3C6410 移植Android 内核
- S3C6410 移植Android 内核
- S3C6410 移植Android 内核
- S3C6410 移植Android 内核
- S3C6410 移植Android 内核
- S3C6410 移植Android 内核
- 移植linux内核到s3c6410(配置内核make menuconfig)
- 移植linux内核到s3c6410(编译内核make uImage)
- linux-2.6.35内核移植—网卡驱动的添加
- linux-2.6.35内核移植—网卡驱动的添加
- 扬创utu2440板子uboot1.3.4(带DM9000A网卡)的移植详细步骤
- Join执行流程图
- HDU 5707 Combine String (DP)
- ssh 服务远程登录服务拒绝问题排查
- 拓扑排序
- hdu 5707 Combine String
- Linux内核---38.S3C6410中网卡dm9000a的移植
- DCOS之监控技术选型(中)
- 3.2 决策树算法应用
- UVALive 3667 Ruler (模拟)
- 图的邻接表存储 c实现
- 生成随机数(大写字母,小写字母,数字)
- 【BZOJ 1832】【AHOI 2008】聚会 &【BZOJ 1787】Meet 紧急集合
- Python 知识点
- HTML5+规范:Messaging(管理设备通讯功能)