S3C2440板子模拟优盘
来源:互联网 发布:js删除字符串中的数字 编辑:程序博客网 时间:2024/04/27 14:46
OS:Linux-2.6.34
CPU:s3c2440
1、配置内核
内核配置如下:
Usb gadget Support 必须选中
USB Peripheral Controller 选择 S3C2410 USB Device Controller
选中USB Gadget Drivers 与File-backed Storage Gadget为模块模式
2、修改arch/arm/mach-s3c2440/mach-smdk2440.c文件
添加如下内容:
/*添加必要的头文件*/
#include <plat/udc.h>
#include <linux/gpio.h>
#include <mach/regs-gpio.h>
#include <mach/hardware.h>
/*设置udc回调函数udc_pullup()用于使能/禁止UDC上拉电阻*/
/*udc*/
static void udc_pullup(enum s3c2410_udc_cmd_e cmd)
{
switch(cmd)
{
case S3C2410_UDC_P_ENABLE:
s3c2410_gpio_setpin(S3C2410_GPG(12),1);
break;
case S3C2410_UDC_P_DISABLE:
s3c2410_gpio_setpin(S3C2410_GPG(12),0);
break;
case S3C2410_UDC_P_RESET:
break;
default:
break;
}
}
static struct s3c2410_udc_mach_info udc_machine = {
.udc_command = udc_pullup,
};
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_usbgadget, /*添加s3c_device_usbgadget(usb gadget设备),即:初始化usb gadget到内核*/
};
static void __init smdk2440_machine_init(void)
{
s3c24xx_fb_set_platdata(&smdk2440_fb_info);
s3c_i2c0_set_platdata(NULL);
/*开机禁止UDC上拉电阻、设置GPG12管脚为输出、完善s3c_device_usbgadget结构*/
s3c2410_gpio_setpin(S3C2410_GPG(12),0);
s3c2410_gpio_cfgpin(S3C2410_GPG(12),S3C2410_GPIO_OUTPUT);
s3c24xx_udc_set_platdata(&udc_machine);
platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
smdk_machine_init();
}
3、修改driver/usb/gadget/s3c2410_udc.c
添加如下内容:
#include <mach/regs-gpio.h>
修改函数
static int s3c2410_udc_probe(struct platform_device *pdev)
{
struct s3c2410_udc *udc = &memory;
struct device *dev = &pdev->dev;
int retval;
int irq;
unsigned long misccr;
misccr = __raw_readl(S3C2410_MISCCR);
misccr &= ~(S3C2410_MISCCR_USBSUSPND0 |
S3C2410_MISCCR_USBSUSPND1 |
S3C2410_MISCCR_USBHOST);
__raw_writel(misccr,S3C2410_MISCCR);
修改函数
static void s3c2410_udc_handle_ep(struct s3c2410_ep *ep)
{
struct s3c2410_request *req;
int is_in = ep->bEndpointAddress & USB_DIR_IN;
u32 ep_csr1;
u32 idx;
handle_ep_again: //2011-3-9 13:48:03 add byliu
。。。。。。。
if ((ep_csr1 & S3C2410_UDC_OCSR1_PKTRDY) && req) {
s3c2410_udc_read_fifo(ep,req);
if (s3c2410_udc_fifo_count_out())
goto handle_ep_again; //2011-3-9 13:48:03 add byliu
}
4、修改drivers/usb/gadget/file_storage.c
修改函数
static int fsg_setup(struct usb_gadget *gadget,
const struct usb_ctrlrequest *ctrl)
{。。。。。
//fsg->ep0req->zero = rc < w_length;
fsg->ep0req->zero = rc < w_length
&& (rc % gadget->ep0->maxpacket) == 0;//2011-3-9 13:47:03 add byliu
fsg->ep0req_name = (ctrl->bRequestType & USB_DIR_IN ?
5、编译内核与模块
[root@lby linux-2.6.34]# make modules SUBDIR=drivers/usb/gadget
[root@lby linux-2.6.34]# make zImage
6、加载模块
加入将CF卡作为U盘
[root@lby linux-2.6.34]# insmod g_file_storage.ko file=/dev/hda1 stall=0 removable=1
参考: http://bbs.embedsky.net/archiver/?tid-1690.html
- S3C2440板子模拟优盘
- 关于S3C2440板子和电脑的网络连线
- 模拟退火板子 poj1379 hdu 5017 hdu2899
- 板子
- 板子
- 终于在我的s3c2440板子上用上了directfb+gtk了
- 移植U-BOOT到S3C2440板子上对读flash的device ID不对的分析
- s3c2440看门狗驱动,附带测试程序,在tq2440板子测试成功
- S3C2440
- s3c2440
- S3C2440
- 用IMX51_EVK小系统模拟新板子--修改u-boot宏定义
- (终端,板子...)Linux下模拟CPU/内存占用工具打包发布+使用说明-cpuup&memup
- 测试板子
- 板子总结
- 入手板子
- 新板子
- Ivus 板子
- 最新县及县以上行政区划代码(截止2009年12月31日)
- 【每天读一点英文】gnuhpc注释版: Suit Is Best 收藏
- The Nice Girl Syndrome vs 渣男的情感操控
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储
- 你在他乡还好吗
- S3C2440板子模拟优盘
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储
- android手机游戏之二线程绘图
- 用汇编实现格雷码与二进制数的转换
- 虚函数与纯虚函数区别
- OpenCV (Linux下的编译与安装)
- 查看内存泄露
- Windows Forms 中 DataGridView 数据导入 导出 Excel
- java字符串与二进制的相互转化