2009-08-23 57 views
1

ARMv6引入了一个很棒的功能 - 未对齐的内存访问,它使代码中的一些事情更加简单和快速。但微软只在winCE6中为它提供API。现在大多数PDA基于WinMobile6(在CE 5.x上)。和未对齐访问在默认情况:(如何在WinMobile6上启用ARMv6未对齐访问?

禁用我已经尝试设置对齐标志CP15注册,但这不工作 - 我有读未对齐的数据崩溃

是否有可能实现。在WinMobile6对齐访问


编辑:。我已经找到了工具,它可以使对齐访问,但我想开/关它从我的代码这是nueAdvancedProcessor

回答

1

有一个标志访问标志(CP15控制寄存器中的U位)以及对齐错误检查程序(A位)。确保你有适合你想要做的组合。特别是,如果设置了A位,则即使您打开了U位,所有未对齐的访问也会导致数据异常中止异常。查看ARM文档 - 全部可在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

+0

感谢您的回答!是的,我读过这个dosc,但看起来对Windows Mobile有一些限制。也许我必须从驱动程序或类似的东西运行代码。 – zxcat 2009-10-03 10:54:36

+1

当然。只能从特权模式访问CP15寄存器。我并不十分熟悉Windows Mobile,但可以尝试在引导加载程序或其他早期汇编代码中设置这些位,然后希望操作系统不会在稍后为您重新启动它们。 – 2009-10-03 15:46:28