日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(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文件所個替換

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

  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)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