当前位置:   article > 正文

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

【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 文件,命令格式如下;

./imxdownload <.bin file> <SD Card>
  • 1

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 可执行权限;

chmod u+x imxdownload
  • 1

在这里插入图片描述
imxdownload 已经具有了可执行权限。

2.3、 烧写

./imxdownload <.bin file> <SD Card>
  • 1

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

2.4、验证

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

I.MX6ULL-MINI_led

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

2.5、优化编写 Makefile

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
Makefile 需要注意首行空出来的地方使用 TAB 键 !!!
修改一下 leds.s 为 led.s;
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/558346
推荐阅读
相关标签
  

闽ICP备14008679号