開發板作模擬網卡(RNDIS)與串口

首先配置內核  , 進入LINUX內核文件夾,輸入命令

  make menuconfig

 

對內核做如下配置

選擇 Device Drivers -->

          [*]USB support -->

               <*>USB Gadget Support -->

                        <M>USB Gadget Drivers

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

                        <M>Ethernet Gadget (with CDC Ethernet support)

                         [*] RNDIS support

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

                        <M>CDC Composite Device (Ethernet and ACM)

 

編譯內核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

 

配置完之後,插在windows下,沒反應。原因是對應的USB_EN引腳沒有置高電平,所以檢測不了。

 

下面對內核做修改

static struct platform_device *smdk2440_devices[] __initdata = {
 &s3c_device_usb,
 /**add to use mmc/sd**/
 &s3c_device_sdi,
 &s3c_device_lcd,
 &s3c_device_wdt,
 &s3c_device_i2c0,
 &s3c_device_iis,
 &s3c_device_usbgadget,  /*USB gadget device設備登記*/
};

 

/*add to use usb*/
#include <plat/pll.h>
#include <mach/regs-clock.h>
#include <asm/delay.h>
static void gt2440_udc_pullup(enum s3c2410_udc_cmd_e cmd)
{
 u8 *s3c2410_pullup_info[] = {
            " ",
            "Pull-up enable",
            "Pull-up disable",
            "UDC reset, in case of"
        };
 s3c2410_gpio_cfgpin(S3C2410_GPG12,S3C2410_GPIO_OUTPUT);
  printk("smdk2410_udc: %s/n",s3c2410_pullup_info[cmd]);
 switch (cmd)
        {
            case S3C2410_UDC_P_ENABLE :
            s3c2410_gpio_setpin(S3C2410_GPG12, 1);   //set gpg12 output HIGH
                break;
            case S3C2410_UDC_P_DISABLE :
                s3c2410_gpio_setpin(S3C2410_GPG12, 0);   //set gpg12 output LOW
                break;
            case S3C2410_UDC_P_RESET :
                //FIXME!!!
                break;
            default:
                break;
        }
}

static struct s3c2410_udc_mach_info gt2440_udc_cfg __initdata = {
        .udc_command    = gt2440_udc_pullup,
    };

 

static void __init smdk2440_map_io(void)
{
 s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

 /*add*/
 //s3c24xx_init_clocks(16934400);
 s3c24xx_init_clocks(12000000);
 s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}

 

就可以了,下面在windows下就能檢測

將內核模塊g_serial.ko或者g_ether.ko放到文件系統裏,開啓後加載

insmod g_serial.ko

echo hello > /dev/ttyGS0

或者

insmod g_ether.ko

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章