当前位置:首页 > 单片机 > 单片机
[导读] 以前做过usb下载的东东,现在把它搞到u-boot-2010.06-rc1上去.网上有usb下载的代码,可以在这儿下载:http://blogimg.chinaunix.net/blog/upfile2/100109001526.bz2一. 先编译过再说1.下载后,解压到u-boot

以前做过usb下载的东东,现在把它搞到u-boot-2010.06-rc1上去.

网上有usb下载的代码,可以在这儿下载:

http://blogimg.chinaunix.net/blog/upfile2/100109001526.bz2

一. 先编译过再说

1.下载后,解压到u-boot-2010.06-rc1/drivers/usb/slave目录

并在顶层Makefile中添加:LIBS += drivers/usb/slave/libusb_slave.a

2. 将driver/usb/slave/目录下所有C文件所个替换

  1. a.

  2. #ifdefined(CONFIG_S3C2400)

  3. #include

  4. #elif defined(CONFIG_S3C2410)||defined(CONFIG_S3C2440)

  5. #include

  6. #endif

  7. #include

  8. 替换为

  9. #include

  10. b. 删除driver/usb/slave/interrupt.c

  11. c. 修改driver/usb/slave/Makefile中的 COBJS, 去掉interrupt.o

3.u-boot-2010.06-rc1中结构体都是小写,跟下载的代码中结构体名字是大写的,需要将大写的名字改成小写的,这样才可以编译过去.

  1. a.将usbin.c中

  2. L21

  3. /*

  4. extern S3C24X0_USB_DEVICE*usbdevregs;

  5. extern S3C24X0_DMAS*dmaregs;

  6. */

  7. extern struct s3c24x0_usb_device * usbdevregs;

  8. extern struct s3c24x0_dmas * dmaregs;

  9. L32解决: warning: suggest parentheses around arithmetic in operand of |


  10. #define SET_EP1_IN_PKT_READY() usbdevregs->EP0_CSR_IN_CSR1_REG= ((in_csr1 &(~ EPI_WR_BITS))

  11. | EPI_IN_PKT_READY )

  12. #define SET_EP1_SEND_STALL() usbdevregs->EP0_CSR_IN_CSR1_REG= ((in_csr1 & (~EPI_WR_BITS))

  13. | EPI_SEND_STALL) )

  14. #define CLR_EP1_SENT_STALL() usbdevregs->EP0_CSR_IN_CSR1_REG= ( (in_csr1 & (~EPI_WR_BITS))

  15. &(~EPI_SENT_STALL) )

  16. #define FLUSH_EP1_FIFO() usbdevregs->EP0_CSR_IN_CSR1_REG= ( (in_csr1 & (~EPI_WR_BITS))

  17. |(EPI_FIFO_FLUSH) )

  18. b.将usblib.c中

  19. L23

  20. /*

  21. extern S3C24X0_INTERRUPT*intregs;

  22. extern S3C24X0_USB_DEVICE*usbdevregs;

  23. extern S3C24X0_DMAS*dmaregs;

  24. */

  25. extern struct s3c24x0_interrupt * intregs;

  26. extern struct s3c24x0_usb_device *usbdevregs;

  27. extern struct s3c24x0_dmas * dmaregs;

  28. c.usbinit.c 中

  29. L22

  30. /*

  31. extern S3C24X0_INTERRUPT*intregs;

  32. S3C24X0_USB_DEVICE*usbdevregs;

  33. S3C24X0_DMAS*dmaregs;

  34. S3C24X0_CLOCK_POWER*clk_powerregs;

  35. S3C24X0_GPIO*gpioregs;

  36. */

  37. extern struct s3c24x0_interrupt * intregs;

  38. struct s3c24x0_usb_device * usbdevregs;

  39. struct s3c24x0_dmas * dmaregs;

  40. struct s3c24x0_clock_power * clk_powerregs;

  41. struct s3c24x0_gpio * gpioregs;

  42. L122:

  43. //gpioregs=S3C24X0_GetBase_GPIO();

  44. gpioregs = s3c24x0_get_base_gpio();

  45. L222

  46. /*

  47. clk_powerregs=S3C24X0_GetBase_CLOCK_POWER();

  48. usbdevregs=S3C24X0_GetBase_USB_DEVICE();

  49. dmaregs=S3C24X0_GetBase_DMAS();

  50. */

  51. clk_powerregs = s3c24x0_get_base_clock_power();

  52. usbdevregs = s3c24x0_get_base_usb_device();

  53. dmaregs = s3c24x0_get_base_dmas();


  54. L297

  55. //S3C24X0_INTERRUPT*intregs;

  56. struct s3c24x0_interrupt * intregs;


  57. //intregs=S3C24X0_GetBase_INTERRUPT();

  58. intregs = s3c24x0_get_base_interrupt();

  59. d.usbmain.c 中

  60. L20

  61. /*

  62. extern S3C24X0_USB_DEVICE*usbdevregs;

  63. extern S3C24X0_DMAS*dmaregs;

  64. */

  65. extern struct s3c24x0_usb_device * usbdevregs;

  66. extern struct s3c24x0_dmas * dmaregs;

  67. L444 解决: warning: suggest parentheses around arithmetic in operand of |


  68. 444 gpioregs->MISCCR =(gpioregs->MISCCR&~(7<<4))| (clock_sel<<4);

  69. 445 gpioregs->GPHCON =(gpioregs->GPHCON&~(3<<18))| (2<<18);

  70. e.usbout.c中

  71. L28

  72. /*

  73. extern S3C24X0_INTERRUPT*intregs;

  74. extern S3C24X0_USB_DEVICE*usbdevregs;

  75. extern S3C24X0_DMAS*dmaregs;

  76. */

  77. extern struct s3c24x0_interrupt * intregs;

  78. extern struct s3c24x0_usb_device * usbdevregs;

  79. extern struct s3c24x0_dmas * dmaregs;

  80. L188

  81. //ClearPending_my(BIT_DMA2);

  82. ClearPending(BIT_DMA2);

  83. f.usbsetup.c中

  84. L19

  85. /*

  86. extern S3C24X0_INTERRUPT*intregs;

  87. extern S3C24X0_USB_DEVICE*usbdevregs;

  88. extern S3C24X0_DMAS*dmaregs;

  89. */

  90. extern struct s3c24x0_interrupt * intregs;

  91. extern struct s3c24x0_usb_device * usbdevregs;

  92. extern struct s3c24x0_dmas * dmaregs;

  93. L46 解决: warning: suggest parentheses around arithmetic in operand of |


  94. #define CLR_EP0_OUT_PKT_RDY() usbdevregs->EP0_CSR_IN_CSR1_REG=((ep0_csr & (~EP0_WR_BITS))|

  95. EP0_SERVICED_OUT_PKT_RDY )

  96. #define CLR_EP0_OUTPKTRDY_DATAEND() usbdevregs->EP0_CSR_IN_CSR1_REG=( (ep0_csr & (~EP0_WR_BITS) )|

  97. (EP0_SERVICED_OUT_PKT_RDY|EP0_DATA_END) )


  98. #define SET_EP0_IN_PKT_RDY() usbdevregs->EP0_CSR_IN_CSR1_REG=( (ep0_csr & (~EP0_WR_BITS) ) |

  99. (EP0_IN_PKT_READY) )

  100. #define SET_EP0_INPKTRDY_DATAEND() usbdevregs->EP0_CSR_IN_CSR1_REG=( (ep0_csr & (~EP0_WR_BITS))|

  101. (EP0_IN_PKT_READY|EP0_DATA_END) )


  102. #define CLR_EP0_SETUP_END() usbdevregs->EP0_CSR_IN_CSR1_REG=( (ep0_csr & (~EP0_WR_BITS)) |

  103. (EP0_SERVICED_SETUP_END) )


  104. #define CLR_EP0_SENT_STALL() usbdevregs->EP0_CSR_IN_CSR1_REG=( (ep0_csr & (~EP0_WR_BITS) )&

  105. (~EP0_SENT_STALL) )


  106. #define FLUSH_EP0_FIFO() {while(usbdevregs->OUT_FIFO_CNT1_REG)usbdevregs->fifo[0].EP_FIFO_REG;}

