????λ?????????? >> ???????????
Linux?豸?????DMA
???????????? ???????[ 2016/5/4 13:17:00 ] ?????????????? Linux
????3??DMA?豸?????
????/* DMA device structre */
????typedef struct {
????dma_callback_t callback;//DMA????????????????????ж?????????е???
????u_long dst;//???????????
????u_long src;//??????????
????u_long ctl;//???豸?????????????
????u_long dst_ctl;//??????????????
????u_long src_ctl;//?????????????
????} dma_device_t;
????4??DMA????????
????/* DMA channel structure */
????typedef struct {
????dmach_t channel;//?????????0??1??2??3
????unsigned int in_use; /* Device is allocated ?豸?????*/
????const char *device_id; /* Device name ?豸??*/
????dma_buf_t *head; /* where to insert buffers ??DMA??????????????*/
????dma_buf_t *tail; /* where to remove buffers??DMA?????????????β*/
????dma_buf_t *curr; /* buffer currently DMA'ed??DMA??????????????е?????????*/
????unsigned long queue_count; /* number of buffers in the queue ?????л?????????*/
????int active; /* 1 if DMA is actually processing data ????????????????*/
????dma_regs_t *regs; /* points to appropriate DMA registers ?????????DMA????????*/
????int irq; /* IRQ used by the channel //?????????ж??*/
????dma_device_t write; /* to write //??ж???????DMA?豸*/
????dma_device_t read; /* to read ???д??????DMA?豸*/
????} s3c2410_dma_t;
????DMA??????????????????:
????д???DMA???????????????????DMA???????DMA?ж????????????????á?????DMA??????С????DMA?ж?????DMA???.
????int s3c2410_request_dma(const char *device_id?? dmach_t channel??
????dma_callback_t write_cb?? dma_callback_t read_cb) (s3c2410_dma_queue_buffer);
????????????????????????DMA????????s3c2410_dma_t ????????????????DMA?ж??
?????????????device_id DMA ?豸????channel ??????
????write_cb DMAд????????????????read_cb DMA????????????????
???????????????channel?????????????????????????0
????int s3c2410_dma_queue_buffer(dmach_t channel?? void *buf_id??
????dma_addr_t data?? int size?? int write) (s3c2410_dma_stop);
??????????????????DMA????????????????????????ж?????????????????DMA?????????????????????????DMA??????У?????DMA????????????????DMA????????
????????????? channel ??????buf_id???????????
????dma_addr_t data DMA????????????????????size DMA???????????С??write ??д?????????
??????????????????????????0??????????????
????int s3c2410_dma_stop(dmach_t channel)
????????????????DMA??????
????int s3c2410_dma_flush_all(dmach_t channel)
?????????????????DMA????????????????????
????void s3c2410_free_dma(dmach_t channel)
?????????????????DMA???
?????????????????????????????DMA???????????????????????3?????????ɡ???????????????е???s3c2410_request_dma?????DMA?????????s3c2410_dma_queue_buffer?????????????????s3c2410_free_dma??
???????????????????????漰???????????????????SPASVOС??(021-61079698-8054)?????????????????????????
??????
Linux??????DDR????????????Linux?????????????????豸??????????linux???в???????????м??????????????????????????Linux????Linux??DNS????????????γ???????????Linux?????????????Linux????(???)????????Linux ????????????????????????????????Windows???У?Linux???????Linux????????????????Linux iommu??vfio???????Linux????ε???TCP???????Linux?????????????СLinux?·???????????Linux???Jexus?й?Asp.Net Core??ó???Linux?????????Щ??
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11????????
?????????App Bug???????????????????????Jmeter?????????QC??????APP????????????????app?????е????????jenkins+testng+ant+webdriver??????????????JMeter????HTTP???????Selenium 2.0 WebDriver ??????