2022年3月7日

STM32L4R9xxxx图形加速器DMA2D实例使用——32位带alpha透明通道的位图ARGB8888显示时地址对齐问题

摘要: 摘要:本文首先介绍STM32L4R9芯片的图形特性及相关的硬件模块,以及图形显示时各个模块的功能划分。尤其是针对DMA2D模块,详细描述主要特性和支持的颜色模式,以及不同颜色模式之间像素的转换。然后以输出ARGB8888颜色模式为例,让屏幕分别显示16位、24位、32位的位图,发现32位不能显示。分析原因,引出了DMA2D图像复制时地址需要对齐特点,16位的位图需要16位对齐,32位的位图需要32位对齐,24位的位图需要8位对齐。将32位位图的数据地址对齐后,问题得以解决,可以正确显示到屏幕。作为延伸,分析DMA2D地址对齐的由来,验证了CPU可以处理地址不对齐。考虑到DMA2D是特殊专业的DMA,因此就通用的DMA,测试发现也存在地址需要对齐的特点,最后给出了测试代码和分析流程。 关键字:DMA2D;32位位图;图像混合;GFXMMU;ARGB8888;32位地址对齐;DMA地址不对齐 阅读全文

posted @ 2022-03-07 10:26 wangyw 阅读(413) 评论(0) 推荐(0) 编辑

2018年4月16日

在路上●我的年青●逐步前进

摘要: 移动终端设备的安全性越来越受到重视,面对这一难题,出现了各种各样的方案,现在主流的是Android系统标配TEE安全系统这一方案,但是笔者认为这一方案有很大的局限性,只是一个暂时的解决思路。本文来源于笔者早起参加过的一个项目,试图一劳永逸的解决移动办公设备的所有安全问题,但是最终没有付诸实际。这次拿出来与大家探讨,如有不当的地方,欢迎批评指针。 阅读全文

posted @ 2018-04-16 21:41 wangyw 阅读(322) 评论(0) 推荐(0) 编辑

2018年2月11日

ARM v8-A 系列CPU的MMU隐射分析

摘要: V8-A系列CPU有ELX,X为0~3等4个异常级别,又有AArch64和AArch32两种执行状态,异常级别可以决定执行状态,而对应着执行状态,MMU页表的选取又能分为几种方式。本文首先分析异常级别、执行状态、MMU页表选取三者之间的关系,以及不同执行状态下MMU页表的选取方式。然后分别就64位的页表,以及AArch32时短地址描述符和长地址描述格式,加以详细描述。特别地,对于现行64位Android系统,分别就ATF部分和Linux内核部分,描述页表配置实例,并就64位的4级页表查找,给出详细查找过程。 阅读全文

posted @ 2018-02-11 00:15 wangyw 阅读(1088) 评论(0) 推荐(0) 编辑

2018年2月6日

ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析

摘要: 本文以Cortex-A53为例,首先分析Cache与内存隐射的直接、全相连、组相连等三种映像方式,以及Cache的命中流程。ARM CPU 扩展Trustzone功能后,内存也具有安全属性,相应的Cache也做了扩展,标志命中的内存地址是安全还是非安全的。针对CPU访问内存数据的Cache一致性问题,主要结合现行的Android标配TEE系统,介绍双系统的Cache一致性。 阅读全文

posted @ 2018-02-06 00:10 wangyw 阅读(1708) 评论(0) 推荐(0) 编辑

2017年6月7日

二维图像的投影和图像重建分析之傅里叶变换法

摘要: 图像重建有变换法和迭代法,本文主要分析变换法。根据二维图像的投影,与其傅里叶变换之间的关系,得出图像重建的4种方法,直接傅里叶反变换、先反投影后滤波、先滤波后反投影、卷积反投影。直接傅里叶反变换法利用中心切片定理,先求投影数据的一维傅里叶变换,然后二维插值栅格化得到二维傅里叶变换数据,逆变换后得出目标图像。先反投影后滤波是将投影数据直接反投影,然后频域中通过二维锥形滤波,得到目标图像。先滤波后反投影时在反投影前对数据修正(滤波),卷积反投影与其类似,只是将频率中滤波拿到时域中做卷积运算。对仿真的投影数据进行重建,比较得出,滤波反投影、卷积反投影效果很好,直接傅里叶反变换效果一般,先反投影后滤波可能方法不对、图像重建质量最差。 阅读全文