4.arch/arm/include/asm/arch/s3c24x0.h中

  1. a.添加两个宏定义

  2. #define BIT_DMA2 (0x1<<19)

  3. #define BIT_USBD (0x1<<25)


  4. b.修改s3c24x0_usb_device结构体

  5. //u8 res10[7]

  6. u8 res10[3];

  7. //u8 res12[3]

  8. u8 res12[7];

  9. //u8 res13[7]

  10. u8 res13[3];

  11. /*

  12. struct s3c24x0_usb_dev_fifos fifo[5];

  13. struct s3c24x0_usb_dev_dmas dma[5];

  14. */

  15. u32 res17[8];

  16. struct s3c24x0_usb_dev_fifos fifo[5];

  17. u32 res18[11];

  18. struct s3c24x0_usb_dev_dmas ep1;

  19. struct s3c24x0_usb_dev_dmas ep2;

  20. u8 res19[16];

  21. struct s3c24x0_usb_dev_dmas ep3;

  22. struct s3c24x0_usb_dev_dmas ep4;


  23. c.修改 struct s3c24x0_gpio

  24. L481 添加:

  25. /*s3c2440*/

  26. u32 res9[4];

  27. u32 GPJCON;

  28. u32 GPJDAT;

  29. u32 GPJUP;

5.usbmain.c中void IsrUsbd(void)调用了ClearPending,其实现如下:

  1. arch/arm/cpu/arm920t/interrupt.c

  2. //添加 ClearPending的实现:

  3. void ClearPending(int bit)

  4. {

  5. intregs->SRCPND = bit;

  6. intregs->INTPND = bit;

  7. }

  8. 并修改driver/usb/slave/usbmain.c

  9. //ClearPending_my(BIT_USBD);

  10. ClearPending(BIT_USBD);

6. usbmain.c的usb_init_slave(void)调用了Isr_Init(),其实现如下

arch/arm/cpu/arm920t/interrupt.c中添加

  1. #include


  2. struct s3c24x0_interrupt*intregs;

  3. void(*isr_handle_array[50])(void);

  4. extern void IsrUsbd(void);

  5. extern void IsrDma2(void);

  6. void Dummy_isr(void)

  7. {

  8. printf("Dummy_isr error, interrupt number: %d, INTMSK = 0x%xn",intregs->INTOFFSET,intregs->INTMSK);

  9. while(1);

  10. }

  11. //初始化irq的中断向量表

  12. void Isr_Init(void)

  13. {

  14. inti=0;

  15. intregs=s3c24x0_get_base_interrupt();


  16. for(i=0;i

  17. {

  18. isr_handle_array[i]=Dummy_isr;

  19. }


  20. intregs->INTMOD=0x0;//All=IRQ mode

  21. intregs->INTMSK=BIT_ALLMSK;//All interruptismasked.


  22. #ifdef CONFIG_USB_DEVICE

  23. isr_handle_array[ISR_USBD_OFT]=IsrUsbd;

  24. isr_handle_array[ISR_DMA2_OFT] = IsrDma2;

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