Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1043613
  • 博文数量: 244
  • 博客积分: 6820
  • 博客等级: 准将
  • 技术积分: 3020
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 21:33
文章分类

全部博文(244)

文章存档

2013年(1)

2012年(16)

2011年(132)

2010年(3)

2009年(12)

2008年(80)

我的朋友

分类: LINUX

2011-04-15 18:04:32

本文主要讲述了开发板与pc之间的一种通信方式,借助LINUX自带的gadget 以及 RNDIS或者cdc驱动与windows 或者LINUX通信.

 

首先配置内核  , 进入LINUX内核文件夹,输入命令

  make menuconfig

 

对内核做如下配置

选择 Device Drivers -->

          [*]USB support -->

               <*>USB Gadget Support -->

                        USB Gadget Drivers

                         ....................................

                        Ethernet Gadget (with CDC Ethernet support)

                         [*] RNDIS support

                         ...................................

                        CDC Composite Device (Ethernet and ACM)

 

编译内核

         make zImage

此时带有gadget 以及RNDIS | CDC 的内核就生成了

 

虽然内核是生成了,但是居然WINDOWS检测不到设备,查阅开发板的手册之后才知道,USB 从设备还有一个USB_EN信号,高电平的时候USB SLAVE才会使用,所以下一步就得修改BOOTLOADER了

 

根据我的情况,控制USB_EN的IO口是GPC5

 

找到初始化IO口的函数.根据S3C2440芯片手册做如下修改(兰色为修改或添加的代码)

 

void Port_Init(void)
{
 GPACON = 0x7fffff;
 GPBCON = 0x044555;
 GPBUP = 0x7ff;  // The pull up function is disabled GPB[10:0]
 GPCCON = 0xaaaaa6aa;
 GPCDAT = 0x0020;
 GPCUP = 0xff7f; // The pull up function is disabled GPC[15:0] ,enable gpc5 for usb_device
 GPDCON = 0x00151544;
 GPDDAT = 0x0430;
 GPDUP = 0x877A;
 GPECON = 0xaa2aaaaa;
 GPEUP = 0xf7ff; // GPE11 is NC
 GPFCON = 0x55aa;
 GPFUP = 0xff;  // The pull up function is disabled GPF[7:0]
 GPGCON = 1<<8;
 GPGDAT = 0;
 GPHCON = 0x16faaa;
 GPHUP = 0x7ff;  // The pull up function is disabled GPH[10:0]
 EXTINT0 = 0x22222222; // EINT[7:0]
 EXTINT1 = 0x22222222; // EINT[15:8]
 EXTINT2 = 0x22222222; // EINT[23:16]
}

 

说明:

 GPCCON = 0xaaaaa6aa; //根据S3C2440的芯片手册gpc5[11:10]为控制该IO口的寄存器,所以第11,10位为分别为1,0
 GPCDAT = 0x0020; // 数据寄存器,1为高电平,所以第5位为1
 GPCUP = 0xff7f; //上拉电阻寄存器 第5位设为0

 

再次编译bootloader,这次WINDOWS终于识别出设备了,至于驱动自己去网上找吧~我用的是CSDN上的驱动.


最后还有一个问题,就是开发板有网卡,还模拟USB为网卡的情况,一定要保证usb虚拟的网卡和WINDOWS上USB网卡在同一个IP段,并且不能和开发板原先的网卡的IP段一样,要不累死你都PING不到~


着是我网卡设置的情况


windows


usb网卡

IP:192.168.2.50 掩码:255.255.255.0 网关:(这个随意,看个人喜好,如果设置网关最好开发板也设置)192.168.2.1


正常网卡

IP:192.168.1.235 掩码:255.255.255.0 网关:192.168.1.1


开发板


usb网卡

IP:192.168.2.70 掩码:255.255.255.0 网关:192.168.2.1


正常网卡

IP:192.168.1.70 掩码:255.255.255.0 网关:192.168.1.1


查看开发板网关

route -n

设置开发板网关

route add default gw 192.168.2.1


这样之后应该就能和WINDOWS PING通了~

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sjmw888/archive/2010/02/27/5332310.aspx

阅读(3224) | 评论(0) | 转发(0) |
0

上一篇:.Linux和UNIX下的dd命令

下一篇:/proc/sys/vm/

给主人留下些什么吧!~~