文档库 最新最全的文档下载
当前位置:文档库 › 申请和释放DMA缓冲区

申请和释放DMA缓冲区

申请和释放DMA缓冲区
申请和释放DMA缓冲区

1、申请和释放DMA缓冲区

内存中用于与外设交互数据的一块区域被称作DMA缓冲区,在设备不支持s catter/gather(SG,分散/聚集)操作的情况下,DMA 缓冲区必须是物理上连续的。

对于ISA设备而言,其DMA操作只能在16MB以下的内存中进行,因此,在使用kmalloc()和__get_free_pages()及其类似函数申请DMA缓冲区时应使用G FP_DMA标志,这样能保证获得的内存是具备DMA能力的(DMA-capable)。内核中定义了__get_free_pages()针对DMA的“快捷方式”__get_dma_pages(),它在申请标志中添加了GFP_DMA:

#define __get_dma_pages(gfp_mask, order) \

__get_free_pages((gfp_mask) | GFP_DMA,(order))

size即order为参数申请DMA内存,则可以使用另一个函如果不想使用log

2

数dma_mem_alloc(),其源代码如代码清单11.17。

代码清单11.17 dma_mem_alloc()

11.17 dma_mem_alloc()函数

函数

函数

1 static unsigned long dma_mem_alloc(int size)

2 {

3 int order = get_order(size);//大小->指数

4 return __get_dma_pages(GFP_KERNEL, order);

5 }

基于DMA的硬件使用总线地址而非物理地址,虽然在PC上,对于ISA和PC I而言,总线地址即为物理地址,但并非每个平台都是如此。因为有时候接口总线被通过桥接电路连接,桥接电路会将I/O地址映射为不同的物理地址。还有一些系统提供了页面映射机制,它能将任意的页面映射为连续的外设总线地址。内核提供了如下函数用于进行简单的虚拟地址/总线地址转换:

unsigned long virt_to_bus(volatile void *address);

void *bus_to_virt(unsigned long address);

在必须使用IOMMU或反弹缓冲区的情况下,上述函数一般不会正常工作。而且,这2个函数并不建议被使用。如图11.13所示,IOMMU的工作原理与CPU内的MMU非常类似,不过它针对的是外设总线地址和内存地址之间的转化。由于I OMMU可以使得外设看到“虚拟地址”,因此在使用IOMMU的情况下,在修改映射寄存器后,可以使得SG中分段的缓冲区地址对外设变得连续。

无法显示图像。计算机可能没有足够的内存以打开该图像,也可能是该图像已损坏。请重新启动计算机,然后重新打开该文件。如果仍然显示红色“x”,则可能需要删除该图像,然后重新将其插入。

图11.13 MMU与IOMMU

IOMMU

设备并不一定能在所有的内存地址上执行DMA操作,在这种情况下应该通过下列函数执行DMA地址掩码:

int dma_set_mask(struct device *dev, u64 mask);

譬如,对于只能在24位地址上执行DMA操作的设备而言,就应该调用dma_ set_mask (dev, 0xffffff)。

DMA映射包括2个方面的工作:分配一片DMA缓冲区;为这片缓冲区产生设备可访问的地址。同时,DMA映射也必须考虑cache一致性问题。内核中提供了以下函数用于分配一个DMA一致性的内存区域:

void * dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gf p);

上述函数的返回值为申请到的DMA缓冲区的虚拟地址,此外,该函数还通过参数handle返回DMA缓冲区的总线地址。handle的类型为dma_addr_t,代表的是总线地址。

dma_alloc_coherent()申请一片DMA缓冲区,进行地址映射并保证该缓冲区的cache一致性。与dma_alloc_coherent()对应的释放函数为:void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t hand le);

以下函数用于分配一个写合并(writecombining)的DMA缓冲区:

void * dma_alloc_writecombine(struct device *dev, size_t size, dma_addr_t *handle, gfp_ t gfp);

与dma_alloc_writecombine()对应的释放“函数”dma_free_writecombine ()实际上就是dma_free_coherent(),因为它定义为:

#define dma_free_writecombine(dev,size,cpu_addr,handle) \

dma_free_coherent(dev,size,cpu_addr,handle)

此外,Linux内核还提供了PCI 设备申请DMA缓冲区的函数pci_alloc_con sistent(),其原型为:

void * pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp);

对应的释放函数为pci_free_consistent(),其原型为:

void pci_free_consistent(struct pci_dev *pdev, size_t size, void *cpu_addr,

dma_addr_t dma_addr);

相对于一致性DMA映射而言,流式DMA映射的接口较为复杂。对于单个已经分配的缓冲区而言,使用dma_map_single()可实现流式DMA映射,该函数原型为:

dma_addr_t dma_map_single(struct device *dev, void *buffer, size_t size,

enum dma_data_direction direction);

如果映射成功,返回的是总线地址,否则,返回NULL。第4个参数为DMA 的方向,可能的值包括DMA_TO_DEVICE、DMA_FROM_DEVICE、DMA_BIDIRECTIONAL 和DMA_NONE。

dma_map_single()的“反函数”为dma_unmap_single(),原型是:

void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,

enum dma_data_direction direction);

通常情况下,设备驱动不应该访问unmap的流式DMA缓冲区,如果一定要这么做,可先使用如下函数获得DMA缓冲区的拥有权:

void dma_sync_single_for_cpu(struct device *dev, dma_handle_t bus_addr,

size_t size, enum dma_data_direction direction);

在驱动访问完DMA缓冲区后,应该将其所有权返还给设备,通过如下函数完成:

void dma_sync_single_for_device(struct device *dev, dma_handle_t bus_addr,

size_t size, enum dma_data_direction direction);

如果设备要求较大的DMA缓冲区,在其支持SG模式的情况下,申请多个不连续的、相对较小的DMA缓冲区通常是防止申请太大的连续物理空间的方法。在Linux内核中,使用如下函数映射SG:

int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,

enum dma_data_direction direction);

nents是散列表(scatterlist)入口的数量,该函数的返回值是DMA缓冲区的数量,可能小于nents。对于scatterlist中的每个项目,dma_map_sg()为设备产生恰当的总线地址,它会合并物理上临近的内存区域。

