如何制作一个简单的多核多线程裸机程序?

时间:2018-04-22 20:45:06

标签: c operating-system scheduled-tasks posix riscv

我正在开发基于Rocket-Chip的多核平台,它使用基于RISC-V ISA的内核。

我的目标是创建一个轻量级的操作系统,它有一个基本的调度程序,可以让我运行多个线程。

我尝试过FreeRTOS,ZephyrOS,但那些不支持多核。因此,我决定使用非常基本的API(pthread_create,join ..)制作一个在机器模式下运行的裸机应用程序。

问题是我不熟悉POSIX实现细节,也不熟悉OS体系结构。我已经花了一个月的时间试图了解Rocket-Chip正在发生什么,以及裸机如何工作,但我仍然远离我的目标。 你能告诉我从哪里开始吗? 欢迎任何建议。

最好的问候。

1 个答案:

答案 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,我认为这是一个很好的起点。