汇编 LED驱动 编译代码

book@100ask:~/linux/MX6ULL/board_drivers/1_leds$ arm-eabi-gcc -g -c led.s -o led.o

链接:就是把所有的.o文件链接在一起,并指定起始地址。链接起始地址就是代码运行的起始地址。对于6ULL来说,链接起始地址应该指向RAM地址。Cortext-A 系列内部的ROM均无法使用。RAM分为内部RAM与外部RAM/DDR。

6ULL内部地址范围0x900000~0x91FFFF,也可以放到外部DDR中。

对于LMX6U-ALPHA开发板,512MB字节DDR版本核心板,DDR范围是0x80000000~0x9ffffffff。 内部RAM只有128K,容量太小,一般都放在外部DDR。

本系列地址,裸机代码的链接起始地址为0x87800000.

要使用DDR,必须要初始化DDR。

bin文件,不可直接运行,需要添加一个头部,这个头部信息包含了DDR的初始化参数。I.MX系列内部boot rom会从SD卡/emmc等外部存储中读取头部信息,然后初始化DDR,并且将bin文件copy到指定地方。

bin的运行地址,一定要与链接起始地址一致,位置无关代码除外。

生成.elf

book@100ask:~/linux/MX6ULL/board_drivers/1_leds$ arm-eabi-gcc -g -c led.s -o led.o
book@100ask:~/linux/MX6ULL/board_drivers/1_leds$ ls
led

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/108352652