scatterlist结构体的定义如代码清单11.18所示,它包含了scatterlist 对应的page结构体指针、缓冲区在page中的偏移(offset)、缓冲区长度(l ength)以及总线地址(dma_address)。

结构体

代码清单11.18 scatterlist结构体

1 struct scatterlist

2 {

3 struct page *page;

4 unsigned int offset;

5 dma_addr_t dma_address;

6 unsigned int length;

7 };

执行dma_map_sg()后,通过sg_dma_address()可返回scatterlist对应缓冲区的总线地址,sg_dma_len()可返回scatterlist对应缓冲区的长度,这2

个函数的原型为:

dma_addr_t sg_dma_address(struct scatterlist *sg);

unsigned int sg_dma_len(struct scatterlist *sg);

在DMA传输结束后,可通过dma_map_sg()的反函数dma_unmap_sg()去除DM A映射:

void dma_unmap_sg(struct device *dev, struct scatterlist *list,

int nents, enum dma_data_direction direction);

SG映射属于流式DMA映射,与单一缓冲区情况下的流式DMA映射类似,如果设备驱动一定要访问映射情况下的SG缓冲区,应该先调用如下函数:void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,

int nents, enum dma_data_direction direction);

访问完后,通过下列函数将所有权返回给设备:

void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,

int nents, enum dma_data_direction direction);

Linux系统中可以有一个相对简单的方法预先分配缓冲区,那就是通过“mem=”参数预留内存。譬如对于内存为64MB的系统,通过给其传递mem=62MB命令行参数可以使得顶部的2MB内存被预留出来作为IO内存使用,这2MB内存可以被静态映射(11.5节),也可以被执行ioremap()。

DMA、TRIX指标原理和详解

DMA指标原理和详解 DMA指标又叫平行线差指标,是目前股市分析技术指标中的一种中短期指标,它常用于大盘指数和个股的研判。 第一节 DMA指标的原理及计算方法 一、 DMA指标的原理 DMA指标是属于趋向类指标,也是一种趋势分析指标。DMA是依据快慢两条移动平均线的差值情况来分析价格趋势的一种技术分析指标。它主要通过计算两条基准周期不同的移动平均线的差值,来判断当前买入卖出的能量的大小和未来价格走势的趋势。 二、 DMA指标的计算方法 DMA指标的计算方法比较简单,其计算过程如下: DMA=短期平均值—长期平均值 AMA=短期平均值 以求10日、50日为基准周期的DMA指标为例,其计算过程具体如下: DMA(10)=10日平均值—50日平均值 AMA(10)=10日平均值 和其他指标的计算一样,由于选用的计算周期的不同,DMA指标也包括日DMA指标、周DMA指标、月DMA指标年DMA指标以及分钟DMA指标等各种类型。经常被用于股市研判的是日DMA指标和周DMA 指标。虽然它们的计算时的取值有所不同,但基本的计算方法一样。另外,随着股市软件分析技术的发展,投资者只需掌握DMA形成的基本原理和计算方法,无须去计算指标的数值,更为重要的是利用DMA 指标去分析、研判股票行情。 第二节 DMA指标的一般研判标准 一、DMA和AMA的值及线的运动方向 1、当DMA和AMA均大于0(即在图形上表示为它们处于零线以上)并向上移动时,一般表示为股市处于多头行情中,可以买入或持股; 2、当DMA和AMA均小于0(即在图形上表示为它们处于零线以下)并向下移动时,一般表示为股市处于空头行情中,可以卖出股票或观望。 3、当DMA和AMA均大于0(即在图形上表示为它们处于零线以上),但在经过一段比较长时间的向上运动后,如果两者同时从高位向下移动时,一般表示为股票行情处于退潮阶段,股票将下跌,可以卖出股票和观望; 4、当DMA和AMA均小于0时(即在图形上表示为它们处于零线以下),但在经过一段比较长时间的的向下运动后,如果两者同时从低位向上移动时,一般表示为短期行情即将启动,股票将上涨,可以短期买进股票或持股待涨。 二、DMA曲线和股价曲线的配合使用

linux下DMA操作方式和利弊详解

Linux DMA使用(网摘) 关键词: 0引言 1如何在Linux下用DMA的方式进行数据传输(硬盘) 我们都知道,使用DMA方式传输数据可以占用更少的CPU资源,因此与其它操作系统一样,Linux支持硬盘以DMA方式转输数据,但在安装Red Hat时关于DMA的默认选项是Disable的,当然你可以在安装时就enable它。如果在安装时DMA是disable的,那该怎么才能激活DMA呢?通过重新编译内核可以激活DMA支持,但编译内核对新手显然太过复杂。下面的方法无需编译内核,就可以激活DMA支持。 一、检查系统中的DMA选项是否已被激活 在进行操作前,先确认硬盘是否已经在使用DMA方式传输数据了。方法:查看/ proc/ide/hda/settings文件,其中有一行的内容为:using_dma,如果其后面的值被设置为1就说明系统已经支持DMA了,那么下面的操作就可以免了,当然如果你要关闭DMA 功能的话,还要往下看看哟:)。 Linux中的hdparm命令是用来进行与硬盘相关操作的,用hdparm-i/dev/hda可以列出IDE可能支持的DMA模式,如: DMA modes:mdma0mdma1mdma2udma0udma1udma2udma3*udma4 二、激活DMA支持 方法1:在lilo.conf中加入:idex=dma,其中x代表硬盘序号,其取值范围0-3,分别代表系统中的四个IDE硬盘设备。 方法2:使用hdparm命令,hdparm d1/dev/hda其中d1表示使能DMA,你可以将其加到rc.locl中以便每次启动时都硬盘都能使用DMA方式传输数据。

DMAGE中文操作说明书

操作版面 “Ergocontrol NC4” –页面显示, 操作和基本设置

