2、修改uboot根目录下的Makefeils,添加红色部分代码
LIBS += drivers/usb/musb/libusb_musb.a
# Apollo +
LIBS += drivers/usb/slave/libusb_slave.a
# Apollo -
LIBS += drivers/video/libvideo.a
3、修改lib_arm/board.c文件,添加红色部分代码
//Apollo +
Port_Init();
/* enable exceptions */
enable_interrupts ();
usb_init();
//Apollo -
4、修改平台头文件,include/configs/utu2440.h,添加红色部分
#define CONFIG_USB_DEVICE 1
#ifdef CONFIG_USB_DEVICE
#define CONFIG_USE_IRQ 1
#endif
//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
5、修改cpu/arm920t/s3c24x0/interrupts.c 文件,添加arch_interrupt_init函数定义
//Apollo +
int arch_interrupt_init (void)
{
return 0;
}
//Apollo -
6、修改cpu/arm920t/start.S,文件
#ifdef CONFIG_USE_IRQ
.align 5
irq:
//Apollo +,此处开始修改
/*
get_irq_stack
irq_save_user_regs
bl do_irq
irq_restore_user_regs
*/
/* use IRQ for USB and DMA */
sub lr, lr, #4 @ the return address
ldr sp, IRQ_STACK_START @ the stack for irq
stmdb sp!, { r0-r12,lr } @ save registers
ldr lr, =int_return @ set the return addr
ldr pc, =IRQ_Handle @ call the isr
int_return:
ldmia sp!, { r0-r12,pc }^ @ return from interrupt
//Apollo -,修改结束
7、修改include/s3c24x0.h,文件
//Apollo +
S3C24X0_REG8 MAXP_REG;
// S3C24X0_REG8 res10[7];
S3C24X0_REG8 res10[3];
S3C24X0_REG8 EP0_CSR_IN_CSR1_REG;
S3C24X0_REG8 res11[3];
S3C24X0_REG8 IN_CSR2_REG;
// S3C24X0_REG8 res12[3];
S3C24X0_REG8 res12[7];
S3C24X0_REG8 OUT_CSR1_REG;
// S3C24X0_REG8 res13[7];
S3C24X0_REG8 res13[3];
//Apollo -
8、添加usbslave命令
在common目录下创建cmd_usbslave.c