arm基础IMX6ULL----点亮led

一、现在原理图上找到对应的硬件连接关系(找led连接的引脚)

--该板子由一个底板和一个最小系统板组成

--先在底板找led1找到其对应的网络标号是led0

--再根据led0这个网络标号找到在插接件的B47这(其实此时已经找到在gpio3那了)

--再去核心板上查找得到GPIO1_IO3

二、由于引脚数量有限,所以多个控制器共用一个引脚(点灯使用gpio来控制)

--使用一个选通门(用MUXIO_SW来控制这个选通门)选择引脚功能

--使用PAD_SW控制电气特性

--配置引脚方向

--输出高低电平

三、根据手册配置功能

1、gpio内部图

--此次只用配置两个寄存器dir/dr 方向和数据

1、GPIO1_DR 第三位置0(低电平)或置1 (高电平)

2、GPIO1_DIR 第三位置1,引脚方向为输出

2、在MUX中配置MUX_MODE

--将其配置成GPIO_IO3 mode值为0101

3、在IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03中低四位配置成0x10b0,GPIO1_IO03

引脚使用默认的电气属性

四、汇编

cpp 复制代码
.global _start

_start:
    ldr pc, =_reset_handler
    ldr pc, =_software_handler
    ldr pc, =_undef_handler
    ldr pc, =_prefetch_abort_handler
    ldr pc, =_data_abort_handler
    nop
    ldr pc, =_irq_handler
    ldr pc, =_fiq_handler

_software_handler:
    b _software_handler

_undef_handler:
    b _undef_handler

_prefetch_abort_handler:
    b _prefetch_abort_handler

_data_abort_handler:
    b _data_abort_handler

_irq_handler:
    b _irq_handler

_fiq_handler:
    b _fiq_handler

_reset_handler:
    /*DDR    0x80000000 ~ 0xA0000000*/
    cpsid i             /*disable irq*/
    ldr sp, =0x81000000 /*init system mode  stack  16M   */
    cps #0x12           /*change to irq mode */
    /* 
    mrs r0, cpsr
    bic r0, r0, #0x1f
    orr r0, r0, #0x12
    msr cpsr_c, r0
    */
    ldr sp, =0x82000000 /*init irq mode stack  16M */

    cps #0x1f           /* change to system mode */
    /* 
    mrs r0, cpsr
    orr r0, r0, #0x1f
    msr cpsr_c, r0
    */

    cpsie i     /* enable  irq */

    bl led_init
led:
    bl led_on
    bl led_delay
    bl led_off
    bl led_delay
    b led

code_end:
    b code_end

led_init:
    ldr r0, =0x20e0068
    ldr r1, [r0]
    bic r1, r1, #0x1f
    orr r1, r1, #0x05
    str r1, [r0]

    ldr r0, =0x20e02f4
    ldr r1, [r0]        /*unuse*/
    ldr r1, =0x10b0
    str r1, [r0]

    ldr r0, =0x209c004
    ldr r1, [r0]
    orr r1, r1, #(1 << 3)
    str r1, [r0]

    ldr r0, =0x209c000
    ldr r1, [r0]
    orr r1, r1, #(1 << 3)
    str r1, [r0]
    bx lr

led_on:
    ldr r0, =0x209c000
    ldr r1, [r0]
    bic r1, r1, #(1 << 3)
    str r1, [r0]
    bx lr

led_off:
    ldr r0, =0x209c000
    ldr r1, [r0]
    orr r1, r1, #(1 << 3)
    str r1, [r0]
    bx lr

led_delay:
    ldr r0, =0x80000

loop_delay:
    sub r0, r0, #1
    cmp r0, #0
    bge loop_delay
    bx lr

五、编译并下载

相关推荐
奋斗tree5 小时前
EulerOS 2.0 等保三级版(ARM 架构)是什么?
arm开发·架构
senijusene6 小时前
i.MX6ULL 裸机 ECSPI 驱动开发详解:
arm开发·驱动开发·嵌入式硬件
Arenaschi1 天前
国产麒麟X86结构和arm架构的区别
arm开发
EnglishJun1 天前
ARM嵌入式学习(二十一)--- Platform总线结合dts、gpio子系统、中断和错误处理
arm开发·学习
AI服务老曹1 天前
异构计算时代的安防底座:基于 x86/ARM 双架构与多芯片适配的 AI 视频云平台架构解析
arm开发·人工智能·架构
落樱弥城1 天前
Arm Mali GPU架构
arm开发·架构
The Mr.Nobody1 天前
基于STM32F407的 TFTP Server
arm开发·stm32·嵌入式硬件
飞凌嵌入式1 天前
如何用JishuShell在RK3588核心板上快速部署OpenClaw?
arm开发·人工智能·嵌入式硬件·openclaw
ai产品老杨1 天前
异构计算时代的安防底座:基于 x86/ARM 双架构与多芯片适配的 AI 视频云平台架构解析
arm开发·人工智能·架构
ai产品老杨2 天前
异构计算时代的视频底座:基于 ZLMediaKit 与 Spring Boot 的 X86/ARM 跨平台架构解析
arm开发·spring boot·音视频