ARMv6引入了一个很好的特性--非对齐内存访问,它使代码中的某些内容变得更简单和更快。但是微软只在winCE6中给出了它的API。现在大多数PDA都是基于WinMobile6的(在CE5.x上)。默认情况下,未对齐访问被禁用:(
我尝试在CP15寄存器中设置未对齐标志,但这不起作用--我对读取的未对齐数据进行了崩溃。
是否可以在WinMobile6上启用非对齐访问?
编辑:我已经找到了这个工具,它可以启用非对齐访问,但是我希望从代码中打开/关闭它。我是nueAdvancedProcessor。
发布于 2009-10-02 10:01:54
有一个未对齐访问标志( CP15控制寄存器中的U位)和一个对齐错误检查器(A位)。确保你对你想要做的事情有正确的组合。特别是,如果设置了A位,那么所有未对齐的访问都会导致数据异常,即使您打开了U位。检查手臂上的文档-所有在http://www.arm.com可用。
特别是,您需要ARM架构参考手册中的A2.8.2节“ARMv6系统中的非对齐数据访问”。文件号ARM DDI 0100I。它被命名为"ARMv5架构参考手册“,但是包含了最初的ARMv6信息。我希望这个链接有效:http://infocenter.arm.com/help/topic/com.arm.doc.ddi0100i/index.html
发布于 2020-07-20 08:51:31
如果您由于STM32F7或Cortex- ARMv7 6、ARMv7或ARVv8上的未对齐内存访问而获得硬故障,请参考下面的链接获取应用程序说明表单IAR。https://www.iar.com/support/tech-notes/general/unexpected-usagefault-or-hardfault-exceptions/
https://stackoverflow.com/questions/1318844
复制