arm day3 汇编LED / C语言LED

软中断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关键字:表示通过该指针访问的内存空间中的内容不会被优化

相关推荐
2035去旅行4 天前
U-Boot DM(Driver Model)驱动框架
嵌入式·arm·soc
凉、介4 天前
深入理解 ARMv7-M | 异常/中断处理
笔记·学习·嵌入式·arm
凉、介4 天前
深入理解 ARMv7-M|处理器模式与寄存器
笔记·学习·嵌入式·arm
2035去旅行6 天前
U-Boot简介
嵌入式·arm·soc
zbyyd9 天前
Linux驱动:UART串口通信、GT9147触摸屏与IIO-ADC驱动开发
linux·驱动开发·arm
zbyyd9 天前
Linux驱动:SPI子系统与ADXL345三轴加速度传感器驱动开发
linux·驱动开发·arm
2035去旅行10 天前
SOC 里的 CPU 处理器 和 L1/L2 Cache
嵌入式·arm·soc
一直C10 天前
嵌入式 Linux 驱动开发学习笔记:设备树、pinctrl 与 GPIO 驱动开发
驱动开发·嵌入式·arm·dt
2035去旅行10 天前
两核 CPU:CPU1 和 CPU2 是如何协同工作的?
嵌入式·arm·soc
奔跑的架构师12 天前
[A-51]ARMv9/v8-SCMI系统架构
linux·arm开发·架构·系统架构·arm