如果可能的话,为嵌入式系统安装我们自己的操作系统。
树莓派有可能吗?如果不是,
->树莓派不可能达到我的五个目标。如果必须使用PI,我必须对项目进行哪些更改?
->市场上还有哪些其他板子可以让我完全完成我想要的工作?
#1 楼
背景知识您应该知道的最重要的事情是RaspberryPi是一种奇怪的野兽,其中
ARM CPU
不是主要的CPU-它只是VideoCore GPU
的协处理器。当RaspberryPi启动时,会将GPU blob从SD卡读取到L2缓存中并执行。然后,此代码启动所有重要的外围设备(RAM,时钟等)并启动ARM CPU
。然后可以在ARM CPU
上运行第二阶段引导程序或某些操作系统本身。GPU blob不仅是引导程序。实际上,它本身就是一个操作系统(Video Core OS)。系统的某些重要元素无法由ARM CPU直接访问,它必须与
GPU
(使用mailbox
消息传递系统)进行通信才能使用它们。有关于此的部分文档。现在,Broadcom员工不时扩展了Video Core OS
(VCOS
),以启用Linux
内核,RISC OS
甚至某些业余OS所需的功能。没有很好的文档,但是,您必须在RaspberryPi forum
,github
和可能的其他地方进行挖掘才能找到有关此信息。但是它在那里..某个地方。还有一些人在RaspberryPi上编写自己的裸机代码甚至操作系统来帮助您。当然还有很多开放源代码,例如RasbperryPi的Linux内核。VideoCore是专有的,没有官方文档和开发工具。因此,除非您要付出很多努力,否则无法使用自己的代码重写
VCOS
。但是,我们需要对Video Core进行反向工程,您可以在此处找到一些信息。另一个问题是Synopsys的
USB
堆栈是专有的,并且同样没有文档,而且似乎即使有了文档,也很难可靠地实现它。但是,代码仍然可用(Linux内核,u-boot,CSUD)。使用Video Core
的高级图形功能可能也很困难-图形库有一些开源代码,但仅用于ARM
端。 (不过,对于我来说,这还不是很清楚,如果他们仅使用可公开访问的信息),一些人(独立于Broadcom)正在重写Linux内核作为主线,还有一个RISC OS
端口,“ U-boot”和其他端口。因此,绝对可以编写您自己的OS。 您的目标
数字1
据我所知,SoC不可能以所描述的另一种方式启动。因此,第一阶段引导程序必须位于
FreeBSD
上。而且它必须是SD card
二进制文件,而不是GPU
二进制文件,这是另一个问题。而且RaspberryPi上没有板载闪存,这也是一个问题。数字2
主要问题是RaspberryPi上没有板载
ARM
。您可以添加一个,并且可以在您的引导加载程序中将其激活(它必须已经是第二阶段的引导加载程序)。但是,编写USB驱动程序可能会出现问题。数字3、4、5
这不是什么大问题。此处记录了大多数外围设备(至少是
flash
可以访问的外围设备)。由于您已完全配置SoC,因此现有的引导加载程序使此操作变得更加容易。您可以在这里和这里查看一些代码和文档。替代品
我不了解RaspberryPi的其他任何主板,因此很难推荐一些东西,但您可以看看一些成熟的项目,例如基于OMAP的Beagleboard / Beaglebone / Pandaboard,或者可以跟随一些新板的开发,例如基于Allwinner的Cubieboard或PCduino。这完全取决于您要完成什么。
#2 楼
为了更新Krzysztof的好答案,Broadcom最终公开发布了一些许可为3-Clause BSD的代码,以帮助制作开源GPU驱动程序。取代Raspberry Pi VPU固件blob的“ rpi-open-firmware”工作始于2016年:https://github.com/christinaa/rpi-open-firmware。在https://news.ycombinator.com/item?id=11703842上查看更多信息。RaspberryPi-Debian Wiki上简要介绍了许多替代板并与之链接,包括ODROID-C1,Cubieboard ,Banana Pi,Olimex的OLinuxIno Wifi和OlinuxIno Mini,EOMA68和Beaglebone black。
评论
就我个人而言,我认为替代方案并不理想,许多ODROID板都在引导加载程序上执行签名检查,并阻止您在其上运行自己的代码。 TI OMAP3系列在调用代码之前已存在安全模式,这也限制了您可以使用它进行的操作。 RPi上的VPU实际上非常不错,我认为这是它使它在其他主板上领先的原因,并且现在我们有了一个不错的工具链,一切看起来都不错。
–克里斯蒂娜·布鲁克斯(Kristina Brooks)
16年5月18日在10:19
#3 楼
实际上,使用Raspberry Pi的U-boot引导加载程序可以做很多事情。您基本上只是让GPU将U引导映像作为“ OS”加载到ARM协处理器SoC。我还没有做,但是我打算。我在寻找一种自己解决的方法时碰巧发现了您的问题,然后我找到了该文章,它看起来可能对寻求类似方法的其他人有用。还有另一篇文章包含有关构建U-boot映像的更详细的说明。
评论
这种答案一开始可能很有用,但几年后链接停止工作,并且没有任何暗示其内容的提示。考虑至少告诉您使用了哪个U-boot分支和哪个编译器。
–德米特里·格里戈里耶夫(Dmitry Grigoryev)
18/12/12在13:43
谢谢德米特里。我会很快回到这个问题上,并在有空的时候进行修复。
–艾伦·米姆斯(Alan Mimms)
18/12/17在7:01
评论
我想这个答案+100。做得好。
–orithena
13年4月21日在20:57
@maligree大声笑,不用担心-已经完成了! :)
– xxmbabanexx
13年4月23日在2:30
为Beablebone +1,因为它是100%开放源代码,您确实可以“重新旋转”硬件并制作自己的电路板
–portforwardpodcast
2015年4月21日在4:09