我刚拿到了BeagleBoard-Xm,我想知道是否有关于如何在硬件上运行非常简单的裸机软件的详细分步教程?
我问的原因是我想深入了解硬件架构如何工作,从引导程序,链接器,中断,异常,MMU等等.我认为最好的方法是在beagleboard xm上执行一个简单的hello world程序而不用操作系统.没有任何进展,只需启动电路板并在屏幕上获得"hello world"输出.而已!
下一步将是运行一个小型操作系统,可以安排一些非常简单的任务.无需文件系统,只需了解操作系统的基础知识即可.
任何帮助赞赏!
最好的祝福
吉古先生
我正试图在我的Beagleboard-xm rev上运行一个'hello world'类型的程序.C,通过puts从程序集中调用C 函数.
到目前为止,我一直在使用它作为参考:http://wiki.osdev.org/ARM_Beagleboard
这是我到目前为止所拥有的,但没有输出.
你好ç
volatile unsigned int * const UART3DR = (unsigned int *)0x49020000;
void puts(const char *s) {
while(*s != '\0') {
*UART3DR = (unsigned int)(*s);
s++;
}
}
void hello() {
puts("Hello, Beagleboard!\n");
}
Run Code Online (Sandbox Code Playgroud)
boot.asm
.global start
start:
ldr sp, =stack_bottom
bl hello
b .
Run Code Online (Sandbox Code Playgroud)
linker.ld
ENTRY(start)
MEMORY
{
ram : ORIGIN = 0x80200000, LENGTH = 0x10000
}
SECTIONS
{
.hello : { hello.o(.text) } > ram
.text : { …Run Code Online (Sandbox Code Playgroud)