内容 3 Ergocontrol NC4 控制系统 (14) 3.1 功能选择键 (16) 3.2 手动功能键 (16) 3.2.1 模式选择键 (18) 3.2.2 机械手按钮 (18) 4 磁盘使用 (19) 4.1 驱动程序盘, 源程序盘 (19) 4.2 诊断程序盘 (19) 4.3 参数储存 (19) 4.4 帮助功能键和专家系统 (19) 5 频幕 (20) 频幕设置 20 页面选择 21 6 页面显示(索引) (22) 7 机器(配置) (23) 8 基本设置 (24) 9 操作进入 (25) 输入密码 (允许可更改的输入) (25) 取消密码 (取消输入) (25) 9.1 密码设置页面 (26) 9.2 磁卡设置 (27) 9.3 密码等级 (28)

1 Ergocontrol NC4 控制版面 Fig. 1: Ergocontrol NC4 控制版面 显示频 功能键 数字键 手动功能键 操作模式选择键 急停键 打印机 软键 选择键 选择梭 特殊功能键 机械手按钮 磁卡插入口 开始键 泵,模具,料筒加热键 磁盘插入口

1.1功能选择键 以下的功能选择键(见 Fig. 2) 可快速选择所需主要页面组。其他页面可通过显示频下方的软键点击进入。 Fig. 2: 功能选择键 1.2手动功能键 在手动和点动模式下可通过下面的按钮(见Fig. 3 和 Fig. 4)进行相应的操作。 Fig. 3: 手动模具装置功能 提示“模厚调整”按钮只针对曲轴式机床。“自动安全门”和“气阀1-4”按钮只有当这些功能配置以后才起作用。“Rotary table latches”, Rotary table index bolt” and “旋转模板”应用于带转转模板的多色注塑。 模具 打开 / 闭合 液压顶出 后退 / 前进 中子 抽芯 / 进芯 自动安全门 打开 / 关闭 模厚调整 增加 / 减小 Rotary table latches move in / move out 气阀 1-4 打开 Rotary table index bolt move in / move out 旋转模板 逆时针 /顺时针

DMA工作原理

DMA原理 DM A原理:DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。DMA传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA传输对于高效能嵌入式系统算法和网络是很重要的。 在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。 一个完整的DMA传输过程必须经过下面的4个步骤。 一、DMA传输过程 1.DMA请求 CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。 2.DMA响应 DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU 执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA 已经响应,通过DMA控制器通知I/O接口开始DMA传输。 3.DMA传输 DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。 4.DMA结束 当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。

dma的一些操作模式

所谓动态力学是指物质在变负载或振动力的作用下所发生的松弛行为。DMA就是研究在程序升温条件下测定动态模量和阻尼随温度的变化一种技术。高聚物是一种粘弹性物质,因此在交变力的作用下其弹性部分及粘性部分均有各自的反应,而这种反应又随温度的变化而改变。高聚物的动态力学行为能模拟实际使用情况,而且它对玻璃化转变,结晶、变联、相分离以及分子链各层次的运动都十分敏感。所以它是研究高聚物分子运动行为极为有用的方法。

动态力学试验类型 强迫非共振法是指强迫试样以设定频率振动,测定试样在振动时的应力、应变幅值以及应力与应变之间的相位差。

众所周知,高分子具有粘弹性,在适当的条件下,会发生滞后现象,当施加交变应力,应变会滞后一个相位角 ?。这种滞后与其本身的化学结构有关,更是与外界条件的作用有关。DMA 技术把材料粘弹性分为两个模量:一是储能模量E ′,E ′与试样在每周期中贮存的最大弹性成正比,反映材料粘弹性中的弹性成分,表征材料的刚度;二是损耗模量E ″,E ″与试样在每周期中以热的形式消耗的能量成正比,反映材料粘弹性中的粘性成分,表征材料的阻尼。材料的阻尼也称力学内耗(Damping of materials),用Tan δ表示,材料在每周期中损耗的能量与最大弹性贮能之比,等于材料的损耗模量E ″与贮能模量E ′之比。当应变为 Ε( t) =Ε0sin Ξt 时,由于应力比应领变先一个相位角 ?δ。故 其中, ω 是角频率, δ 是相位角, σ0是应力峰值, ε0 是应变峰值。

贮能模量E′;表示在应力作用下能量在样品中的贮存能力,同时也是材料刚性的反映。 损耗模量E″;与应变相位差90度;表示能量的损耗程度,是材料耗散能量的能力反映。 内耗;应力应变相位角之正切值,是材料贮能与耗能能力的相对强度。 DMA采用升温扫描,由辅助环境温度升至最终熔融温度,Tan δ展示出一系列的峰,每个峰都会对应一个特定的松弛过程。由DMA可测出相位角Tan δ,损耗模量E″与贮能模量E′随温度、频率或时间变化的曲线,不仅给出宽广的温度、频率范围的力学性能,还可检测材料的玻璃化转变、低温转变和次级松弛过程。 DMA曲线 (一)DMA曲线(温度谱) (二) DMA曲线(频率谱)

DMA模块详解

//北京联合大学实训基地潘峰 //qq:66797490 //微博:潘峰_buu //博客:https://www.wendangku.net/doc/4111427416.html,/panpan_0315/blog/ DMA模块 DMA模块简介 所谓DMA就是直接内存存取(Direct Memory Access),是计算机科学中的一种内存访问技术。 以前我们向内存传送数据,都是通过CPU来进行。比如AD完成后,我们要把结果寄存器中的值传送到内存的一个变量中,一种方法就是查询COCO标志位(详见ADC模块一节),一旦置1,就读取结果寄存器并传送。这种方法CPU需要不断查询标志位,耽误时间,降低效率。 我们也可以使用中断的方式,CPU并不需要轮询标志位,而是AD转换完成后触发中断,CPU中断当前的程序,转向执行中断服务程序,在中断服务程序中读取结果寄存器,然后传送到内存中。这种方式虽然省去了轮询的时间消耗,但传送数据仍然是由CPU完成的,如果是大批量数据高速传输的话,频繁的中断也将造成很重的CPU负担,于是就有了DMA。 和轮询方式、中断方式不同的是,DMA是通过DMA控制器接管数据和地址总线,根据事先设定好的源地址和目的地址,以及传送的字节数,将数据自动传送到指定的位置,而不需要CPU的介入,从而CPU的负担大大减轻。如果CPU正在执行指令,DMA控制利用空闲的地址和数据总线完成数据传送,某种程度上说,CPU运算和数据传送是在并行进行的。 在制作智能车的应用中,摄像头组的同学,需要将摄像头采集的数据用最快的速度传送到内存变量中,以采集更多的点。Kinetis芯片的DMA功能这个时候就能发挥重要的作用了。首先我们需要了解一下和Kinetis芯片的DMA功能有关的一些概念。 1.DMA源和DMA通道 在Kinetis芯片中,很多模块都可以请求DMA模块进行数据传送。所谓DMA源,也就是DMA传送请求是谁发出的。以K60DN512Z为例,共有63个DMA源。而DMA源发出的DMA请求并不是直接提交到DMA控制器,而是通过DMA多路复用器的16个DMA通道提交的。需要设置相关的寄存器建立DMA源和DMA通道之间的映射关系。如图错误!文档中没有指定样式的文字。-1所示。

