第一个裸机程序---点亮led小灯
来源:互联网 发布:手机淘宝开不了店2017 编辑:程序博客网 时间:2024/05/16 01:26
Linux /home/program/test2 需要三个文件,led.lds , led.S和Makefile三个文件;
---------------------------------led.S-----------------------------------------------
@****************************
@File:LED1
@
@功能:用汇编点亮一个LED
@****************************
.equ WTCON, 0x53000000@看门狗控制寄存器地址
.equ GPBCON, 0x56000010@GPB控制寄存器地址
.equ GPBDAT, 0x56000014@GPB数据寄存器地址
.equ INTMSK, 0x4a000008@中断屏蔽寄存器地址
.equ INTSUBMSK, 0x4a00001c@子中断屏蔽寄存器地址
.text
.global _start
_start:
@建立中断向量表
b reset@复位
ldr pc, _undefined_instruction@未定义指令向量
ldr pc, _software_interrupt@软件中断向量
ldr pc, _prefetch_abort@预取指令异常向量
ldr pc, _data_abort@数据操作异常向量
ldr pc, _not_used@未使用
ldr pc, _irq@irq中断向量
ldr pc, _fiq@fiq中断向量
_undefined_instruction:
b .
_software_interrupt:
b .
_prefetch_abort:
b .
_data_abort:
b .
_not_used:
b .
_irq:
b .
_fiq:
b .
reset:
@复位
bl set_svc
bl disable_watchdog
bl disable_irq
bl init_led
bl light_led
halt:
b halt
set_svc:
@设置为管理模式
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
mov pc,lr
disable_watchdog:
@关闭看门狗
ldr r0, =WTCON
mov r1, #0x0
str r1, [r0]
mov pc, lr
disable_irq:
@屏蔽中断
ldr r1, =0xffffffff
ldr r0, =INTMSK
str r1, [r0]
ldr r1, =0x7fff
ldr r0, =INTSUBMSK
str r1, [r0]
mov pc, lr
init_led:
@清除GPB5的初始电平
ldr r0, =GPBDAT
mov r1, #0x20
str r1, [r0]
@设置GPB5为输出状态
ldr r0, =GPBCON
mov r1, #0x400
str r1, [r0]
mov pc, lr
light_led:
@点亮LED1
ldr r0, =GPBDAT
mov r1, #0x0
str r1, [r0]
mov pc, lr
---------------------------------led.lds---------------------------------------------
SECTIONS {
. = 0x30008000;
. = ALIGN(4);
.text :
{
led.o (.text)
*(.text)
}
. = ALIGN(4);
.rodata : {*(.rodata)}
. = ALIGN(4);
.data : {*(.data)}
. = ALIGN(4);
bss_start = .;
.bss : {*(.bss) *(COMMON)}
bss_end = .;
}
---------------------------------Makefile-------------------------------------------
all: led.o
arm-linux-ld -Tled.lds -o led.elf led.o
arm-linux-objcopy -O binary led.elf led.bin
led.o : led.S
arm-linux-gcc -g -o led.o -c led.S
.PHONY: clean
clean:
rm *.o led.elf led.bin
--------------------------------------------------------------------------------------------
操纵步骤:
1.使用Linux中的交叉编译环境--make,,产生led.bin 文件
2.TQ2440开发板连接电脑:
(1).TQ2440的串口线通过USB转串口线连接电脑的USB接口(如COM2);
(2).TQ2440的下载线连接电脑的USB接口.
如果使用的是虚拟机(VM10)的Linux(RHEL 6.3),点击虚拟机如图标志;进行TQ2440开发板与Linux连接。
3.打开windows中的secureCRT软件,设置该软件
4.把TQ2440的启动选择开关拨到Nor flash ;打开TQ2440的电源开关;这时secureCRT会有信息打印出来:
对secureCRT进行操作,输入 “9”,回车;会标记开发板中的Nand flash中的坏块;
输入“1”,进行裸机程序的下载等待……
5.在Linux中安装dnw模块,
(1).使用secureCRT连接Linux(RHEL 6.3);或者在Linux中的终端中进行操作的话,这一步就省略了;
(2).安装dnw模块;安装之前也可以查看Linux中是否已经存在该模块:使用命令:lsmod,就会列出所有已经安装好的模块,如果存在dnw就忽略这一步。如果不存在就进入dnw_usb.ko所在的目录,使用命令:insmod dnw_usb.ko,
(3)使用dnw进行led.bin文件的下载:/……/dnw /……/led.bin 30000000
/……/表示后面的文件所在的目录
如果dnw和led.bin在同一个目录那就可以忽略路径问题了,下面的例子如图:
经过上述5个步骤,led的裸机程序下载完毕;
把TQ2440的启动选择开关拨到Nand flash;重新打开电源,就会看到led1处于常亮的状态。表示程序下载成功,并正确运行!
- 第一个裸机程序---点亮led小灯
- MSP430F1612 第一个程序,点亮一个LED灯
- 【OK6410裸机程序】点亮LED
- 一起学mini2440裸机开发(一)--第一个led灯点亮
- 一起学mini2440裸机开发(一)--第一个led灯点亮
- STM32初探-点亮第一个led灯
- 第一个驱动程序(点亮LED灯)
- lesson1~点亮第一个LED灯
- 单片机小白学步系列(十四) 点亮第一个LED的程序分析
- 嵌入式驱动开发笔记(裸机程序篇)---点亮LED灯
- 基于Cortex-A8裸机,点亮LED灯程序分析
- tiny4412 裸机程序 二、汇编点亮LED灯
- 裸机程序二:GPIO点亮led灯 汇编
- 裸机程序二:GPIO点亮led灯 c语言
- mini2440裸机程序之二--点亮LED灯
- S3C2440裸机程序开发点亮LED
- OK6410上裸机点亮LED程序
- 4412裸机程序之点亮LED
- 5-19 求链式线性表的倒数第K项 (20分)
- ActiveMQ入门实例
- jQuery中的$(window).load()与$(document).ready()
- java之静态初始化块
- 网站广告收入反正要发动群众的力量,来创造利润--小黄人软件
- 第一个裸机程序---点亮led小灯
- 数据迁移类测试策略
- UML
- [96]Unique Binary Search Trees
- 计划继续深化学习物联网系统的相关知识 目前的WiFi模块基于ESP8266
- sql语句
- Xampp v3.2.1 安装 Memcached for windows
- nodejs 之express 笔记 include 代替 partials
- 图片翻转