zoukankan      html  css  js  c++  java
  • ARM裸机开发(一)LED控制

            以下裸机程序基于GT2440,编译器为arm-linux-gcc-4.4.3。

          程序的功能为:开机上电首先跳转到复位异常处理,在复位异常处理里关闭看门狗,然后执行LED控制程序,程序运行结果为板上4个LED全亮。

    led.S文件:

     1 @寄存器物理地址宏定义
     2 #define WTCON  0x53000000 
     3 #define GPBCON 0x56000010 
     4 #define GPBDAT 0x56000014
     5 #define GPBUP  0x56000018
     6 #define nGPB_OUTPUT ((1<<10)|(1<<12)|(1<<14)|(1<<16))
     7 
     8 .section .text
     9 .global _start
    10 _start:
    11     b    reset          @跳到复位异常处理程序
    12 
    13 reset:
    14     bl disable_watchdog @跳到关闭看门狗子程序
    15     bl control_led      @跳到控制LED子程序
    16 loop:
    17     b loop              @死循环
    18 
    19 disable_watchdog:
    20     ldr r0,=WTCON      @加载看门狗寄存器地址
    21     bic r1,r0,#0x20
    22     str r1,[r0]        @写入看门狗寄存器
    23     mov pc,lr          @返回
    24 
    25 control_led:
    26     ldr r0,=GPBCON     @加载IO寄存器地址
    27     orr r1,r0,#nGPB_OUTPUT
    28     str r1,[r0]
    29     ldr r0,=0x0        @输出低电平(LED亮)
    30     ldr r1,=GPBDAT
    31     str r0,[r1]
    32     mov pc,lr          @返回

    makefile文件:

    1 led.bin:
    2     arm-linux-gcc -g -c -o led.o led.S
    3     arm-linux-ld -Ttext 0x00000000 -g led.o -o led_elf
    4     arm-linux-objcopy -O binary -S led_elf led.bin
    5     rm -f led_elf led.o
    6 
    7 clean:
    8     rm -f led.bin

    在终端下执行make编译生成led.bin二进制文件,通过BIOS烧写到nand flash,从nand flash启动。

  • 相关阅读:
    UGUI 学习
    跳一跳
    推箱子_1
    坦克大战
    建筑保温(复习) 灭火救援设施(一)
    建筑平面布置与防火防烟分区(一)
    第五篇消防安全评估
    第三篇第三章自动喷水灭火系统(一)
    案例35:室内消火栓系统检查与维护保养案例分析(二)
    YAML语法
  • 原文地址:https://www.cnblogs.com/lknlfy/p/2656670.html
Copyright © 2011-2022 走看看