【ARM 裸机】汇编 led 驱动之烧写 bin 文件

1、烧写概念

bin 文件烧写到哪里呢?使用 STM32 的时候烧写到内部 FLASH,6ULL 没有内部 FLASH,是不是就不能烧写呢?不,6ULL 支持 SD卡、EMMC、NAND FLASH、NOR FLASH 等方式启动,在裸机学习的工程中,选择 SD卡启动,所以将 bin 文件烧写到 SD卡中。

烧写并不是将 bin 文件直接拷贝到 SD卡中,而是将 bin 文件烧写到 SD卡的绝对地址上,而且对于 I.MX,不能直接烧写 bin 文件,需要添加一个头部,会使用到正点原子的 imxdownload 软件 ,将 imxdownload 拷贝到工程根目录下;

2、向 SD 卡烧写 bin 文件

使用 imxdownload 向 SD 卡烧写 led.bin 文件,命令格式如下;

c 复制代码
./imxdownload <.bin file> <SD Card>

2.1、查看 SD卡

在 Ubuntu 下向 SD卡烧写裸机 bin 文件,需要将 SD卡连接 Ubuntu,参考链接:【Linux】Ubuntu 磁盘管理 。Ubuntu 下所有的设备文件都在目录"/dev"里面,所以插上 SD 卡以后也会出现在"/dev"里面,其中存储设备都是以"/dev/sd"开头的,我们要先看一下不插 SD 卡的时候电脑都有哪些存储设备,以防插入 SD 卡以后分不清谁是谁;

对比之下可以看出,sdb 是插入的 SD卡。

2.2、给予 imxdownload 可执行权限

我们直接将软件 imxdownload 从 Windows 下复制到 Ubuntu 中以后,imxdownload 默认是没有可执行权限的,我们需要给予 imxdownload 可执行权限;

c 复制代码
chmod u+x imxdownload

imxdownload 已经具有了可执行权限。

2.3、 烧写

c 复制代码
./imxdownload <.bin file> <SD Card>


在工程目录下多了一个 losd.imx 的文件,之前一直说头部,其实是给 led.bin 添加头部之后个生成一个新的 losd.imx,losd.imx 被烧到 SD卡里面。

2.4、验证

将 SD卡插入到开发板中,启动方式选择 SD卡,即把拨码开关的 1 和 7 拨上去;

I.MX6ULL-MINI_led

上电之后,可以看到,led1(红色的)过一会才亮起;

2.5、优化编写 Makefile

c 复制代码
led.bin: leds.s
	arm-linux-gnueabihf-gcc -g -c leds.s -o led.o
	arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf
	arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
	arm-linux-gnueabihf-objdump -D led.elf > led.dis


clean:
	rm -f *.o led.bin led.elf led.dis


Makefile 需要注意首行空出来的地方使用 TAB 键 !!!

修改一下 leds.s 为 led.s;

相关推荐
王哲晓34 分钟前
Linux通过yum安装Docker
java·linux·docker
gopher95111 小时前
linux驱动开发-中断子系统
linux·运维·驱动开发
码哝小鱼1 小时前
firewalld封禁IP或IP段
linux·网络
鼠鼠龙年发大财1 小时前
【x**3专享】安装SSH、XFTP、XShell、ARM Linux
linux·arm开发·ssh
nfgo1 小时前
快速体验Linux发行版:DistroSea详解与操作指南
linux·ubuntu·centos
eric_dma1 小时前
Utgard风格的平铺和Arm FrameBuffer Compression(AFBC)
arm开发
m0_714590262 小时前
汇编(实现C语言程序的调用)
c语言·开发语言·汇编
Rookie_explorers2 小时前
Linux下go环境安装、环境配置并执行第一个go程序
linux·运维·golang
weixin_424215842 小时前
shell运算实战案例-KFC点餐系统
linux·centos
小黑爱编程3 小时前
【LInux】HTTPS是如何实现安全传输的
linux·安全·https