Baking Piチュートリアルはすでに見つけましたが、アセンブリ言語のみを使用しています。最初のレッスンに従いましたが、代わりにCを使用する方法をすでに疑問に思っています。つまり、彼らが高レベルの言語を発明したのには理由があるのです。Cコードをオブジェクト(.o
)ファイルにコンパイルして、コンパイルしようとしました
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
別のオブジェクトファイルにリンクし、それらを一緒にリンクして、取得しkernel.img
ます。その後、すでに存在するカーネルを自分のものに置き換えましたが、Cコードは実行されません。私が書いたCコードは、OK LEDをオンにしてから戻ります(それからになりますloop$: b loop$
)。しかし、OK LEDは数回ランダムに点滅し、その後消灯します。これが私のCコードです。
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Raspberry Piでのオペレーティングシステム開発にCを使用するにはどうすればよいですか?
私はそれがコードのエラーではないことを疑います(ただし、私は単なる愛好家です)。Cのセットアップは複雑かもしれませんが、これを行うのは初めてではありません。知る限り、現在支配的なすべてのOSは主にCで書かれているため、プロセスを説明する記事が必要です。私もステップのリストに非常に満足しているので、それらのステップをグーグルで検索して、おそらく少し広義の質問をすることができます。
注:上記のCコードに相当するARMアセンブリは問題なく機能します。LEDが点灯します(少し点滅した後)。Raspberry Piが正常であることを示す(希望)と思います。