链表项示例-docker部署python爬虫项目的方法步骤

fist_72723 6 0 pdf 2024-07-21 22:07:31

链表项示例第一个链表项存放在0x20000,定义了要传输的第一个数据块,这个数据块是存放在0x0A200和0x0AE00之间的数据。

  • 源起始地址0x0A200

  • 目标地址设为目标外设地址

  • 传输数据宽度:1个字(32位)

  • 传输大小:3072个字节(0xC00)

  • 源和地址突发大小:16个传输

  • 下个LLI地址:0x20010

第二个链表项存放在0x20010,描述了要传输的下个数据块:

  • 源起始地址0x0B200

  • 目标地址设为目标外设地址

  • 传输数据宽度:1个字(32位)

  • 传输大小:3072个字节(0xC00)

  • 源和目标突发大小:16个传输

  • 下个LLI地址:0x20020

这样,一个链表就形成了,每个链表项都指向链表中的下一个链表项。为了初始化DMA流,需要将第一个链表项(位于0x20000)编程到DMA。当第一个数据包被传输后,下个LLI就自动被装载。最后一个LLI存放在0x20070,它包含:

  • 源起始地址0x11200

  • 目标地址设为目标外设地址

  • 传输数据宽度:1个字(32位)

  • 传输大小:3072个字节(0xC00)

  • 源和目标突发大小:16个传输

  • 下个LLI地址:0x0

由于下个LLI地址被设为0,因此,这是最后一个描述符,而且,DMA通道在传输完最后这个数据项后被禁能。当然,通道也可能设置成产生中断来向ARM处理器指明通道可以被重新编程了。

想了解更多关于DMA数据传输的具体实现吗?可以查看DMA数据传输原理以及STM32+DMA数据传输的高效利用。这些资源不仅详细讲解了DMA的工作机制,还提供了实用的编程实例和优化技巧。

如果你对DMA在不同系统下的应用感兴趣,可以看看在RedHat Linux下通过DMA传输数据Nios的DMA传输,这些文章为你提供了跨平台的知识扩展。

对于想要实践的朋友,不妨下载DMA数据传输程序.zip,亲自动手试试吧!

用户评论
请输入评论内容
评分:
暂无评论