【原创】从零入手 Kinetis 系统开发(十)之 eDMA 模块
2012-05-16 21:19 发表 系统分类:嵌入式系统 自定义分类:Kinetis
标签:Kinetis DMA UART
离上次更新从零入手系列又是一个月了,哎,时间过的好快的来,30 个一睁眼一闭眼的日子就这么过去了,
呵呵。不要怪俺更新的慢,的确是写这个比较累人,另外为保证这个系列的质量,还是要靠时间磨一磨的,
当然磨的好还是坏,群众的眼光是雪亮雪亮的,哈哈~
(本段是牢骚,嘿嘿,不想看的直接略过,asm(jump “正题”))本来是想着昨天就写出来的,结果 15 号
貌似是个好日子的来,一个是飞思卡尔的寻龙活动,一个是小米手机青春版发布,自己就等着这两个较期
待的事。果不其然,期望越大失望越大,哎...先说说第一个活动吧,感觉那哪是寻龙啊,一打开网页几乎
占满半个窗口的火龙就赤裸裸的跳出来了,哪还用的着去“寻”,直接捉就是的嘛,木有难度,让俺本来
颗期待寻宝找刺激的心拔凉拔凉的了,哎,估计向来无缘奖品的我是没戏了。另一个更让人窝火,苦苦等
到 10 点,结果最后出来还是买不起,说是给俺们学生准备的,结果价格有点高不说还人人可以抢,哎,又
让小米赚了个噱头了,俺们穷学生上哪说理去...呼呼,又是一顿牢骚,嘿嘿,作为学生还是专心搞自己的
技术吧,下面进入正题,asm( call "正题" )。。。
正题:
欢迎跳转到此,嘿嘿,是不是有点汇编编程的赶脚,有木有!
言归正传,上次说过要写篇 DMA 的介绍来,结果还是耽误了,这次就补上了,另外这里预告一下,下篇的
从零入手打算写一下 FlexBus 的软件部分(前面说了说它的硬件设计),如果有用到的话敬请期待,不会
用到或者早就已经熟用了就不用等了,当然期间还会穿插一些其他的工程技巧的,不要错过哦,亲...(咳
咳,借用下淘宝体)下面就正式介绍下 Kinetis 的 DMA:
1.先介绍下 DMA。DMA(Direct Memory Access)是一种直接存储器访问技术,工作过程中不需要 CPU 干预,
也不需要像中断处理方式那样需要保留现场、恢复现场之类的麻烦事,简单理解为一条直接连通外设与 RAM
的硬件通道(这句话需要仔细琢磨,下面文章里会重点提一下),所以 DMA 技术可以提高系统运行效率(即
CPU 可以干其他的事去,算是一种简单的并行模式吧)。而对 Kinetis 来说,我们会看到 eDMA,其实就是
多了个 e(enhanced,即增强型),嘿嘿,至于为什么会多了个 e,从下面对 Kinetis 的 eDMA 特性的分析
就可以看出来;
2.Kinetis 的 eDMA 包括两部分,即 DMA Muliplexer(DMA 多路转换器,就是个矩阵开关,路由 DMA 触发源
的)和 DMA Controller(DMA 控制器,这个是重点,用来配置 DMA 控制引擎(Engine)和 DMA 传输控制描
述区(TCD)),其内部框图如下所示: