일부 배경
당신이 알아야 할 가장 중요한 것은 RaspberryPi가 ARM CPU
메인 CPU가 아닌 이상한 짐승 이라는 것 VideoCore GPU
입니다. RaspberryPi가 시작되면 GPU Blob을 SD 카드에서 L2 캐시로 읽고 실행합니다. 그런 다음이 코드는 모든 중요한 주변 장치 (RAM, 시계 등)를 표시하고를 시작합니다 ARM CPU
. 그런 다음 2 단계 부트 로더 또는 일부 운영 체제 자체를 실행할 수 있습니다 ARM CPU
.
GPU Blob은 부트 로더가 아닙니다. 실제로는 운영 체제 (Video Core OS) 자체입니다. 시스템의 일부 중요한 요소는 ARM CPU에서 직접 액세스 할 수 없으며이를 GPU
사용하려면 ( mailbox
메시징 시스템을 사용하여) 통신 해야합니다. 이에 대한 부분적인 문서 가 있습니다. 이제 Broadcom 직원은 커널 ( 또는 때로는 일부 취미 OS)에 필요한 기능을 사용할 수 있도록 Video Core OS
( VCOS
)를 수시로 확장 합니다. 그러나 이것에 대한 좋은 문서는 없습니다 .Linux
RISC OS
RaspberryPi forum
github
그리고 아마도 이것에 관한 정보를 찾을 수있는 다른 장소들. 그러나 거기에 .. 어딘가에. 그리고 RaspberryPi에서 자체 베어 메탈 코드 또는 OS를 작성하여 도움을주는 사람들도 있습니다. 물론 많은 오픈 소스 코드-RasbperryPi의 Linux 커널 등이 있습니다.
VideoCore는 독점적이며 공식 문서 및 개발 도구가 없습니다. 따라서 많은 노력을 기울이지 않으면 VCOS
자신의 코드로 다시 작성할 수 없습니다 . 그러나 비디오 코어를 리버스 엔지니어링하려는 노력이 있지만 여기에서 몇 가지 정보를 찾을 수 있습니다 .
또 다른 문제는 USB
Synopsys 의 스택이 독점적이며 다시 설명 할 문서가 없으며 문서를 사용해도 안정적으로 구현하기가 어렵다는 것입니다. 그러나 코드를 다시 사용할 수 있습니다 (Linux 커널, u-boot, CSUD ). 의 고급 그래픽 기능을 사용하는 Video Core
것도 어려울 수 있습니다 . 그래픽 라이브러리를위한 오픈 소스 코드 가 있지만 이는 ARM
편입니다.
즉 RISC OS
, 정보 에서 포트 를 사용 가능하게 만들 수 있었지만 (공개적으로 액세스 가능한 정보 만 사용하는 경우 완전히 명확하지는 않지만) 일부 사람들은 Mainline을 위해 Linux 커널을 (Broadcom과 독립적으로) 재 작성하고 있습니다. A는 FreeBSD
포트, 'U-boot` 등. 따라서 자신의 OS를 작성할 수 있습니다. 가능한 한 쉽지는 않습니다.
당신의 목표
1 번
내가 아는 한, SoC가 설명 된 것과 다른 방식으로 시작할 수있는 방법은 없습니다. 따라서 1 단계 부트 로더가 켜져 있어야합니다 SD card
. 또 다른 문제인 이진이 GPU
아니라 이진 이어야합니다 ARM
. 그리고 RaspberryPi에는 온보드 플래시가 없으며 이는 또한 문제입니다.
2 번
주요 문제는 flash
RaspberryPi에 온보드가 없다는 것입니다 . 하나를 추가하면 부트 로더에서 활성화 될 수 있습니다 (이미 2 단계 부트 로더 여야 함). 그러나 USB 드라이버 작성은 문제가 될 수 있습니다.
3, 4, 5 번
이것은 큰 문제가되지 않습니다. 대부분의 주변 장치 (적어도에 액세스 할 수있는 주변 장치 ARM
)가 여기 에 문서화되어 있습니다 . 기존 부트 로더를 사용하면 SoC를 완전히 구성 할 수 있으므로이 작업이 훨씬 쉬워집니다. 당신은 볼 수 여기 와 여기에 일부 코드 및 문서에 대한.
대안
나는 RaspberryPi만큼 좋은 다른 보드를 모르기 때문에 무언가를 추천하기는 어렵지만 OMAP 기반 Beagleboard / Beaglebone / Pandaboard 와 같은 성숙한 프로젝트를 보거나 Allwinner 기반과 같은 새로운 보드의 개발을 따를 수 있습니다 Cubieboard 또는 PCduino . 그것은 모두 정확히 당신이 달성하고자하는 것에 달려 있습니다.