www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 以前做過usb下載的東東,現(xiàn)在把它搞到u-boot-2010.06-rc1上去.網(wǎng)上有usb下載的代碼,可以在這兒下載:http://blogimg.chinaunix.net/blog/upfile2/100109001526.bz2一. 先編譯過再說1.下載后,解壓到u-boot

以前做過usb下載的東東,現(xiàn)在把它搞到u-boot-2010.06-rc1上去.

網(wǎng)上有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文件所個(gè)替換

  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中結(jié)構(gòu)體都是小寫,跟下載的代碼中結(jié)構(gòu)體名字是大寫的,需要將大寫的名字改成小寫的,這樣才可以編譯過去.

  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.添加兩個(gè)宏定義

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

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


  4. b.修改s3c24x0_usb_device結(jié)構(gòu)體

  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)調(diào)用了ClearPending,其實(shí)現(xiàn)如下:

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

  2. //添加 ClearPending的實(shí)現(xiàn):

  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)調(diào)用了Isr_Init(),其實(shí)現(xiàn)如下

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;

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