没有OS的Raspberry PI可以吗?


9

我最近在Arduino上做很多事情。这非常简单,因为您可以直接在其上执行C ++代码,而不需要操作系统或驱动程序。

我已经进行了一些研究和AFAIK,您通常在Raspberry PI上安装Linux并在其上创建python脚本或C ++二进制文件。

问题:是否可以在没有任何操作系统的情况下在其上运行代码,但仍然能够使用HDMI和SD卡?


2
您可能会发现,在功能更小,功能更弱但文档更完整的ARM处理器上进行裸机项目更容易。尽管要注意廉价开发板上实施得不好的专有调试适配器-有时它们会得到反向工程的开放驱动程序,或者您可以购买真正的jtag或使用串行引导程序。至少使用pi,您应该能够期望获得良好的工具链支持。
克里斯·斯特拉顿

Answers:


16

在没有操作系统的RaPi上运行代码:没问题。戴维·韦尔奇(David Welch)做了艰苦的工作,检查一下他的琴槌。基本上,您可以获取标准的启动文件,并将kernel.img替换为要运行的文件。为了避免“ SD卡跳动”,您可以运行一个引导加载程序,该引导加载程序通过串行线路接收要运行的映像。我添加了自动重启功能,因此您可以运行“ hands-off”新映像。如果您想走这条路线,我会提供更多信息。

运行您自己的裸机应用程序并使用屏幕和SD卡:这是一个问题。所有信息都可以从Linux资料的深层获得,并且有人在从事此工作(请检查DexOs吗?),所以我认为在半年左右的时间里,这些信息将是常识。但是现在我会说这可能是太多的工作。


我想知道CPU如何在没有适当的SD卡和文件系统驱动程序的情况下从SD卡加载内核吗?
bytecode77

1
您需要的基本文件(可以从RaPi站点下载,可以单独下载,也可以作为Linux发行版的一部分)包括GPU的启动文件。据推测,GPU具有一些内置的bootROM,可用来读取SD,加载其代码,加载kernel.img以及激活ARM CPU。
Wouter van Ooijen

@DevilsChild-许多CPU都内置了基本的引导程序,我正在使用的TI Davinci部分具有“ ROM引导程序”,可以通过串行或SD卡工作。SD卡使用基本的SPI接口。
约翰·U

5

总是有可能的,但是您必须为HDMI和SD接口编写自己的驱动程序,并可能为后者编写文件系统。


1
实际上,这将极其复杂,因为首先启动GPU,然后需要加载Broadcom的二进制Blob才能启动CPU。另外,如果我没记错的话,GPU驱动程序和固件也是封闭源。
AndrejaKo 2012年

是否有可用的驱动程序可以包括在内,因此可以正常工作?任何的想法?
bytecode77

@Devils Child我不确定这将是多么容易或所有内容的记录方式。我认为您也许可以使用现有的引导加载程序来加载自己的OS映像并启动CPU,但是Stevenvh在答案中写的问题表明:您需要编写驱动程序,而大多数驱动程序文档是可用。
AndrejaKo 2012年

@DevilsChild-现有的驱动程序很可能是为特定的OS编写的,如果要将它们集成到自己的软件中,它将需要一些功能。最后,您将编写一个(有限的)操作系统副本。另外,AndrejaKo指出这将非常困难,并且封闭源代码的固件并不能使事情变得容易。为什么不想要一个操作系统?
stevenvh 2012年

1
@DevilsChild单板计算机和VM之间的重要区别在于,您可以将板放置在托管VM的计算机的物理位置以外的其他位置;而且它往往具有更好的实际I / O。但是虚拟机以及更专门的仿真器或仿真器通常具有重要作用,例如让软件团队在硬件存在之前就开始工作,或者避免让它们在经过手工改造才能正常工作或运行的原型板上进行争夺。回归测试而无需占用物理设备的集合...
克里斯·斯特拉顿

3

他们都说了什么,但是,最简单的方法是运行一个Linux发行版,该发行版可以执行您想要的并且尽可能简化,然后剥离所有不需要的内容。

很快它将不再是Linux,而成为具有SD和HDMI支持的引导程序。从本质上讲,这与您的要求没有什么区别,除了
-它是从Linux发行版中提取的(但不再是Linux),并且
-您自己没有做。

除非完全自己做是非常重要的,否则这似乎是一种非常合乎逻辑的方法。



0

如果要对“ Raspberry Pi作为Arduino”进行编程,请查看接线Pi。在http://www.jating.in/efyarticle/EFYArticle.pdf上查看我的文章。

1)我通过使用单根电缆进行USB到串行转换并为开发板供电,使它看起来和Arduino一样工作。因此,与arduino一样,仅一根usb电缆就足够了。

2)我制作了一个小实用程序,该实用程序在运行时将通过串行线路(实际上是任何文本文件:-)加载接线Pi代码,进行编译并执行。

如果您希望每次启动时都可以通过修改.bashrc文件来运行它,那么每次启动时,它将等待新文件。我没有提供实用程序代码的任何链接,但是您可以在http://www.jating.in/efyarticle/中找到它

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.