s3c2440 ARM9 裸机驱动第一篇-GPIO驱动(汇编)

发布者:PeacefulWarrior最新更新时间:2022-04-21 来源: eefocus关键字:s3c244  ARM9  裸机驱动  GPIO驱动  汇编 手机看文章 扫描二维码
随时随地手机看文章

一 开发环境:


1.ubuntu


2.JZ2440开发板


二 硬件部分

JZ2440开发板上将GPF4-7四个引脚外接LED,从电路图可以得知,IO口为低电平时LED灯亮。


查询s3c2440 数据数据手册,GPF引脚寄存器地址如下:

三 软件部分:


led.s


.text

.global _start

_start:

ldr r0 ,= 0x53000000 @WATCHDOG ADD

mov r1 ,#0x0

str r1 ,[r0] @r1 的数据写入r0 

ldr r0 ,=0x56000050 @GPFCON

mov r1 ,#0x5500        

str r1 ,[r0] @设置GPF4-7为输出

add r0 ,r0,4 @GPFDAT

mov r1 ,#0x0

str r1 ,[r0]

loop:

      b        loop

Makefile


 


 


CC=arm-linux-gcc

LD=arm-linux-ld

led.bin:led.o

    $(LD) -Ttext 0x0000000 -g led.o -o led_elf

    arm-linux-objcopy -O binary -S led_elf led.bin    

    arm-linux-objdump -D -m arm  led_elf > led.dis

led.o:led.s

    $(CC)  -c -g -o led.o led.s

clean:

    rm -f led.bin led_elf led.dis

在虚拟机下输入mak,得到led.bin文件


 


四 烧录:


我是使用BootLoader烧写nandflash


1.tftp下载led.bin到30000000。


       tftp 30000000 led.bin


2.擦除nandflash bootloader分区(韦老师提供的BootLoader中的分区也就是nandflash的前256k内存)


      nand erase bootloader


3.写入nandflash


    nand write 30000000 bootloader

————————————————

版权声明:本文为CSDN博主「「已注销」」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/ggz_qq1300046380/article/details/78439157


关键字:s3c244  ARM9  裸机驱动  GPIO驱动  汇编 引用地址:s3c2440 ARM9 裸机驱动第一篇-GPIO驱动(汇编)

上一篇:s3c2440 ARM9 裸机驱动第一篇-GPIO驱动(C)
下一篇:移植内核到s3c2440

推荐阅读最新更新时间:2024-11-11 12:55

