软中断svc+中断号
Svc<c> # <imm24>
Svc #7
硬中断
IMX6ULL:
GPIO分为5组:GPIO1、GPIO2、GPIO3、GPIO4、GPIO5
3个模块
1.引脚复用功能+引脚电气属性(IOMUXC 32)
(引脚复用功能:任何引脚可以配置成不同引脚)
IOMUXC_SW_MUX_CTL_PAD:引脚复用功能 _GPIO_IO03
IOMUXC_SW_PAD_CTL_PAD:电气属性 _GPIO_IO03
2.GPIO模块(GPIO 28)
GPIO1_GDIR:设置GPIO1组某个引脚方向(输入0/输出1)
GPIO1_DR:向GPIO组某个引脚写低电平0/高电平1
GPIOx_PSR(只读):读取GPIOx组某个引脚状态
DPIOx_ICR1:设置GPIOx组某个引脚中断触发方式(低电平、高电平、上升沿、下降沿)
GPIOx_IMR:设置GPIOx族某个引脚中断屏蔽/允许
GPIOx_ISR:查询GPIOx族某个引脚是否产生中断
GPIOx_SDGE_SEL:设置中断触发方式为双边沿触发
3.配制时钟(CCM 18)
CCM_CCGR0-CCM_CCGR6:0xFFFFFFFF 打开所有外设时钟门

编译流程
- arm-linux-gnueabihf-gcc -g -c led.s -o led.o
- arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -oled.elf
- arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
- arm-linux-gnueabihf-objdump -D led.elf > led.dis
GUN工具链常用工具说明
Gcc 编译器,C 源码编译生成目标文件.o
Id 链接器,合并多个.o,地址重定位,生成elf可执行文件
Object 目标文件格式转换器,嵌入式常用elf转bin
Objdump 目标文件分析器/反汇编器,查看程序段与符号信息
volatile关键字
变量前加volatile关键字:表示编译器对改变量的任何操作不会被优化
指针前加volatile关键字:表示通过该指针访问的内存空间中的内容不会被优化