我正在开发基于Rocket-Chip的多核平台,它使用基于RISC-V ISA的内核。
我的目标是创建一个轻量级的操作系统,它有一个基本的调度程序,可以让我运行多个线程。
我尝试过FreeRTOS,ZephyrOS,但那些不支持多核。因此,我决定使用非常基本的API(pthread_create,join ..)制作一个在机器模式下运行的裸机应用程序。
问题是我不熟悉POSIX实现细节,也不熟悉OS体系结构。我已经花了一个月的时间试图了解Rocket-Chip正在发生什么,以及裸机如何工作,但我仍然远离我的目标。 你能告诉我从哪里开始吗? 欢迎任何建议。
最好的问候。
答案 0 :(得分:1)
SiFive的Freedom E SDK https://github.com/sifive/freedom-e-sdk/blob/master/software/smp/smp.c中有一个非常简单的SMP hello world示例,可以作为一个很好的例子。并发编程一般很难,但幸运的是,整个学科都是基于操作系统设计的。我读过的唯一一本书是https://en.wikipedia.org/wiki/Modern_Operating_Systems,我认为这是一个很好的起点。