51单片机十进制整数与二进制整数转换汇编语言子程序
==================================== 【4位十进制整数转换为二进制整数子程序】 入口:十进制整数千位数RAM址存于R0,百位数、十位数、个位数RAM址依次加1; 返回值:转换所得二进制整数存于R3(高字节)R4(低字节)。 DtoB: MOV R2, #4 ;;R2←递减的循环次数初值 MOV A, @R0 MOV R4, A ;;R4←千位数 LP1 : MOV A, R4 ;;R3R4←(R3)(R4)*10 MOV B, #10 MUL AB MOV R4, A MOV B, #10 XCH A
[单片机]
GNU ARM 汇编指令
第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。 一. Linux汇编行结构 任何汇编行都是如下结构: ]] 每一个段以段名为开始, 以下一个段名或者文件结尾为结束。这些段都有缺省的标志(flags),连接器可以识别这些标志。(与armasm中的AREA相同)。 下面是ELF格式允许的段标志 标志 含义 a 允许段 w 可写段 x 执行段 【例3】定
[单片机]
ARM汇编语言 - 简介 [三]
上文介绍了ARM的数据处理指令,本文将主要介绍ARM中的跳转指令。 【跳转指令】 无条件跳转 ARM中的基础跳转指令就一个字母 B ,代表Branch,相比起x86中和它功能基本相同的 jmp 指令,意思显得稍微隐晦了点。 B 属于无条件跳转,就是不管三七二十一,跳就对了,如果跳转的目标地址不是由立即数直接给出,而是通过寄存器给出,那就应该使用 BX 。 B label ;jump to the address given by the label BX reg ;jump to the address given by the register 目标地址是否由寄存器给出只是表象,真正的区
[单片机]
ARM<font color='red'>汇编</font>语言 - 简介 [三]
PIC单片机汇编语言学习(一)
1、汇编语言的语句格式: 标号 操作码(指令助记符) 操作数 ;注释 (label) (opcode) (operand) (comment) 2、常用伪指令 a.EQU——符号名赋值伪指令 格式:符号名 EQU nn b.ORG——程序起始地址定义伪指令 格式:ORG nnnn c.END——程序结束伪指令 格式:END d.LIST——列表选项伪指令 格式:LIST e.INCLUDE:调入外部程序文件伪指令 格式:INCLUDE 文件名 2、分支程序结构 ——对于程序中的指令运用作几点说明: (1)凡是需要2个数参与的逻辑运算(与、或、异或)和算术运算(加、减),都需要事先将其中一个操作数放入W中。对于在此使用的减法指令
[单片机]
PIC单片机<font color='red'>汇编</font>语言学习(一)
S3C2416裸机开发系列十八_音频驱动实现(1)
在消费电子产品中,往往都会用到音频系统来播放音乐、进行通话等多媒体应用,此外,对于一些需语音提示的产品,音频部分都是不可或缺的功能。笔者此处就s3c2416的音频驱动实现作一个简单的介绍。 1. IIS音频总线 s3c2416支持IIS、PCM、AC97这三种音频接口,此处只分析IIS音频接口。IIS接口(Inter-IC Sound)在20世纪80年代首先被飞利浦公司用于消费音频,为数字音频设备之间的音频数据传输而制定的一种总线标准。IIS有以下三个主要的信号: 1) 串行时钟SCLK,也叫做位时钟(BCLK)。数字音频的每一位均需对应一个SCLK脉冲,因此位时钟频率应大于等于2*采样频率*采样位数。乘以2表示每个采样会产生左
[单片机]
arm中ads实现c和汇编混合编译的方法
在嵌入式系统开发中,目前使用的主要编程语言是C 和汇编,虽然C++已经有相应的编译器,但是现在使用还是比较少的。 在稍大规模的嵌入式程序设计中,大部分的代码都是用C来编写的,主要是因为C语言具有较强的结构性,便于人的理解,并且具有大量的库支持。但对于一写硬件上的操作,很多地方还是要用到汇编语言,例如硬件系统的初始化中的CPU 状态的设定,中断的使能,主频的设定,RAM控制参数等。另外在一些对性能非常敏感的代码块,基于汇编与机器码一一对应的关系,这时不能依靠C编译器的生成代码,而要手工编写汇编,从而达到优化的目的。汇编语言是和CPU的指令集紧密相连的,作为涉及底层的嵌入式系统开发,熟练对应汇编语言的使用也是必须的。 单纯的C或
[单片机]
ARM几条汇编指令的比较
1、LDRR0,=0X3FF5000;伪指令,把0X3FF5000这个地址送给R0 2、LDRR0,0XFF;把立即数0xff送给R0 3、LDRR0,= &相当于0X 4、BICR0,R0,#%1011;.#表示立即数,%表示二进制 LDRR1,=0x3ff5000;伪指令R1=0X3FF5000 LDRR1,0x3ff5000;存储器访问指令R1= ======================================================================= adr与ldr比较 adrr0,InitSystem; ldrr1,=InitSystem; 伪指令adrr0,InitSyste
[单片机]
简单实现 汇编及C语言混合 keil9.0工程源码
系统设计核心意图:使用定时器,在延时过程中运行其它的任务。 工程源码:链接: https://pan.baidu.com/s/1LEV9qYmUn6SdemGz7TH6dw 提取码: iua5 切换任务并记录位置,保证在时间到后能切换回来。(在任务中切换出去,在定时器中切换回来。)(时间片轮转) 可以支持同时8个任务。 工程就两个文件:汇编操作系统rtos_c.asm 及 C语言示例 Test.c Test.c /* 开发工具:keil c51 V9.0 及注册机 芯片:标准C8051 晶振:12M 源码任务数:加主任务共4个 2019-05-07 */ //----------------------
[单片机]
简单实现 <font color='red'>汇编</font>及C语言混合 keil9.0工程源码