Linux设备驱动程序学习(20)-内存映射和DMA-基本概念

Linux设备驱动程序学习(20)-内存映射和DMA-基本概念 (2011-09-25 15:47) 标签: 虚拟内存设备驱动程序Linux技术分类:Linux设备驱动程序 这部分主要研究 Linux 内存管理的基础知识, 重点在于对设备驱动有用的技术. 因为许多驱动编程需要一些对于虚拟内存(VM)子系统原理的理解。 而这些知识主要分为三个部分: 1、 mmap系统调用的实现原理:它允许设备内存直接映射到一个用户进程地址 空间. 这样做对一些设备来说可显著地提高性能. 2、与mmap的功能相反的应用原理:内核态代码如何跨过边界直接存取用户空间的内存页. 虽然较少驱动需要这个能力. 但是了解如何映射用户空间内存到内 核(使用 get_user_pages)会有用. 3、直接内存存取( DMA ) I/O 操作, 它提供给外设对系统内存的直接存取. 但所有这些技术需要理解 Linux 内存管理的基本原理, 因此我将先学习VM子 系统的基本原理. 一、Linux的内存管理 这里重点是 Linux 内存管理实现的主要特点,而不是描述操作系统的内存管理理论。Linux虚拟内存管理非常的复杂,要写可以写一本书:《深入理解Linux 虚拟内存管理》。学习驱动无须如此深入, 但是对它的工作原理的基本了解是必要的. 解了必要的背景知识后,才可以学习内核管理内存的数据结构. Linux是一个虚拟内存系统(但是在没有MMU的CPU中跑的ucLinux除外), 意味着在内核启动了MMU 之后所有使用的地址不直接对应于硬件使用的物理地址,这些地址(称之为虚拟地址)都经过了MMU转换为物理地址之后再从CPU的内存总线中发出,读取/写入数据. 这样 VM 就引入了一个间接层, 它是许多操作成为可能: 1、系统中运行的程序可以分配远多于物理内存的内存空间,即便单个进程都可拥有一个大于系统的物理内存的虚拟地址空间. 2、虚拟内存也允许程序对进程的地址空间运用多种技巧, 包括映射程序的内存到设备内存.等等~~~ 1、地址类型 Linux 系统处理几种类型的地址, 每个有它自己的含义: 用户虚拟地址:User virtual addresses,用户程序见到的常规地址. 用户地址在长度上是 32 位或者 64 位, 依赖底层的硬件结构, 并且每个进程有它自己 的虚拟地址空间.

DMA常用快捷键命令大全

3DMAX常用快捷键命令大全主界面 显示降级适配(开关)【O】 适应透视图格点【Shift】+【Ctrl】+【A】 排列【Alt】+【A】 角度捕捉(开关) 【A】 动画模式(开关) 【N】 改变到后视图【K】 背景锁定(开关) 【Alt】+【Ctrl】+【B】 前一时间单位【.】 下一时间单位【,】 改变到上(Top)视图【T】 改变到底(Bottom)视图【B】 改变到相机(Camera)视图【C】 改变到前(Front)视图【F】 改变到等大的用户(User)视图【U】 改变到右(Right)视图【R】 改变到透视(Perspective)图【P】 循环改变选择方式【Ctrl】+【F】 默认灯光(开关) 【Ctrl】+【L】 删除物体【DEL】 当前视图暂时失效【D】 是否显示几何体内框(开关) 【Ctrl】+【E】 显示第一个工具条【Alt】+【1】 A-角度捕捉开关 B-切换到底视图

C-切换到摄象机视图 D-封闭视窗 E-切换到轨迹视图 F-切换到前视图 G-切换到网格视图 H-显示通过名称选择对话框I-交互式平移 J-选择框显示切换 K-切换到背视图 L-切换到左视图 M-材质编辑器 N-动画模式开关 O-自适应退化开关 P-切换到透视用户视图 Q-显示选定物体三角形数目R-切换到右视图 S-捕捉开关 T-切换到顶视图 U-切换到等角用户视图 V-旋转场景 W-最大化视窗开关 X-中心点循环 Y-工具样界面转换 Z-缩放模式 [-交互式移近 ]-交互式移远 /-播放动画 F1-帮助文件

F3-线框与光滑高亮显示切换 F4-Edged Faces显示切换 F5-约束到X轴方向 F6-约束到Y轴方向 F7-约束到Z轴方向 F8-约束轴面循环 F9-快速渲染 F10-渲染场景 F11-MAX脚本程序编辑 F12-键盘输入变换 Delete-删除选定物体 SPACE-选择集锁定开关 END-进到最后一帧 HOME-进到起始帧 INSERT-循环子对象层级 PAGEUP-选择父系 PAGEDOWN-选择子系 CTRL+A-重做场景操作 CTRL+B-子对象选择开关 CTRL+F-循环选择模式 CTRL+L-默认灯光开关 CTRL+N-新建场景 CTRL+O-打开文件 CTRL+P-平移视图 CTRL+R-旋转视图模式 CTRL+S-保存文件 CTRL+T-纹理校正 CTRL+T-打开工具箱(Nurbs曲面建模)

DMA基础教程教学大纲

D M A基础教程教学大纲Prepared on 21 November 2021

