裸机循环点亮LED(运行在片内ram中)

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992476.html

.globl _start
_start:

/*硬件相关的设置-该设置是ARM11中特有的,告诉CPU外围设备的基地址*/
    ldr r0, =0x70000000
    orr r0, r0,  #0x13
/*设置协寄存器,在ARM11内核手册中有说明*/
/*r0 = 0x70000013 表示 长度为256M*/
    mcr p15, 0, r0, c15, c2, 4

/*关看门狗*/
/*WTCON(0X7E004000) = 0*/
    ldr r0, =0x7E004000
    mov r1, #0
    str r1, [r0]

/*设置GPKCON0让 GPK4,GPK5,GPK6,GPK7作为输出引脚*/
    ldr r0, =0x7F008800
    ldr r1, =0x11110000
    str r1, [r0]

/*设置GPKDAT让 GPK4 = 0, GPK5 = 1, GPK6 = 0, GPK7 = 1*/
/*即LED1亮,LED2暗,LED3亮,LED4暗*/
    ldr r0, =0x7F008808
    mov r1, #0x00A0
    str r1, [r0]

loop:
    str r1, [r0]
    add r1, r1, #1
    moveq r1, #0
    bl delay
    cmp r1, #256
    moveq r1,#0
    b loop

delay:
    mov r2, #0x100

delay_loop:
    sub r2, r2, #1
    cmp r2, #0
    bne delay_loop
    mov pc, lr

halt: 
    b halt

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992476.html

时间: 2024-11-06 03:29:19

裸机循环点亮LED(运行在片内ram中)的相关文章

ARM裸机之点亮LED

声明:本文由个人学习过程中整理而成,转载请注明出处 实验开发版:S5PV210 1.什么是GPIO? General Purpose Input Output (通用输入/输出)简称为GPIO,属于芯片引脚的一部分. 嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号.而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭.对这些设备/电路的控制,使用传统的串行口或并行口都不合适

2440 裸机学习 点亮LED

1.首先需要知道 led 是受哪一个gpio口控制 从上图可以看出,两个led灯是受GPF4 GPF5控制的,低电平有效. 2.怎么控制GPF4 GPF5 通过2440的芯片手册可以看出,需要设置GPF的引脚只需要设置,两个寄存器就可以了.GPFCON  GPFDAT. C语言部分: void delay(volatile int d)//延时函数 { while (d--); } int led_on(int which) { unsigned int *pGPFCON = (unsigned

嵌入式Linux裸机开发(一)——点亮Led

嵌入式Linux裸机开发(一)--点亮Led 开发板:友善之臂smart210 一.电路图查阅 1.底板电路图 查阅开发板底板电路图,查阅LED相关部分 LED电路工作原理: LED的正极接3.3V,负极接地时导通,LED发光. 开发板共有四颗LED,正极接3.3V,负极接开发板的LED1_LED4引脚,如果LED要点亮则需要输入低电平. 2.核心板电路图 查阅核心板电路图可知,LED1-LED4接在SoC的GPJ2_0-GPJ2_3,通过控制GPJ2_0-GPJ2_3的寄存器使对应GPIO引脚

TQ2440按键点亮LED灯的裸机程序

一,说到做ARM的裸机程序,很多人马上就会联想到一个名为ADS的开发工具,但是我们在linux下同样也可以做ARM的裸机程序,下面来说说其具体实施过程: 步骤一:编辑代码,这个没什么好说的. 步骤二:编译代码,编译代码分为三个方面的内容:1.链接脚本 2.用命令行确定链接时的文件顺序 3.用命令行编译.这三部分的内容可以全部写成一个Makefile文件,编译的时候执行make命令就可以了. 步骤三:把编译后的".bin"文件烧写进开发板,重新上电观察效果. 二,TQ2440按键点亮LE

Raspberry PI 系列 —— 裸机点亮LED灯

背景 最近刚买了Raspberry PI B+,配置运行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了解底层的启动流程,通过几天的研究,发现最底层部分的启动是由官方提供的bootcore.bin和start.elf文件来执行(应该是对硬件设备的初始化,如MMU等),之后由下一部分kernel.img的_start接管.为了真正验证此流程,于是想利用GPIO控制LED灯,几经折腾终于成功点亮LED,现记录于此. 外设地址编码 要想控制GPIO管脚就必须知道

一步一步点亮Led

1.了解物理特性 点亮LED的关键在于电压差 2.查阅原理图了解板载LED的硬件接法 方法:可以利用PDF文档的搜索功能(搜索LED即可,在底板搜索) 可知:有4颗正极接3.3V,负极分别接SoC上面的引脚(即引脚低电平亮),另外一个开机常亮. 3个SoC引脚是知道的,另外在核心板上查看pwmtout1可知引脚为GPD0_1,如下图 GPD0表示端口号,后面的1是引脚号 3.查阅数据手册 当我们想要编程操控GPIO来操作LED时,需要通读一下数据手册关于GPIO的部分 我们要操作的硬件为LED,

TQ2440按键点亮LED驱动程序

一,硬件分析: 1.打开TQ2440的底板原理图找到按键测试的模块,如下图所示: 从图我们知道,控制按键k1 k2 k3 k4 的管脚为EINT1 EINT4 EINT2 EINT0 ,当按键按下时,管脚输出低电平,当按键没有被按下时,管脚输出高电平. 2.打开TQ2440核心板原理图找到EINT1  EINT4 EINT2 EINT0所对应的cpu控制引脚,如下图所示: 从图我们可以知道,EINT1  EINT4 EINT2 EINT0 对应的cpu控制引脚为GPF1 GPF4 GPF2 GP

arm9 点亮led程序优化导致全亮问题

如需转载请注明出处 本实验是arm9 裸板程序,主要功能是循环点亮4个led. 参考伟山东的<嵌入式linux应用开发>点亮led节. 电路图如下: 代码如下: head.s .text .global _start _start: ldr r0, =0x56000010 @ WATCHDOG寄存器地址 mov r1, #0x0 str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启 ldr sp, =1024*4 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内

liunx驱动----点亮LED

自动挂接根文件系统(直接从NFS启动) 修改uboot命令行 把 bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 改为: set bootarges noinitrd root=/dev/nfs nfsroot=192.168.0.104:/home/book/work/nfs_root/first_fs ip=192.168.0.10:192.168.0.104:192.168.0.1:255