https://blog.csdn.net/qq_42800075/article/details/105023699
https://blog.csdn.net/u013490896/article/details/79323783
https://biscuitos.github.io/blog/Linux-0.11-Usermanual/
https://github.com/Wangzhike/HIT-Linux-0.11/blob/master/1-boot/OS-booting.md
https://my.oschina.net/lngligelang/blog/221411
https://my.oschina.net/lngligelang/blog/221771
https://my.oschina.net/lngligelang/blog/223200
BiscuitOS/output/linux-0.11/linux/linux/arch/x86/boot/Makefile
bootsect: bootsect.o
$(Q)$(LD) $(LDFLAGS) $(local_LDFLAGS) -o $@ $<
http://news.eeworld.com.cn/mcu/article_2016040825595.html
我们写一个汇编程序,控制GPIO,从而控制外接的LED,代码如下;
.text
.global _start
_start:
LDR R0,=0x56000010 @GPBCON寄存器
MOV R1,# 0x00000400
str R1,[R0]
LDR R0,=0x56000014
MOV R1,#0x00000000
STR R1,[R0]
MAIN_LOOP:
B MAIN_LOOP
代码很简单,就是一个对io口进行设置然后写数据。我们看它是如何编译的,注意我们这里使用的不是arm-linux-gcc而是arm-elf-gcc,二者之间没有什么比较大的区别,arm-linux-gcc可能包含更多的库文件,在命令行的编译上面是没有区别。我们来看是如何编译的:
arm-elf-gcc -g -c -o led_On.o led_On.s 首先纯编译不连接
arm-elf-ld -Ttext 0x00000000 -g led_On.o -o led_on_elf
用Ttext指明我们程序存储的地方,这里生成的是elf文件,还不是我们真正的bin,但是可以借助一些工具可以进行调试。
原文:https://www.cnblogs.com/sinferwu/p/12688370.html