推荐帖子

无线开关控制的原理介绍
社会在不断发展,科技在不断提升,在智能领域比较突出的应该算是无线控制吧。现在无线遥控开关被大量的使用于我们日常生活中各个角落,例如:酒店、医院、仓库、办公室等场所,工业现场更是有列举不尽的应用案例,如用于灯饰照明控制、堆取料机无线开关控制,agv小车的无线引导及其它用途控制。相信大家对于无线遥控开关并不陌生,但大多数人对于无线遥控开关工作原理都不是很了解,下面简单说一下。无线发射的频率分距离不同,有几种发射频率。比较常见的家居智能控制使用的是2.4Ghz或5Ghz频段,也是大家常
dwzt 模拟电子
什么时候,P0口需要外加上拉电阻,什么时候又不需要呢
今天,我在看AT89S51的datasheet,看了下面的文字,我还不是很清楚,什么时候,P0口需要外加上拉电阻,什么时候又不需要呢,请高手解答,不胜感激呀!!!Port0canalsobeconfiguredtobethemultiplexedlow-orderaddress/databusduringaccessestoexternalprogramanddatamemory.Inthismode,P0hasinternalpull-
liutao2011 单片机
启动代码里的这段栈初始化代码 是怎么执行的
我知道启动代码里的向量表编辑段代码是放在rom起始地址的,即编译后放在0地址执行那启动代码里一开始的这段栈初始化代码是怎么执行的,是放在rom哪里执行的呢?难道不执行吗?Stack_SizeEQU0x00000200;定义Stack_Size为0x00000200AREASTACK,NOINIT,READWRITE,ALIGN=3;定义栈,可初始为0,8字节对齐Stack_MemSPACEStack_Size
xinbako 嵌入式系统
NUCLEO-L452RE第一批已发和特别提醒
昨天统计了目前参与答题闯关的网友,并安排了第一批的派送,快递单号可点此前往查询(在1楼的底部),想要参与的网友,点击此处即可参与【迎新感恩活动一】闯关赢优惠券,蝴蝶粉最低可29元体验NUCLEO-L452RE。特别提醒:1、参与活动的半数以上网友挂在第二关的第三题,遇此题需谨慎,需谨慎,需谨慎。其中有一个选项考验的不是技术,是眼力2、论坛相关即时交流通道。QQ群:368820438微信群:扫描下方二维码即可入群,如失效,添
nmg 单片机
AT91SAM9XE512 ARM程序无法在SDRAM中运行
我使用了AT91SAM9XE512进行程序设计,如果将程序加载到内部的SRAM中运行,没有问题。但是如果是加载到外部的SDRAM中运行就莫名其妙的跑飞。因为程序战胜的RAM内存比较大,在调试期间只能使用外扩的SDRAM内存,其结果就是无法调试。我手头上共焊接了三块电路板,只有其中一块是好的,即可以在SDRAM中运行,其它两块都无法在SDRAM中运行,有遇到过同类问题的吗?AT91SAM9XE512ARM程序无法在SDRAM中运行
songhuaqiang88 ARM技术
数字电路与模拟电路的区别
数字电路是处理逻辑电平信号的电路,它是用数字信号完成对数字量进行算术运算和逻辑运算的电路。从整体上看,数字电路分为组合逻辑电路和时序逻辑电路两大类。数字电路是模拟电路的基础上发展起来的,数字电路是以模拟电路为基础的它们的基础就是电流和电压,但它们有着本质的区别。在一个周期内模拟电路的电流和电压是持续不变的,而数字电路中它的电流和电压是脉动变化的。模拟电路和数字电路它们同样是信号变化的载体,模拟电路在电路中对信号的放大和削减是通过元器件的放大特性来实现操作的,而数字电路是对信号的传输是
entertheworld 模拟电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved