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

相关推荐
susplus19 小时前
【IMX6ULL Linux系统移植】SD卡分区 | uboot详解
linux·arm·u-boot
剑指offer.5 天前
ARM裸机开发-SPI
arm开发·嵌入式硬件·嵌入式·arm
susplus7 天前
【ARM 裸机开发 (IMX6ULL-mini)】I2C协议详解
嵌入式·arm·i2c
今年下半年9 天前
【运维】windows虚拟机安装arm(aarch64)服务器
运维·windows·arm·虚拟机·aarch64
额额额对了9 天前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
一直C10 天前
【ARM嵌入式开发】LCD液晶屏显示原理、色彩模式与显存地址映射详解
lcd·嵌入式·arm·寄存器·cortex-a7
susplus10 天前
【ARM 裸机开发 (IMX6ULL-mini)】PWM 背光调节与 GT9147 多点触摸驱动
lcd·arm·多点触控·pwm背光调节
凉、介11 天前
深入理解 ARM SCP Firmware 的 Event 与 Notification 机制
学习·scp·嵌入式·arm
susplus11 天前
【ARM 裸机开发 (IMX6ULL-mini)】SPI 协议与ADXL345 三轴加速度传感器
arm·spi·adxl345加速度传感器
susplus11 天前
【ARM 裸机开发 (IMX6ULL-mini)】RGB-LCD 驱动与时序详解
arm·rgb_lcd