1、需要做ALU检测和响应的寄存器标志位检测,RM48有相应的方法或者机制吗?
2、用MPU实现栈溢出检测可以吗?如果MPU中出现access violation,芯片会如何响应,ESM模块会收到异常吗还是其他处理方式啊?我用的是RM48的HDK,在手册里没有找到这方面的描述,在别的芯片手册中看到了MPU的描述,RM48的响应方式和其他芯片一样吗?
Susan Yang:
1 有些不太理解您的问题。 您是指测试ALU的机制,以及是否正确设置/重置了条件代码标志?Hercules MCU没有单独的内置机制来测试此功能。使用Self-Test Controller(STC)的CPU self-test 包括对ALU操作的测试。
2 可以实现的,这是MPU确定需要多少堆栈的方法。对MPU不允许的区域进行CPU访问(例如,从“ PUSH”进行堆栈写入)将导致中止响应。在这种情况下,没有ESM错误。CPU的中止处理程序必须读取数据故障地址和状态寄存器,以识别中止的原因并做出相应的响应。
user6172071:
回复 Susan Yang:
1、是我描述不太清晰。举个例子,比如进行加减或者移位操作,然后检查标志位寄存器中溢出标志位或者进位标志位是不是正确。还有一个问题就是,我之前看到一个帖子说标志位寄存器没有映射,需要汇编程序才能操作,是这样吗?
2、所以如果我用MPU机制去做栈溢出检测,只需要将栈顶和栈底设置成不允许区域,然后再中止处理程序中加检测和响应就可以了,是这个意思吗?