• I.MX6ULL的LED汇编程序


    源码源自原子哥

    1.如下为.s汇编源码

     1 .global _start @全局标号
     2 
     3 _start:
     4     /* 使能所有外设时钟*/
     5     ldr r0, =0x020c4068 @CCGR0
     6     ldr r1, =0xffffffff @要向CCGR0写入的数据
     7     str r1, [r0]        @将0xffffffff写入到CCGR0中
     8 
     9     ldr r0, =0x020c406c @CCGR1
    10     str r1, [r0]   
    11 
    12     ldr r0, =0x020c4070 @CCGR2
    13     str r1, [r0] 
    14 
    15     ldr r0, =0x020c4074 @CCGR3
    16     str r1, [r0]  
    17 
    18     ldr r0, =0x020c4078 @CCGR4
    19     str r1, [r0] 
    20 
    21     ldr r0, =0x020c407c @CCGR5
    22     str r1, [r0] 
    23 
    24     ldr r0, =0x020c4080 @CCGR6
    25     str r1, [r0] 
    26 /*配置GPIO1_IO03 PIN的复用为GPIO,
    27  *设置IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03=5
    28  *IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03地址为0X020E0068
    29 */
    30     ldr r0, =0x020e0068 @IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
    31     ldr r1, =0x00000005 @要写入的数据
    32     str r1, [r0]        @将0x5写入到IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03中
    33 
    34 
    35 /*配置GPIO1_IO03的电气属性,也就是寄存器:
    36  *IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03
    37  *这个寄存器地址为0X020E02F4
    38  *bit0      0   低速率
    39  *bit5:3    110 R0/6驱动能力
    40  *bit7:6    10  100MHz速度
    41  *bit11     0   关闭开漏输出
    42  *bit12     1   使能pull/keeper
    43  *bit13     0   keeper
    44  *bit15:14  00  100K下拉
    45  *bit16     0   关闭hys
    46 */
    47     ldr r0, =0x020e02f4
    48     ldr r1, =0x10b0
    49     str r1, [r0]
    50 /*设置GPIO
    51  *设置GPIO1_GDIR寄存器,设置GPIO1_GPIO03为输出
    52  *GPIO1_GDIR寄存器的地址为0x0209c004,设置GPIO1_GDIR寄存器bit3为1
    53  *也就是设置GPIO1_IO03为输出
    54 */
    55     ldr r0, =0x0209c004
    56     ldr r1, =0x8
    57     str r1, [r0]
    58 /*打开LED,也就是设置GPIO_IO03为0
    59  *GPIO1_DR寄存器地址为0x0209c000
    60 */
    61     ldr r0, =0x0209c000
    62     ldr r1, =0
    63     str r1, [r0]
    64 
    65 loop:
    66     b loop

    2.生成.o编译文件

    终端使用  arm-linux-gnueabihf-gcc -g -c leds.s -o led.o  命令生成.o文件。

    3.生成.elf链接文件

    终端使用  arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf  生成.elf文件。

    4.生成.bin文件

    终端使用  arm-linux-gnueabihf-objcopy -O binary -g -S led.elf led.bin  生成.bin文件。

    根据2,3,4命令,可以编写Makefile如下:

    led.bin:leds.s
        arm-linux-gnueabihf-gcc -g -c leds.s -o led.o
        arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf
        arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
    clean:
        rm -rf *.o led.bin led.elf
  • 相关阅读:
    Central Contract无法传到ECC的排查工具
    直接采购在Core SRM与SRM PPS间的区别
    整理一下思路
    PR无法修改的几个原因
    MARCTRAME与MARCHTRAME
    Revision Level在PS中的决定
    Storage Location在物料分配时的选择逻辑
    如何正确删除WBS下的Planned Independent Requirement
    Open XML SDK 2.0
    Silverlight使用问题汇总一
  • 原文地址:https://www.cnblogs.com/kunshanpipixia/p/14213895.html
Copyright © 2020-2023  润新知