我已经找到了Baking Pi教程,但是它们仅使用汇编语言。我遵循了第一课,但是我已经想知道如何使用C了。我的意思是,他们发明高级语言是有原因的。我尝试将C代码编译为一个object(.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可能很复杂,但我不是第一个这样做的人。AFAIK,所有当前占主导地位的OS主要是用C编写的,因此必须有一篇文章解释该过程。我也会对步骤列表感到非常满意,因此我可以在Google上搜索这些步骤,甚至可以问一个不太广泛的问题。
注意:与上述C代码等效的ARM程序集可以正常工作。它会点亮LED(稍许闪烁)。我认为(希望)表明我的Raspberry Pi很好。