这个现象不奇怪。 VM 程序问题。
最根本的原因,没有理解 CSR VM programing environment . 这个是 VM (virtual machine) in SoC (System On Chip) , 与 bare metal embedded programming environment 是完全不同的。 做个比拟来讲, 在 SoC 里运行的,除了你的 VM code 之外, 还有 kernel , 还有其他的 high priority thread, 而你的 VM code 是 lowest priority thread. VM 的 programming model 是 Event-Driven , 主要工作就是 provide event handler , 可以向 kernel / System thread 请求 register a System Message Handler, to react to System Message.
在 VM code 里用 while(1) poll UART status , 是极其错误的。 应该向系统 register UART message, 在 event handler 里处理 UART 数据。