《3D MAX基础教程》课程实施性教学大纲 制定人:日期: 审核人:日期: 批准人:日期: 一、说明 1.课程的性质和内容 《3D MAX基础教程》是一门专业必修课。本课程的任务是旨在运用现代科技和艺术的理念,对三维软件3D MAX作系统的讲述,使学生掌握3D MAX软件的使用方法,并能够应用该软件从事相关的艺术设计。 通过系统学习本课程专业理论知识与专业技能,使学生了解三维设计基本原理,掌握三维建模的基本方法、材质的使用编辑、灯光效果的使用等基本设计技能,并能运用于三维室内效果图的制作中。着重于建模与室内设计的理论、设计表现、设计方法的学习与运用。要求学生掌握室内环境与空间设计的基本理论、设计方法,加强3D MAX软件知识的学习,利用课余时间扩展相关知识。 2.课程的任务和要求 本课程的教学任务是:通过本课程的学习,使学生掌握三维建模与三维动画制作流程的专业范围、性质和意义。在培养学习方法和设计理念的基础上,进一步掌握三维建模的基本设计方法和表现内容,掌握不同模型的类型、功能与性质,确定环境中模型空间、形态、材料和功能的关系和规律,在对三维建模和三维动画制作流程认识和理解的基础上,能根据不同的功能、性质,应用3DMAX及相关软件进行合理的设计和绘制,能用不同的手段表现差异化的设计效果。 教学过程从技工学生能力教育特点出发,在讲授过程中,突出该课程的概念性、实践性都很强的特点,注意课堂讲授和实验密切结合。在教学过程中,要注意激发学生学习兴趣,提倡学生主动思考问题,培养学生的自学能力。 前期应当完成的课程:《设计素描》、《设计色彩》和《构成基础》的专业基础课程。 3.教学中应注意的问题(含教学建议) 《3D MAX基础教程》课程是一门实践性的课程,因此,在教学中可以转变教学观念,改变教学方法,在教学过程中,对于教学案例的解析,让学生的主动性增

DMA35N简明操作

DMA35N简明操作 开机:按住“ON/OFF”键至少2秒,然后仪器自检,“℃”(或“℉”)闪烁,此时,仪器可以进行测量 关机:按住“ON/OFF”键不松,直到显示“OFF”,然后再松开,如果15分钟内不按任何键,仪器将自动关闭 设置:同时按“ON/OFF”和“store”键,激活设置模式,显示“SET” 注:激活设置模式后,所有存贮的数据会被删除 设置模式下键的功能和用法:、 长时间按住“store”键,可以激活温度单位选择 再轻按“store”键,可以选择“℃”(或“℉”) 选好后,再长时间按“store”键,进入测量单位选择:API A/B/D: API A:测 Crude oil API B:测Fuel API D:测 Lubricants SG:测比重

g/cm3或kg/m3:测密度 %H2SO4:测硫酸浓度(20℃时重量比) %BRIX:测糖浓度(20℃时重量比) %BAUME:测BAUME %PLATO:测PLATO %ALC/W:测酒精浓度(20℃时重量比) %ALC/V:测酒精浓度(20℃时体积比) PROOF:测60℉的PROOF 数据存储: 注:如果显示“low battery”,将无法存储数据 1、手动存储:长时间按住“store”键,即可存储当前测量值,同 时显示“HOLD”。数据编号从1开始,并且每存1个,编号自动加1,总共可以存储1024个数据 2、自动存储:轻按1下“store”键,自动测量即开始,同时显示 “AUTO”。此时,仪器检查其温度的稳定性,如果温度在10个测量周期的变化在0.2以内,则仪器自动存储该测量值,同时也记录数据编号。一个自动存储过程最少需要15秒。 3、调用存储数据:轻按“Recall/Delete”键,将显示最后1个存储 数据10秒钟,如果在10秒内再按“Recall/Delete”键,则将顺序显示所有已经存储的数据,如果在这10秒内,不按键,将回到当前测量状态。

第七部分 微机DMA方式练习题

DMA方式 一.选择题 1.在进入DMA工作方式之前,DMA控制器是被当作系统总线上的一个( )。 (A) 主处理器(B) I/O设备(C) I/O接口(D) 主模块 2.主机与外设传送数据时,采用( )方式,主机与外设是串行工作的。(A) 程序查询(B) 中断(C) DMA (D) IOP处理机 3.下列几种芯片中能接管总线且控制数据传送的是()。 (A) 8254 (B) 8255 (C) 8237 (D) 8251 4.要使系统能按直接存储器存取方式进行主机与外设间的数据传送,系统至少应有( )芯片。 (A)8250 (B)8259 (C)8237 (D)8255 5.占用CPU时间最少的传送方式是()。 (A)DMA (B)中断(C)查询(D)无条件 6.在DMA方式下,能对总线进行控制的部件是( )。 (A)CPU (B)DMAC (C)外部设备(D)存储器 7.采用DMA方式传送数据时,每传送一个数据要占用()的时间。 (B)一个机器周期(C)一个存储周期(D)一个时钟周期 8.DMA方式中,周期“窃取”是窃取一个() (A)存储周期(B)指令周期(C)CPU周期(D)总线周期9.在DMA传送方式下,外部设备与存储器之间的数据传送通路是()。(A)数据总线DB (B)专用数据通路(C)地址总线(D)控制总线CB 10.在DMA传送过程中,实现总线控制的部件是()。 (A)CPU (B)外部设备(C)DMAC (D)存储器11.在DMA方式下,CPU与总线的关系是()。 (A)只能控制数据总线(B)只能控制地址总线 (C)成隔离状态(D)成短接状态 12.CPU响应DMA传送请求的信号是() (A)READY (B) (C) (D) 13.如果采用两级8237A级联方式,最多可构成()个DMA通道。

DMA基本原理、结构与应用(上)

