【问题标题】:Developing a non-x86 Operating system [closed]开发非 x86 操作系统 [关闭]
【发布时间】:2010-12-04 22:54:26
【问题描述】:

我必须尽快选择一个论文主题,并且我正在考虑为非 x86 架构(我倾向于 ARM 或 AVR)实现一个操作系统。我避免使用 x86 的原因是因为我想获得一些嵌入式平台的经验,并且我(可能不正确地)相信在较小的规模上执行任务可能会更容易。有没有人有任何指向网站或资源的指针,其中有一些例子。我已经阅读了大多数(如果不是全部)关于堆栈溢出的 OSDev 问题,并且我也知道 AvrFreaks 和 OSDev。此外,如果有人在这方面有经验并想就方法或平台提供一些建议,我们将不胜感激。

谢谢

【问题讨论】:

  • 或者你可以和我一起为原始 Amiga 寻找 Exec (AmigaOS) 的克隆。 ;-)

标签: c assembly embedded operating-system


【解决方案1】:

开发 (RT) 操作系统并非易事。虽然它很有教育意义。我对你的建议是开始独立于硬件。 PC 是一个很好的起点,因为它具有大量 I/O 可能性和良好的调试功能。如果您创建一种虚拟机应用程序,您可以创建具有简单平台功能的东西(控制台输出、一些按钮/指示器是一个好的开始)。此外,例如,您可以使用文件来输出时间(时间表) 如果您从“裸机”开始,则必须从头开始。在 LED 上进行调试(开/关/闪烁)非常困难且耗时。我的第二个建议是尽早定义您的范围:您感兴趣的是调度程序、通信机制还是文件系统……?做所有事情很容易以终生的项目告终。

Samek, Miro, Practical UML Statecharts in C/C++ 包含一些关于微内核的有趣部分。这是我最喜欢的书之一。 Advanced PIC Microcontroller Projects in C: From USB to RTOS with the PIC 18F Series 似乎涵盖了您的一些兴趣;虽然我还没有读过。 Operating Systems: Internals and Design Principles 也可能带来好的见解。它涵盖了从调度程序到网络堆栈的所有方面。祝你好运!

【讨论】:

    【解决方案2】:

    看来你应该买一本 Jean Labrosse 的书 MicroC/OS

    看起来他可能也刚刚更新了它。

    http://micrium.com/page/press_room/news/id:40

    http://micrium.com/page/home

    这是一本有据可查的书,描述了用 C 语言编写并移植到许多嵌入式处理器的 RTOS 的内部工作原理。您也可以在 x86 上运行它,然后交叉编译到另一个处理器。

    【讨论】:

      【解决方案3】:

      Contiki 可能是个值得研究的好东西。它非常小,在微控制器上运行,并且是开源的。它偏重于网络和通信,但也许您可以跳过这些部分并专注于内核。

      【讨论】:

        【解决方案4】:

        如果您选择 ARM,请获取一份 ARM 系统开发人员指南(Sloss、Symes、Wright)。 Link to Amazon

        第 11 章讨论了一个简单的嵌入式操作系统的实现,并提供了很好的解释和示例代码。

        【讨论】:

          【解决方案5】:

          ARM 和 AVR 是粉笔和奶酪 - 您的范围非常广泛!

          与 AVR 相比,您可以为 ARM 开发一个非常不同且更复杂的操作系统(除非您可能在谈论 AVR32 - 这是一个完全不同的架构?)。

          AVR 会受到更多限制,以至于该任务对于您的论文范围来说可能只是微不足道的。即使指定 ARM 也不会缩小范围。低端 ARM 部分的片上存储器很小,没有 MMU 和简单的外设;高端部分有一个 MMU、数据/指令缓存,通常是 GPU,有时是 FPU,硬件 Java 字节码执行,以及许多其他复杂的外围设备。 “ARM”一词涵盖了 ARM7、ARM9、ARM11、Cortex M3、Cortex M8,以及一些用于 ASIC 和 FPGA 的架构——所以您可能需要将其范围缩小一点?

          如果您选择 ARM,请查看these resources。尤其是来自 Hitex 的 Insider's Guides 和“使用 GNU 构建裸机 ARM”,它们将帮助您“启动”您的开发板并为您的操作系统形成起点。

          【讨论】:

            【解决方案6】:

            虽然听起来很傻,但我最近对Arduino 平台很感兴趣,想在更有经验的朋友的帮助下学习一些黑客技巧。还有this thread 表示有兴趣为它编写操作系统的人(尽管不是他的主要意图)。

            我认为 Arduino 作为此类工作的教育工具非常基础和直接。如果符合要求,可能值得一试。

            【讨论】:

              【解决方案7】:

              我建议的第一件事是大大缩小你的论文主题。操作系统无处不在,经过充分研究和开发。你希望追求什么新颖的想法?

              也就是说,AvrX 是我在 AVR 微控制器上专业使用过的一个非常小微内核。它是用汇编写的。一个人开始将它移植到 C,但还没有完成移植。最终确定移植到 C 和/或制作到 AVR32 架构的 C 移植将是有价值的。

              【讨论】:

                【解决方案8】:

                操作系统不应与任何处理器紧密耦合,因此 ARM 或 x86 无关紧要。 如果我们开始讨论是否嵌入了 ARM 而不是 x86,这将是一个更大的话题。无论如何,x86 处理器用于嵌入式软件开发的地方很多。

                我猜大部分内核代码都是纯 C 语言。已经有许多免费操作系统可用,例如嵌入式 linux、免费版 Itron、minix 等……这将是一项艰巨的任务。

                但另一方面,您可以尝试将嵌入式 linux 移植到尚未运行的平台上。这将对世界非常有用。

                【讨论】:

                  【解决方案9】:

                  RTOS 几乎从来都不是特定于架构的。参考网上任何可用的 RTOS 架构,您会注意到 CPU/硬件抽象层将 CPU 抽象出来。板特定部分(处理外围设备,如 com 端口、定时器等)由板支持包抽象。

                  首先,了解多线程在 RTOS 中的工作原理,尝试为您选择的 CPU 实现一个简单的上下文切换代码;这将涉及用于创建线程上下文、保存上下文和恢复已保存上下文的代码。此代码将构成您的硬件抽象层的基础。使用所选 CPU 的软件模拟器可以轻松完成初始开发。

                  我同意建议阅读 Jean Labrosse 的书 uCOS-II 的发帖人。上下文切换代码示例,尤其是针对 x86 的代码示例,只需 google 搜索即可!

                  【讨论】:

                    【解决方案10】:

                    【讨论】:

                    • 感谢您的参考,它目前放在我的书架上,它是我去年操作系统架构主题的参考文本 =]
                    猜你喜欢
                    • 2010-09-12
                    • 1970-01-01
                    • 2012-07-11
                    • 2010-09-20
                    • 1970-01-01
                    • 2010-09-20
                    • 1970-01-01
                    • 2021-04-06
                    • 2011-04-08
                    相关资源
                    最近更新 更多