发新帖我要提问
12
返回列表
打印

bitband与互斥访问

[复制链接]
楼主: HSunrays
手机看帖
扫描二维码
随时随地手机跟帖
21
流于表面的东西不值得浪费精力争论!
请问香主,关于存储器互斥访问在STM32F1xx的实现方法有没有答复?
另,香版主,本人一点建议,既然身为ST MCU的FAE(猜测的,见谅!),而现在z主推ARM CM3架构的,我觉得版主应较深入的了解 ...
HSunrays 发表于 2010-5-20 17:24


请问楼主在6楼引用的这一段,有没有英文版本,我还没有找到,我需要以英文版为准去求证,老外不懂中文啊。

Cortex-M3的架构,我肯定是研究过的,但不会具体深入地研究它的详细实现,和具体的指令系统,尤其是不常用的指令和功能,因为我们推广MCU是要用C语言去做开发的。作为技术支持,我们更加关注产品中,在CPU核心之外的其它功能,这些才是ST的产品所特有的。至于详细的CPU核心的内容,还是留给它的设计者——ARM去提供深入的支持吧。当然我如果有足够的时间,谢谢你的建议,还是多学习一点比较好,:lol

使用特权

评论回复
22
香水城| | 2010-5-20 18:08 | 只看该作者
6楼提到的这段说明:“在CM3的技术参考手册中,推荐实现者标记出一段有限的地址,只在这段地址中适用互斥访问的规则,而不要对所有4GB都限制住。这段地址通常是从LDREX指令族给出的地址开始,长度在16字节至4K字节范围内。但芯片制造商可能更倾向严格的规则。”

我在Cortex-M3技术参考手册(见下图)中没有找到,请楼主提示一下在哪里,谢谢。

CM3_TRM_r2p0.GIF (5.36 KB )

CM3_TRM_r2p0.GIF

使用特权

评论回复
23
xblei| | 2010-5-20 21:44 | 只看该作者
向同志们学习啦。

使用特权

评论回复
24
HSunrays|  楼主 | 2010-5-21 14:38 | 只看该作者
香主,我前面引用的是宋岩《Cortex-M3 权威指南》中的一段,现在《ARM®v7-M Architecture Reference Manual》中Page A-15的《A3.4.3 Tagging and the size of the tagged memory block》即为互斥访问实现的地址描述。

DDI0403C_arm_architecture_v7m_reference_manual_errata_markup_3_0.pdf

4.6 MB

使用特权

评论回复
25
香水城| | 2010-5-21 14:57 | 只看该作者
谢谢。我说怎么没有在Cortex-M3技术参考手册中找到呢。

确认一下,下图就是你的问题所涉及的部分:

CM3_Exclusives_Reservation_Granule.GIF (27.03 KB )

CM3_Exclusives_Reservation_Granule.GIF

使用特权

评论回复
26
香水城| | 2010-5-21 14:58 | 只看该作者
我有宋岩的书,还有原文版的,但我也没有找到有关Exclusives Reservation Granule的说明。

使用特权

评论回复
27
HSunrays|  楼主 | 2010-5-21 15:03 | 只看该作者
按这段应该是4byte~512byte,但STM32种没有相关实现说明,是不是没有实现ldrex/strex指令呢?

使用特权

评论回复
28
香水城| | 2010-5-21 15:33 | 只看该作者
我在5楼就说了:“STM32使用Cortex-M3的核心,除了MPU之外,STM32实现了完整的Cortex-M3核心”,不可能单独拿出2条指令的功能,那样做等于是修改CM3内核,工作量可能不亚于设计整个STM32芯片。

13楼的朋友也证实了这一点:“ST的官网上下载的库里有LDREX和STREX相关的函数,是用嵌入汇编编写的,C程序也能调用,可见STM32应该是可以使用这两个指令的。 至于有效范围,楼主可以做实验试一下, 估计是在整个flash区域都有效的。”

其实你花这么多时间在这里纸上谈兵,不如直接做实验试一下,很快就可以得出结论的。

使用特权

评论回复
29
HSunrays|  楼主 | 2010-5-21 18:46 | 只看该作者
回28楼"其实你花这么多时间在这里纸上谈兵,不如直接做实验试一下,很快就可以得出结论的。",说得也是,只是我PCB还没做回来。

使用特权

评论回复
30
香水城| | 2010-5-26 10:35 | 只看该作者
经过与设计师沟通,STM32中实现了LDREX和STREX指令,对于这样的指令LDREX  r0, [r2],只能锁住r2指向的地址,而不能锁住其它的地址。

使用特权

评论回复
31
HSunrays|  楼主 | 2010-5-26 20:11 | 只看该作者
好,谢谢相主!

使用特权

评论回复
32
myxiaonia| | 2014-5-27 12:22 | 只看该作者
HSunrays 发表于 2010-5-18 19:38
比如我要访问一共享资源,使用一个存储单位(字/字节)标志该共享资源的使用状态,为0表示该资源空闲,否则 ...

哈哈  很像51的本质函数__testbit啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则