#define hb_reg(address) (*((volatile unsigned long *)(address)))
这种定义默认是读,实际上也可以写,编写简单dma驱动程序如下:
但是仿真波形发现,上图49行程序并没有执行:
c代码编译器默认优化选项是-o3,
gnu_cc_flags = -g -o3 -mthumb $(cpu_type)
从下图lst文件看得到的确有三条str指令,但是为何第三条str指令未执行?我们对比下优化选项是-o0的机器指令。
优化选项是-o0:
gnu_cc_flags = -g -o0 -mthumb $(cpu_type)
lst文件如下图所示,左边是优化-o3,右边是-o0
程序简单,优化前18条指令,优化后16条指令,优化掉2条机器指令,并调换了指令顺序,但并不影响功能。所以优化级别-o0、-o3功能都ok。
接下来就是定位mcu的内部功能,追踪代码,从cpu的取指令接口开始查询,很快可以找到原因,由于新增dma控制器新增了mcu的架构地址空间,添加了译码器逻辑,default slave这个ip没有改,造成default slave收到dma新增的地址空间后认为是地址溢出错误,所以报了resp_err给cpu,造成cpu挂起。关于具体原因、mcu架构请进【知识星球】查看详细解释。
虽然功能ok,但上图波形明显还有问题需要优化解决,详见【知识星球】
欢迎加入【全栈芯片工程师】知识星球,手把手教你设计mcu、图像传感器、isp图像处理,从算法、前端到后端全流程设计。
高集成度ETC射频收发器应用系统
Si-II会直接转化为体心立方结构或菱形结构的亚稳态晶体硅
KUKA机器人高级编程- 全局变量的应用举例
嵌入式系统的安全性
小米手机零售版今日正式发货 配件官网同步销售
ARM MCU的软硬件debug过程
电动车充电技术,催生下一个全球标准
机器人餐厅可以如何开启“战争”
长虹全新升级版的NB-IoT物联空调投入使用 引领智慧校园步入新纪元
非洲猪瘟检测器招标参数有哪些?
汉高推出400G高速率光模块材料解决方案,为中国通讯市场发展加速
以技术创新赋能屏显产品,三星首款5K高分辨率显示器ViewFinity S9新品上市
交通流模型分类及微观建模
光电控制的过压保护电路,Over-voltage protection circuit
中国10月半导体器件专用设备制造业增加值同比增长33.9%
程序员有哪些出路
美国国际贸易委员会驳回了高通对苹果的第二起专利侵权诉讼
A型应急照明集中电源的实际操作与维护保养的介绍
复合材料有哪些种类
介绍一种基于最小二乘法的永磁同步电机参数辨识方法