修改mini2440 以实现 Linux USB gadget rndis 网络

时间:2021-03-19 16:10:01
平台:Mini2440

系统:linux-2.6.32.2

主机:Windows

配置USB gadget功能中的usbnet时,主要工作是加载g_ether.ko模块,但是试了好几次插到电脑上,都是没反应,windows识别不到设备,查阅资料后才知道是USB接口的上拉问题,mini2440通过GPC5来上拉USB接口,只有这样主机才能识别到设备并提示安装设备。整合了资料后解决了问题,步骤:

打开mach-mini2440.c添加代码:

[html]  view plain copy 修改mini2440 以实现 Linux USB gadget rndis 网络 修改mini2440 以实现 Linux USB gadget rndis 网络
  1. 添加头文件
  2. #include <plat/udc.h>

  3. static void s3c2410_udc_pullup(enum s3c2410_udc_cmd_e cmd)  
  4. {  
  5.         switch (cmd) {  
  6.         case S3C2410_UDC_P_ENABLE :  
  7.                 s3c2410_gpio_cfgpin(S3C2410_GPC(5), S3C2410_GPIO_OUTPUT);  
  8.                 s3c2410_gpio_setpin(S3C2410_GPC(5), 1);  
  9.                 break;  
  10.         case S3C2410_UDC_P_DISABLE :  
  11.                 s3c2410_gpio_setpin(S3C2410_GPC(5), 0);  
  12.                 break;  
  13.         case S3C2410_UDC_P_RESET :  
  14.                 break;  
  15.         default:  
  16.                 break;  
  17.         }  
  18. }  
[html]  view plain copy 修改mini2440 以实现 Linux USB gadget rndis 网络 修改mini2440 以实现 Linux USB gadget rndis 网络
  1. static struct s3c2410_udc_mach_info s3c2410_udc_cfg __initdata = {  
  2.     .udc_command        = s3c2410_udc_pullup,  
  3. };  
mini2440_machine_init函数中添加一句:
[html]  view plain copy 修改mini2440 以实现 Linux USB gadget rndis 网络 修改mini2440 以实现 Linux USB gadget rndis 网络
  1. static void __init mini2440_machine_init(void)  
  2. {  
  3. #if defined (LCD_WIDTH)  
  4.     s3c24xx_fb_set_platdata(&mini2440_fb_info);  
  5. #endif  
  6.     s3c_i2c0_set_platdata(NULL);  
  7.   
  8.     s3c2410_gpio_cfgpin(S3C2410_GPC(0), S3C2410_GPC0_LEND);  
  9.   
  10.     s3c_device_nand.dev.platform_data = &friendly_arm_nand_info;  
  11.     s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg;  
  12.     s3c24xx_udc_set_platdata(&s3c2410_udc_cfg); //添加  
  13.     platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));  
  14.     s3c_pm_init();  
  15. }  
在程序开头添加#include <plat/udc.h>头文件后保存关闭。

make menuconfig配置内核:Device drivers-usb support-usb gadget support

配置如图:

修改mini2440 以实现 Linux USB gadget rndis 网络

注意光标处配置,容易被忽略,选择S3C2410 USB Device Controller

配置完成保存退出,make zImage,用新内核启动linux。

配置命令:ifconfig usb0 172.20.21.88 up

用USB连接D型接口和Windows主机,提示安装设备:

驱动下载地址:http://download.csdn.net/detail/wu20093346/7914915

修改mini2440 以实现 Linux USB gadget rndis 网络

从列表或指定位置安装

修改mini2440 以实现 Linux USB gadget rndis 网络

安装完成后出现一个新的本地连接,修改IP,此时应该可以和mini2440板ping通:

修改mini2440 以实现 Linux USB gadget rndis 网络


对于win7系统,系统自带RNDIS驱动,从计算机驱动设备列表中找到网络适配器,
厂家列表选择Microsoft ,驱动选择RNDIS compat