posted @ 2017-06-07 23:51 wangyw 阅读(12000) 评论(0) 推荐(2) 编辑

2017年4月17日

MATLAB等距扇形反投影分析

摘要: MATLAB phantom函数产生的Shepp-Logan模型,可以用来验证二维图像重建算法的数值精确度,本文首先据此模型,结合正弦图,讨论平行投影时的极坐标表示。扇形投影时,每条射线,可以看做是平行投影线旋转一定角度后的投影,根据几何关系,得出扇形投影时的极坐标表示。反投影是投影的逆变换,根据正弦图,可以很容易得出平行反投影的处理过程。对于扇形反投影,本文介绍了两种方法,一是参考MATLAB ifanbeam函数,将扇形投影数据重排成平行投影数据,这是个插值的过程,然后再按照平行反投影处理;二是对照平行反投影的过程,由扇形投影时的极坐标表示,直接扇形反投影。 阅读全文

posted @ 2017-04-17 22:48 wangyw 阅读(3502) 评论(0) 推荐(0) 编辑

2017年4月16日

MATLAB PCHIP函数一阶求导分析

摘要: 本文首先根据三次立方插值的一般表达式,得出分段三次立方插值时,每个小区间上的各次项系数。分析发现,三次项、二次项、一次项系数都与小区间端点处的一阶导数值相关,故需要求出端点处的一阶导数值,Matlab Pchip.m文件给出了方法。根据pchip.m的代码以及参考文献,归纳出求一阶导数值的公式。文章第三节着重分析内点处导数值公式的由来,以及与此相关的其它三个公式。 阅读全文

posted @ 2017-04-16 21:01 wangyw 阅读(2549) 评论(0) 推荐(0) 编辑

离散傅里叶变换蝶形运算分析

摘要: 离散数据求取傅里叶变换,若直接计算耗时太久,本文首先根据离散傅里叶变换的基本性质,分析蝶形运算的推导过程,得出采用蝶形运算时需要的复杂度,相比直接计算,计算量确实大大减小。根据蝶形运算的过程,自行编写代码,测试并统计消耗的时间。而快速傅里叶变换采用的是分级蝶形,首先对数据分级后排序,然后分级进行碟形运算。分级排序需要求出原序列的倒位序,对此本文提出不同的方法,与雷德(Rader)算法比较。共提供了七种方法,最后比较得出,雷德算法最优。 阅读全文

posted @ 2017-04-16 01:28 wangyw 阅读(2107) 评论(0) 推荐(0) 编辑

2017年3月27日

在路上●我的年青●悠忽两年

摘要: MATLAB Phantom函数产生的Shepp-Logan模型,和人脑结构相似,是医学影像学中用于CT图像仿真重建领域的经典模型。本文首先详细分析Shepp-Logan模型的结构,然后介绍对该模型数据求取Radon变换的两种方法。Radon变换后的数据求取Iradon变换,需要对数据预处理,预处理中用到滤波和卷积函数,第二节对其详述。模型数据的Fanbeam和IFanbeam变换,重要的是平行射线转扇形射线、以及扇形射线转平行射线的转换,而转换的过程就是插值,第三节详述常用的分段三次立方插值和三次样条插值方法。通篇都是分析,没有创新,涉及到的M文件有phantom,radon,iradon,fft,ifft,conv,pchip,spline。其中快速傅里叶变换实现频域滤波的物理意义,以及时域卷积的物理意义,并没有解释清楚,需要继续探讨。 阅读全文

posted @ 2017-03-27 22:26 wangyw 阅读(1384) 评论(0) 推荐(1) 编辑

2015年6月26日

ARM v7-A 系列CPU的MMU隐射分析

摘要: ARM v7-A系列的CPU加入了很多扩展,如多核处理器扩展、大物理地址扩展、TrustZone扩展、虚拟化扩展。若支持大的物理地址,则必须支持多核处理器;若支持虚拟化,则必须支持大的物理地址、多核处理器、TrustZone。加入这些扩展后,相应的MMU(虚拟地址到物理地址的隐射功能)结构也改变了许多。本文首先分析加入扩展后MMU的整体结构,然后详细介绍地址转换中用到短描述符格式(32位)和长描述符格式(64位),以及如何实现虚拟地址到物理地址的查询,最后就二级隐射问题,给出一个例子用以验证。 阅读全文

posted @ 2015-06-26 00:06 wangyw 阅读(2964) 评论(0) 推荐(1) 编辑

导航