
安装环境visual studio codeARM插件ChineseSimplifiedArm AssemblyC语言插件Back ForthC / CC / C Extension PackC / C ThemesCMakeCMake Toolshighlight - wordsMakefile ToolsUbuntu下的编译器确认版本 arm-linux-gnueabihf-gcc -vfilezilla上传文件上传步骤文件 --站点管理器 --新站点右侧win本地站点左侧Ubuntu远程站点选择对应文件夹右键点击上传文件夹上传启动代码异常向量表配置.global汇编器指令全局定义标签_start作为汇编程序的默认起点配置标签配置标签时可以前置加_ 以便和普通标签或系统标签做区分异常向量表ARM架构 规定异常向量表位置固定配置对应位置的异常向量复位函数设置时钟LED配置Led_init功能复用配置1. 加载IOMUX控制寄存器地址Address :20E_0000h base 68h offset 0x20E 00682. 将引脚功能从默认模式切换为GPIO模式GPIO_IO03 gpio1模式代码为 0101 0x053. str指令将配置写回寄存器将 r1 存放的内容存放在 r0 存放的地址内即将0x05 模式存放在控制寄存器的地址实现引脚初始化电气属性配置设置引脚的驱动能力、上拉电阻等电气参数1. 加载PAD控制寄存器地址Address:20E_0000h base 2F4h offset 0x20E 02F42. 配置电气参数驱动强度、压摆率、上下拉、开漏/推挽配置为0x10B0 0001 0000 1011 0000对应部分参数为12位 1使能上拉7-6位 10中速100MHZ5-3位110中等驱动强度 ......3. str指令将配置写回寄存器将 r1 存放的内容存放在 r0 存放的地址内即将0x10B0 模式存放在PAD寄存器的地址实现电气配置工作模式配置将引脚设置为输出模式1. 加载GPIO1的GDIR方向控制寄存器地址Address:Base address 4h offset2. 设置输出模式将GPIO_IO03设为输出即通过orr指令将第三位置13. str指令将配置写回寄存器将 r1 存放的内容存放在 r0 存放的地址内即将结果返回寄存器地址实现配置输出模式Led_on编译与测试arm-linux-gnueabihf-gcc 只汇编不链接arm-linux-gnueabihf-gcc -c led.S -o led.o -g-o只编译不链接-g保留编译信息arm-linux-gnueabihf-ld 链接代码到特定地址得到可执行可连接程序 linux executable linkable filearm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elfTtext指定代码段加载地址-o输出ELF格式可执行文件arm-linux-gnueabihf-objcopy 格式转换arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin-O binary输出二进制格式-S去除符号表-g去除调试信息arm-linux-gnueabihf-objdump 反汇编可省略arm-linux-gnueabihf-objdump -D led.elf led.dis-D反汇编所有段imxdownload 烧写程序到SD卡./imxdownload led.bin /dev/sdb插入SD卡后选择连接到虚拟机Ubuntu使用 chmod 777 imxdownload 命令赋予 imxdownload 权限通过 ls /imxdownload /dev/sdb 命令查看dev刚插入SD卡就执行命令可能会出错现象为少烧写速率以M为单位此时需要重启虚拟机修改板子工作模式为SD模式插入SD卡时不要上电BOOT工作模式