打印

STM32没有MPU

[复制链接]
12997|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
usecoolful|  楼主 | 2008-3-13 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,是不是没有MPU(Memory protect unit)?
来自 2楼
香水城| | 2008-3-14 18:26 | 只看该作者

STM32是否需要MPU? (Memory Protection Unit = 存储器保护单元)

MPU的主要作用是实施存储器的保护,它能够在系统或程序出现异常而非正常地访问不应该访问的存储空间时,通过触发异常中断而达到提高系统可靠性的目的。

所谓非正常地访问不应该访问的存储空间,最常见的现象是存储器访问越界,更具体的表现可以是数组溢出、堆栈溢出、动态存储器分配失败等情况;另一种常见的现象是程序跑飞了。

出现存储器访问越界的原因都是因为程序设计的不当所造成,即通常所说的Bug。与具有操作系统的大型程序系统相比,在MCU这种小型系统中出现这种严重的设计不当的比率相对小很多;另一方面,如果在程序的实际运行中真的出现了存储器访问越界的状况,MCU这种小型系统是无法实现在线处理的,而大型系统可以通过隔离出错部分、清除出错任务等手段进行在线补救。

而对于程序跑飞的状况,在MCU中已经有十分有效的看门狗做保障(STM32中还有2个互相独立的看门狗),虽不能覆盖100%的故障源,但实践证明这种技术已经可以应付绝大多数的需求。

从硬件的实现角度讲,任何存储器保护或存储器管理单元(MPU or MMU)都是非常耗费芯片面积的,直接结果就是芯片的成本增加。

基于上述分析,我认为没有在STM32这种存储器空间较小的、面向MCU应用的芯片中植入MPU功能,是一个非常明智的选择。

使用特权

评论回复
板凳
香水城| | 2008-3-13 17:39 | 只看该作者

是的,STM32没有MPU

使用特权

评论回复
地板
usecoolful|  楼主 | 2008-3-14 15:37 | 只看该作者

CONTROL寄存器没有作用了?

使用模拟调试可以,但是写到FLASH运行,似乎没有作用,怎么写CONTROL寄存器,都是0。

上传图片好麻烦,而且总失败。真服了!

使用特权

评论回复
5
香水城| | 2008-3-14 15:50 | 只看该作者

请说明白一点哪个Control寄存器?

你前面问MPU,已经告诉你STM32没有MPU,这里又冒出一个CONTROL寄存器,实在让人不理解。

使用特权

评论回复
6
zlgmcu| | 2008-3-14 16:51 | 只看该作者

MPU是可以裁减的

MPU(存储器保护单元)是Cortex-M3处理器内核可裁减的功能,即实际的芯片制造商在得到英国ARM公司的授权后,可以根据自己的需要集成或不集成MPU。例如,在ST的芯片没有MPU,而Luminary芯片就有MPU。

使用特权

评论回复
7
xwj| | 2008-3-14 19:20 | 只看该作者

需不需要MPU(MMU )要看你想不想让它跑多用户系统

如果只是用于对外封闭的嵌入式控制,完全没必要
如果要想做多用户终端,比如跑linux、WINCE,STM32也没这个能力

所以,基本上用不到MPU的

使用特权

评论回复
8
mohanwei| | 2008-3-14 20:42 | 只看该作者

产品定位吧,合适就行

使用特权

评论回复
9
MicroMMU| | 2008-3-15 13:04 | 只看该作者

呵呵,8051,AVR,ARM7TDMI,没有MPU一样可用。

也没有什么不稳定。

使用特权

评论回复
10
usecoolful|  楼主 | 2008-3-16 15:01 | 只看该作者

现在的芯片,确实有没有MPU都可以

赞同7楼的说法。

对于FLASH和RAM都不是很大的应用来说,确实不用MPU是完全可以的。而且这样的系统基本都是专用的。所以如果程序运行出错的情况很多,那就要改程序了。

稳定和MPU当然没必然联系。 :)

使用特权

评论回复
11
zlgarm| | 2008-3-28 18:42 | 只看该作者

Luminary有MPU!价格又便宜!

   作为全球首款的Cortex-M3处理器,Luminary带有MPU!价格又低!
   在函数接口公开的领域,MPU显得特别有用。如PLC式的电机控制器,可以使用uCOS-II加上MPU管理全部存储空间。uCOS-II的内核和电机的核心算法是固定不变的,只有在某种特权模式下才能调用;而终端用户编写的梯形图程序放在用户模式下,不能直接访问uCOS-II内核和电机的核心算法,只能通过某种手段用特权模式间接访问。这样做的好处是,终端用户写的程序不容易破坏uCOS-II和电机算法,而造成人身事故!

(zlgarm_zsg)

使用特权

评论回复
12
mylovetus| | 2008-4-11 16:24 | 只看该作者

忽悠,接着忽悠!

使用特权

评论回复
13
香水城| | 2008-4-11 17:22 | 只看该作者

保护外部器件的最好办法是提供硬件的保护

保护外部器件的最好办法是提供硬件的保护,尤其是对电机应用中的外部器件。

通过MPU保护特定的软件部分不被其他跑乱的程序干扰,从而达到保护外部硬件的方法固然很好,但如果这个特定的软件部分有Bug怎么办?还有程序跑乱是很严重的问题,这种问题应该消灭在开发阶段。


STM32提供多种硬件保护机制,如电机控制模块的刹车机制、死区控制都是在硬件层面实现的;I/O端口配置的锁定功能等。

使用特权

评论回复
14
mj2008| | 2008-4-12 21:07 | 只看该作者

Luminary有MPU!不过我的项目中不用它

使用特权

评论回复
15
inurl| | 2013-6-30 10:54 | 只看该作者
看着挺好用, 其实没啥用

使用特权

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

本版积分规则

5

主题

52

帖子

0

粉丝