update Demo-Build/RISC-V32/readme.txt.

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2026-08-04 19:42:53 +00:00
committed by Gitee
parent 568c7f99a5
commit 435cee98fe
+33
View File
@@ -169,3 +169,36 @@ MPIE:进中断前中断使能状态
MIE 机器模式中断使能
*/
--------------------------------------------------------------------------------
补充说明-硬件压栈可靠性测试
决定硬件压栈技术是否稳定可靠的关键因素,在于 port_rv32_HWS.S 中的最后三句代码。
简单来说,内核解锁后,最后两句代码(断点1、断点2)已不在服务层临界区的保护之中。
如果在内核解锁前,系统中断(SysTick、PendSV)已经被触发,要保证在内核解锁之后,
在最后两句代码(断点1、断点2)执行完之前,不会响应系统中断。否则说明硬件压栈技
术是不可靠的,不能使用。
为此,特提供两种测试方法给自己和用户,以方便验证硬件压栈技术的可靠性。
方法一
在 port_rv32_HWS.S 中,通过自行 #define __TEST_PENDSV 来开启测试。
该测试已在内核解锁之前触发 PendSV,在内核解锁之后,如果由 断点1 或 断点2 再入
PendSV,当由 PendSV 直接返回后将跳转至 test_pendsv_fault_handler。
用户可在该处理函数中通过 打印 或 点灯 等方式,来报告异常发生。
/* 示例 */
void test_pendsv_fault_handler(void)
{
printf("hardware stack test error\r\n");
while(1);
}
方法二
在 pendsv_hook 中打印 mepc,持续一定时间后数据统计,如果 mepc 出现过 断点1
或 断点2 的地址,判定异常发生。
/* 示例 */
__WEAK void pendsv_hook(void) MCUCFG_OSIT_ATTRIBUTE
{
printf("mepc: %#x\r\n", __get_MEPC());
}