直接存储器存取—基本原理、结构与应用(上) 直接存储器存取(DMA)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。它之所以属于外设,是因为它是在处理器的编程控制下来执行传输的。值得注意的是,通常只有数据流量较大(kBps或者更高)的外设才需要支持DMA能力,这些应用方面典型的例子包括视频、音频和网络接口。 一般而言,DMA控制器包括一条地址总线、一条数据总线和控制寄存器。高效率的DMA控制器将具有访问其所需要的任意资源的能力,而无须处理器本身的介入,它必须能产生中断。最后,它必须能在控制器内部计算出地址。 一个处理器可以包含多个DMA控制器。每个控制器有多个DMA通道,以及多条直接与存储器站(memory bank)和外设连接的总线,如图1所示。在很多高性能处理器中集成了两种类型的DMA控制器。第一类通常称为“系统DMA控制器”,可以实现对任何资源(外设和存储器)的访问,对于这种类型的控制器来说,信号周期数是以系统时钟(SCLK)来计数的,以ADI的Blackfin处理器为例,频率最高可达133MHz。第二类称为内部存储器DMA控制器(IMDMA),专门用于内部存储器所处位置之间的相互存取操作。因为存取都发生在内部(L1-L1、L1-L2,或者L2-L2),周期数的计数则以内核时钟(CCLK)为基准来进行,该时钟的速度可以超过600MHz。 每个DMA控制器有一组FIFO,起到DMA子系统和外设或存储器之间的缓冲器的作用。对于MemDMA(Memory DMA)来说,传输的源端和目标端都有一组FIFO存在。当资源紧张而不能完成数据传输的话,则FIFO可以提供数据的暂存区,从而提高性能。 因为你通常会在代码初始化过程中对DMA控制器进行配置,内核就只需要在数据传输完成后对中断做出响应即可。你可以对DMA控制进行编程,让其与内核并行地移动数据,而同时让内核执行其基本的处理任务—那些应该让它专注完成的工作。 图1:系统和存储器DMA架构。

DMA基本原理、结构与应用(下)

直接存储器存取—基本原理、结构与应用(下) 在上一期中,我们讨论了分别基于寄存器和描述符的DMA模式。在本文中,我们将在系统层面上探讨应用中关于数据移动的各种选项所应做出的某些重要的决策问题,以及某些先进的DMA功能特性如何协助数据在多媒体系统中有效地移动。首先让我们重新回顾一下DMA模式,以便以之说明另外一两条关于何时选择其中一种模式而非另一种模式的指导原则。 对于规模相同、连续、单向的数据传输来说,自动缓冲方案是最合理的。DMA配置寄存器只要设置一次,就可以自动地在传输结束的时候重新载入。如果采用多维寻址,则可以设置多重缓冲,在每次缓冲结束时可以单独设置各次中断的触发。 到一个音频编码解码器的传输就是这种类型事务。你所选取的子缓冲区的数量应该与你需要执行的处理的类型相一致。对于连续传输来说,只要确保能让每个缓冲器的最大处理间隔小于取空一个缓冲器所花费的时间即可。 如果在给定通道上的传输在方向和尺寸上都将是可变的,描述符模式就是最佳的选择。试考虑在内部和外部的存储间发生的一系列小规模的传输,如果数据块的尺寸发生改变,或者如果你希望以一种非连续的方式来在缓冲器中处理数据,则可以为此建立描述符。 高速缓存 vs DMA 我们接下来将考察系统数据转移的某些情形,在这些情形中,我们需要在高速缓存和DMA之间做出选择。为此,我们首先需要考察一项在应用内部存在的各种数据移动类型。 通过片上外设来将数据转移到系统内或者将其移到系统外是一种最容易说明问题的情况,因此我们以这些数据的转移为起点开始讨论。许多外设可以在使用内核存取还是用DMA通道来转移数据之间做出选择。一般来说,如果可以做出选择的话,你应该使用DMA通道。DMA控制器之所以成为最佳选择,是因为数据往往要么来得太慢,要么来得太快,处理器无法高效地对其进行实时处理。 当我们采用慢速的串行器件(如SPI端口或者UART)时,数据的传输速率远低于处理器内核运行的速度。内核对这些类型的外设的访问必然涉及对一个映射存储器的寄存器的某些位的轮询(polling)。即使当外设的工作速度与处理器时钟相比较很低的话(这意味着访问的频率将会降低),轮询也是一种浪费。在某些情况下,外设有能力发出中断,指示内核传输已经发生。不过,在这里,每次增量数据传输完成后都会遇到为中断提供服务的开销问题,包括前后条件(context)切换的时间。 另一方面,使用DMA控制器来执行传输,使得系统可以精密地控制在发出中断前所完成的传输的次数。而且,这种中断可以在每个数据“块”的末尾发生,而不仅仅是在每个字节或者字之后。 在吞吐率分布的另一端,更为高速(例如以10~100MHz)的并行外设可能无法选择内核传输的方式。原因为:首先,以这种方式进行设定时,处理器会频繁地访问外设;其次,与高速外设相关的处理几乎总是对数据块进行的。无论是在一个信号处理应用中通过FFT完成,还是在图像处理系统中进行二维卷积(convolution),处理器在送往缓冲器的最后一个数据采样一到达时就开始其操作。这里,用于指示一个数据块传输结束的中断可以出现在数百次甚至上千次传输中。

DMA详解

分类: LINUX 5.1DMA概述 DMA是指外部设备不通过CPU而 直接与系统内存交换数据的接口技术。 要把外设的数据读入内存或把内 存的数据传送到外设,一般都要通过 CPU控制完成,如CPU程序查询或中 断方式。利用中断进行数据传送,可 以大大提高CPU的利用率。 但是采用中断传送有它的缺 点,对于一个高速I/O设备,以及批 量交换数据的情况,只能采用DMA方 式,才能解决效率和速度问题。DMA 在外设与内存间直接进行数据交换, 而不通过CPU,这样数据传送的速度 就取决于存储器和外设的工作速度。 通常系统的总线是由CPU管理的。 在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态--高阻状态,而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。DMA控制器必须有以下功能: 1. 能向CPU发出系统保持(HOLD)信号,提出总线接管请求; 2. 当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式; 3. 能对存储器寻址及能修改地址指针,实现对内存的读写操作; 4. 能决定本次DMA传送的字节数,判断DMA传送是否结束 5. 发出DMA结束信号,使CPU恢复正常工作状态。 如图是DMA控制器硬件 结构示意图。 DMA的可能引脚说明: 数据总线:用于传 送数据。

