本文是MX6U-MINI的LED汇编开发流程总结
1. 新建一个名为“1_leds”的文件夹,然后在“1_leds”这个目录下新建一个名为“led.s”的汇编文件和一个名为“.vscode”的目录。
2.中.vscode 文件夹里面存放 VSCode 的工程文件,led.s 就是我们新建的汇编文件,我们稍后会在 led.s 这个文件中编写汇编程序。
3.使用 VSCode 打开 1_leds 这个文件夹,编写 led.s。
4. 使用arm-linux-gnueabihf-gcc 编译文件,将 led.s 编译为对应的.o 文件。( led.o 文件并不是我们可以下载到开发板中运行的文件,我们需要将这.o 文件链接起来组合成可执行
文件)
5.arm-linux-gnueabihf-ld 用来将众多的.o 文件链接到一个指定的链接位置。(比如arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf,这是指定文件链接到 0X87800000,-o”选项指定链接生成的 elf 文件名)上述命令执行完以后就会在工程目录下多一个 led.elf 文件
6. arm-linux-gnueabihf-objcopy 格式转换:将led.Elf文件转化为led.bin 文件(led.elf 文件也不是我们最终烧写到 SD 卡中的可执行文件,我们要烧写的.bin 文件)
以上就是生成可执行文件的过程。
7.创建 Makefile 文件,创建好 Makefile 以后我们就只需要执行一次“make”命令即可完成编译
8.代码烧写步骤:
8.1要将 imxdownload 拷贝到linux系统的工程根目录下,也就是和 led.bin 处于同一个文件夹下
8.2给予 imxdownload 可执行权限,使用chmod指令,如chmod 777 imxdownload。(当给予 imxdownload 可执行权限以后其名字变成了绿色的,如果没有可执行权限的话其名字颜色是白色的)
8.3插入SD卡,使用 imxdownload 向 SD 卡烧写 led.bin 文件,实际上这个过程会产生一个新的led.imx文件,最终烧录进去。代码./imxdownload <.bin file> 。如./imxdownload led.bin /dev/sdd。于是就烧写完成,烧写完成以后会在当前工程目录下生成一个 load.imx 的文件。
9.SD 卡插到开发板的 SD 卡槽中,然后设置拨码开关为 SD 卡启动。即可完成!!
题外话:arm-linux-gnueabihf-objdump 反汇编
大多数情况下我们都是用 C 语言写试验例程的,有时候需要查看其汇编代码来调试代码,
因此就需要进行反汇编,一般可以将 elf 文件反汇编。