我想将数据从闪存复制到RAM。 那么如何在DMA控制器中设置RAM的目标存储器地址,以便它可以使用其通道将数据从源地址(在闪存中)复制到RAM存储器。
我是在x86 arch上做的,它是一个8237 DMA。
答案 0 :(得分:1)
8237 DMA控制器能够从RAM传输到RAM,从I / O传输到RAM,从RAM传输到I / O设备。
您必须考虑到您只能复制最多64KB的数据。如果要复制超过64KB,则需要多次传输操作。
假设您使用的是IBM PC所具有的相同环境,并且您可以在单独的锁存器中设置目标内存的段地址,则需要:
规范化目标地址段:offset以使偏移量低于16。 以这种方式进行归一化(DIV是整数除法,MOD是模数):
normalized_segment = segment + offset DIV 16
normalized_offset = offset MOD 16
将段值加载到属于您要使用的通道的高位位锁存器(页面地址寄存器)