地址总线:用于选择存储器地址。 数据传送信号:MEMR为存储器读操作信号,MEMW为存储器写操作信号, IOR为外设读操作信号,IOW为外设写操作信号。 DRQ:DMA请求信号。是外设向DMA控制器提出要求DMA操作的申请信号。 DACK:DMA响应信号。是DMA控制器向提出DMA请求的外设表示已收到请 求和正进行处理的信号。 HOLD:总线请求信号。是DMA控制器向CPU要求让出总线的请求信号。 HLDA:总线响应信号,是CPU向DMA控制器表示允许总线请求的应答信号。 5.2DMA工作 方式 随着大规模 集成电路技术的 发展,DMA传送已 不局限于存储器 与外设间的信息 交换,而可以扩 展为在存储器的 两个区域之间, 或两种高速的外 设之间进行DMA 传送,如图所示。 DMAC是控制存储器和外部设备之间直接高速地传送数据的硬件电路,它应 能取代CPU,用硬件完成数据传送的各项功能。 各种DMAC一般都有两种基本的DMA传送方式: 1. 单字节方式:每次DMA请求只传送一个字节数据,每传送完一个字节,都撤除DMA请求信号,释放总线。 2. 多字节方式:每次DMA请求连续传送一个数据块,待规定长度的数据块传送完以后,才撤除DMA请求,释放总线。 在DMA传送中,为了使源和目的间的数据传送取得同步,不同的DMAC在操作时都受到外设的请求信号或准备就绪信号--Ready信号的限制。

使用 DMA 控制器指南

AN2548 应用笔记 使用STM32F101xx和STM32F103xx DMA控制器 1 前言 这篇应用笔记描述了怎么使用STM32F101xx 和 STM32F103xx的直接存储器访问(DMA)控制 器。STM32F101xx和STM32F103xx的DMA控制器、Cortex TM-M3内核、高级微控制器总线架 构(AMBA)总线和存储器系统,使得STM32具有高的数据带宽,并能使用户开发出低延迟、快响 应的软件。 这篇文档也描述了怎样充分利用这些特性,以及对于不同的外设和子系统怎样保证正确的响应 时间。 在下文中STM32F101xx和STM32F103xx都记作STM32F10xxx,DMA控制器都记作DMA。 译注: 本应用笔记配套例程下载地址: https://www.wendangku.net/doc/4111427416.html,/stonline/products/support/micro/files/an2548.zip 本译文的英文版下载地址为: https://www.wendangku.net/doc/4111427416.html,/stonline/products/literature/an/13529.pdf

目录 1前言1 2DMA控制器3 2.1DMA的主要特性3 3性能分析5 3.1轮询优先级方案5 3.2多层结构和总线挪用5 3.3DMA延迟6 3.4数据总线带宽限制6 3.5通道优先级选择7 3.5.1应用需求7 3.5.2内部数据带宽8 4DMA编程示例9 4.1使用SPI传输获得ADC连续采样的数据9 4.2SPI直接传输实现ADC连续数据的获取9 4.3使用DMA实现GPIO快速数据传输9 2/9 参照2007年12月 AN2548 英文第2版

stm32 DMA介绍及使用

什么是STM32的DMA?其全称是:Direct Memory Access;根据ST公司提供的相关信息,DMA是STM32中一个独立与Cortex-M3内核的模块,有点类似与ADC、PWM、TIMER 等模块;主要功能是通信“桥梁”的作用,可以将所有外设映射的寄存器“连接”起来,这样就可以高速问各寄存器,其传输不受CPU的支配,传输还是双向的。 过程:怎样启用DMA?首先,众所周知的是初始化,任何设备启用前都要对其进行初始化,要对模块初始化,还要先了解该模块相应的结构及其函数,以便正确的设置;由于DMA较为复杂,我就只谈谈DMA的基本结构和和常用函数,这些都是ST公司提供在库函数中的。 1、下面代码是一个标准DMA设置,当然实际应用中可根据实际情况进行裁减: DMA_DeInit(DMA_Channel1); 上面这句是给DMA配置通道,根据ST提供的资料,STM3210Fx中DMA包含7个通道(CH1~CH7),也就是说可以为外设或memory提供7座“桥梁” DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; 上面语句中的DMA_InitStructure是一个DMA结构体,在库中有声明了,当然使用时就要先定义了;DMA_PeripheralBaseAddr是该结构体中一个数据成员,给DMA一个起始地址,好比是一个buffer起始地址,数据流程是:外设寄存器à DMA_PeripheralBaseAddàmemory 中变量空间(或flash中数据空间等),ADC1_DR_Address是我定义的一个地址变量; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertedValue; 上面这句很显然是DMA要连接在Memory中变量的地址,ADC_ConvertedValue是我自己在memory中定义的一个变量; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; 上面的这句是设置DMA的传输方向,就如前面我所说的,DMA可以双向传输,也可以单向传输,这里设置的是单向传输,如果需要双向传输:把DMA_DIR_PeripheralSRC改成DMA_DIR_PeripheralDST即可。 DMA_InitStructure.DMA_BufferSize = 2; 上面的这句是设置DMA在传输时缓冲区的长度,前面有定义过了buffer的起始地址:ADC1_DR_Address ,为了安全性和可靠性,一般需要给buffer定义一个储存片区,这个参数的单位有三种类型:Byte、HalfWord、word,我设置的2个half-word(见下面的设置);32位的MCU中1个half-word占16 bits。 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; 上面的这句是设置DMA的外设递增模式,如果DMA选用的通道(CHx)有多个外设连接,需要使用外设递增模式:DMA_PeripheralInc_Enable;我的例子里DMA只与ADC1建立了联系,所以选用DMA_PeripheralInc_Disable DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

(完整版)STM32学习之:DMA详解

