- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于某些设计要求,我需要在运行时更改 DMA 描述符。为了实现这一点,我遵循以下步骤:
//Select DMA channel
DMAC->CHID.reg = DMAC_CHID_ID(cSPIDMAResource0.channel_id);
//Abort Selected DMA channel
DMAC->CHCTRLA.reg &= ~DMA_CHANNEL_ENABLE_BIT_POS;
//Wait until Abort completed
while((DMAC->CHCTRLA.reg & DMA_CHANNEL_ENABLE_BIT_POS) == DMA_CHANNEL_ENABLE_BIT_POS);
/*
Modify Descriptor here
*/
//Enable DMA channel
DMAC->CHCTRLA.reg |= DMA_CHANNEL_ENABLE_BIT_POS;
最佳答案
为什么不使用 atmel 软件框架的 dma 驱动程序?这是他们如何进行中止。
void dma_abort_job(struct dma_resource *resource)
{
uint32_t write_size;
uint32_t total_size;
Assert(resource);
Assert(resource->channel_id != DMA_INVALID_CHANNEL);
system_interrupt_enter_critical_section();
DMAC->CHID.reg = DMAC_CHID_ID(resource->channel_id);
DMAC->CHCTRLA.reg = 0;
system_interrupt_leave_critical_section();
/* Get transferred size */
total_size = descriptor_section[resource->channel_id].BTCNT.reg;
write_size = _write_back_section[resource->channel_id].BTCNT.reg;
resource->transfered_size = total_size - write_size;
resource->job_status = STATUS_ABORTED;
}
system_interrupt_leave_critical_section()
禁用中断。在用于中止 dma channel 的寄存器写入期间。
关于c - Atmel SAMD21 DMA 中止问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33750367/
在 PCIe 配置中,设备具有专用地址,并且它们以点对点模式相互发送数据 - 每个设备都可以随时写入,并且交换机会注意正确地转发数据。不需要“总线主控器”来决定何时以及如何传输数据。 DMA 如何在这
我正在尝试使用 Linux DMA 驱动程序。目前,当我发送交易并开始等待时,我的请求超时。我相信这与我在执行 DMA 映射时设置缓冲区的方式有关。 char *src_dma_buffer = km
如上所述,dma 引擎和 dma Controller (重点是 linux)有什么区别? linux dma 引擎什么时候到位?这是一个特殊的设备还是所有支持 dma 的外围设备的一部分? 在浏览l
DMA 缓冲区是由驱动程序映射的内存。例如,在使用 rtl8319 的 pci-skeleton.c 中,我们有: tp->tx_bufs = pci_alloc_consistent(tp->p
什么是 Linux 内核上下文中的 DMA 映射和 DMA 引擎?什么时候可以在 Linux 设备驱动程序中使用 DMA 映射 API 和 DMA 引擎 API?任何真正的 Linux 设备驱动程序示
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
我正在更新一个旧的 linux 驱动程序,该驱动程序通过 DMA 将数据传输到用户空间页面,这些页面通过 get_user_pages() 从应用程序向下传递。 我的硬件是一个新的基于 x86 Xeo
我想将 8 位并行数据从 IO 传输到内存,数据以大约 5 Mhz 的速度非常快地传输,我正在通过使用 S3C2440(400Mhz)处理器的友好 arm 在基于 ARM9 的套件上使用嵌入式 lin
我正在尝试在基于 Zynq-7000 的平台上使用 DMA 引擎将 PCM 流传输到 Zynq PL 中的自定义 I2S Controller 。我的 I2S Controller 连接到外部放大器。
假设 CPU 修改了位置 x+50 的值并且没有将其刷新回主存(回写)。 与此同时,设备发起从 x 到 x+100 的 DMA 读取请求。 在那种情况下,如何通知 CPU 刷新脏缓存行? 最佳答案 D
假设CPU要从PCI Express设备进行DMA读取传输。与PCI Express设备的通信由事务层数据包(TLP)提供。从理论上讲,TLP的最大有效负载大小为1024个双字。那么,当CPU向PCI
这是引用this对类似 dma/pci 问题的回答。我从这个答案中得知,PC 没有能够将数据传输到 PCI 卡或从 PCI 卡传输数据的 DMA,并且 PCI 卡必须提供 DMA 功能。我从同事那里收
我一直在使用 Teensy 3.6 微 Controller 板(180 MHz ARM Cortex-M4 处理器)来尝试实现传感器驱动程序。传感器通过 SPI 进行控制,当命令它进行测量时,它会通
我给你讲个故事: 我有两个缓冲区设置,用于执行所谓的 ping ponging。我有一个指向每个缓冲区的 DMA 系统。 系统设置为 DMA 将数据写入一个缓冲区,而中断处理另一个缓冲区中的数据。 看
在 AMD APP 编程指南中写道(第 4-15 页): 对于传输 <=32 kB:对于从主机到设备的传输,数据由 CPU 复制 到运行时固定的主机内存缓冲区,然后 DMA 引擎传输 数据到设备内存。
我目前正在使用 STM32f407G-DISC1,并尝试使用 ADC 和 DMA 回调捕获缓冲区。 频率发生器连接到引脚 A0,并且电路板接地。我用示波器确认我的电线没有损坏。 现在的问题是,在设置我
memcpy via user space DMA: 是否有可能在 linux 中通过用户空间 DMA 实现 memcpy?我知道有一些方法可以通过 DMA 将内核缓冲区复制到用户空间缓冲区,但想通过
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我正在遵循这个框架 https://forums.xilinx.com/xlnx/attachments/xlnx/ELINUX/10693/1/Linux%20DMA%20from%20User%2
最近,我阅读了很多关于 10gb/s NIC 的网站和书籍,它们的 DMA 以及 linux 内核(10/100 mb/s NIC)处理数据的方式,我遇到了一些问题头脑。 将 10GB/s 的数据流从
我是一名优秀的程序员,十分优秀!