STM32学习之:DMA详解 JawSoW 个人分类:STM32 DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。下面用问答的形式表达我的思路。 DMA有什么用? 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。 有多少个DMA资源? 有两个DMA控制器,DMA1有7个通道,DMA2有5个通道。 数据从什么地方送到什么地方? 外设到SRAM(I2C/UART等获取数据并送入SRAM); SRAM的两个区域之间; 外设到外设(ADC读取数据后送到TIM1控制其产生不同的PWM占空比); SRAM到外设(SRAM中预先保存的数据送入DAC产生各种波形); ……还有一些目前还搞不清楚的。 DMA可以传递多少数据? 传统的DMA的概念是用于大批量数据的传输,但是我理解,在STM32中,它的概念被扩展了,也许更多的时候快速是其应用的重点。数据可以从1~65535个。 直接存储器存取(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬体子系统(电脑外设),可以独立地直接读写系统存储器,而不需绕道 CPU。在同等程度的CPU负担下,DMA是一种快速的数据传送方式。它允许不同速度的硬件装置来沟通,而不需要依于 CPU的大量中断请求。【摘自Wikipedia】 现在越来越多的单片机采用DMA技术,提供外设和存储器之间或者存储器之间的高速数据传输。当 CPU 初始化这个传输动作,传输动作本身是由DMA 控制器来实行和完成。ST

STM32之DMA详解

STM32 DMA使用详解 DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。下 面用问答的形式表达我的思路。 DMA有什么用? 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。 无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。 有多少个DMA资源? 有两个DMA控制器,DMA1有7个通道,DMA2有5个通道。 数据从什么地方送到什么地方? 外设到SRAM(I2C/UART等获取数据并送入SRAM); SRAM的两个区域之间; 外设到外设(ADC读取数据后送到TIM1控制其产生不同的PWM占空比); SRAM到外设(SRAM中预先保存的数据送入DAC产生各种波形); ……还有一些目前还搞不清楚的。 DMA可以传递多少数据? 传统的DMA的概念是用于大批量数据的传输,但是我理解,在STM32中,它的概念被 扩展了,也许更多的时候快速是其应用的重点。数据可以从1~65535个。 直接存储器存取(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术。它 允许某些电脑内部的硬体子系统(电脑外设),可以独立地直接读写系统存储器,而不需绕道CPU。在同等程度的CPU负担下,DMA是一种快速的数据传送方式。它允许不同速度的硬件 装置来沟通,而不需要依于 CPU的大量中断请求。【摘自Wikipedia】 现在越来越多的单片机采用DMA技术,提供外设和存储器之间或者存储器之间的高速数据传输。当 CPU 初始化这个传输动作,传输动作本身是由DMA 控制器来实行和完成。STM32 就有一个DMA控制器,它有7个通道,每个通道专门用来管理一个或多个外设对存储器访问 的请求,还有一个仲裁器来协调各个DMA请求的优先权。 DMA 控制器和Cortex-M3核共享系统数据总线执行直接存储器数据传输。当CPU和DMA 同时访问相同的目标(RAM或外设)时,DMA请求可能会停止 CPU访问系统总线达若干个周期,总线仲裁器执行循环调度,以保证CPU至少可以得到一半的系统总线(存储器或外设)带宽。 在发生一个事件后,外设发送一个请求信号到DMA控制器。DMA控制器根据通道的优先权处 理请求。当DMA控制器开始访问外设的时候,DMA控制器立即发送给外设一个应答信号。当 从DMA控制器得到应答信号时,外设立即释放它的请求。一旦外设释放了这个请求,DMA控 制器同时撤销应答信号。如果发生更多的请求时,外设可以启动下次处理。 总之,每个DMA传送由3个操作组成: 1. 从外设数据寄存器或者从DMA_CMARx寄存器指定地址的存储器单元执行加载操作。 2. 存数据到外设数据寄存器或者存数据到DMA_CMARx寄存器指定地址的存储器单元。 3. 执行一次DMA_CNDTRx寄存器的递减操作。该寄存器包含未完成的操作数目。

DMA原理

第2章气凝胶热学力学特性及表面修饰机理2.2.2.1 DMA测试原理 动态热机械分析仪(DMA)被广泛用于材料的粘弹性能研究,可获得材料的动态储能模量,损耗模量和损耗角正切(tan δ)等指标。DMA8000主要是用来测量样品在一定条件温度、时间、频率、应力或应变、气氛和湿度等综合条件下的动态力学性能。DMA8000用于研究材料在交变应力(或应变)作用下的应变(或应力)的响应、蠕变、应力松弛和热机械性能等测试。图2.4为DMA8000实物图。 图2.4 DMA8000实物图 DMA使一定几何形状的样品产生一个正弦形变。这样,样品能够经受一个可控的应力或应变。如果应力一定,那么样品将产生一定程度的形变。形变的大小与样品的刚度有关。里面的电动机产生正弦波,并通过驱动轴传送到样品上。驱动轴的柔度及用来固定驱动轴的稳定轴承显著地影响测试效果。由DMA8000的驱动系统示意图(图2.5)可知,这种设计既不需要弹簧也不需要气动轴承装置来支撑驱动轴,使仪器有更低的柔度。

同济大学硕士学位论文气凝胶保温隔热材料的制备及力学热学性能研究 图2.5 DMA8000轻质驱动系统 DMA测量样品的刚度和阻尼,即模量和tan delta。因为仪器引入了一个正弦力,模量可以表示成同相部分(即储能模量)和异相部分(即损耗模量),如图2.6所示。储能模量(E’或G’)可以衡量样品的弹性行为。耗能模量与储能模量的比值就是tan delta(即损耗角正切)。它可以测量材料的能量损耗,它是材料摆脱能量的能力的量度,被称为相位角的正切。它告诉我们材料吸收能量的能力。它随着材料的状态(即温度)和频率的变化而变化。 图2.6 正弦应力与应变的关系、相位滞后和形变 2.2.2.2 DMA夹具的选择及测试模式 DMA8000配置了六种常用的夹具用于多种形变模式测试(图2.7),囊括了测试材料所需的所有类型。通常,根据待测样品的特性、尺寸以及用途等来选择适合的夹具。 单悬臂梁弯曲模式:对于大多数高聚物条状样品Tg前后的常规性能测试是非常适合的,也可选用试料夹测试粉末状或粘质样品。 双悬臂梁弯曲模式:特别适用于低硬度的样品,例如很小自由长度的特薄薄

相关文档