S3c2410裸板程序入门---单按键(一)

发布者:RadiantJourney最新更新时间:2019-12-24 来源: elecfans关键字:S3c2410  裸板程序  单按键 手机看文章 扫描二维码
随时随地手机看文章

有点入门了,好吧,开始学点稍微复杂的,写一个单按键的程序。


有人可能会笑,这个复杂?的确,只有一个按键是比较简单的,关键是我们要通过这个按键引出中断处理的部分,这个就比较核心了。中断是学习某个CPU最重要的部分之一。


这次我们将使用realview提供的初始化文件,学会自己配置(以后还有自己写呢)。然后完成一次按键触发一次中断处理函数的功能。怎么判断有没有触发中断呢?我们不是写了串口的程序吗,中断一次由串口向PC机发送个数据好了。


1 配置(s3c2410a.s 对应的configuration):


等会儿截几个图吧,现在手头没有截图工具。


2 s3c2410a.s 的几个片段,着重关注中断部分。


159IntVT_SETUP

 EQU

 1

 160IntVTAddress

 EQU

 0x33FFFF20

...........


795

 AREA

 RESET

,

CODE

,

READONLY

 796

 ARM

799; Exception Vectors

 800;  Mapped to Address 0.

 801;  Absolute addressing mode must be used.

 802;  Dummy Handlers are implemented as infinite loops which can be modified.

 803

 804Vectors

 LDR

 PC

,

Reset_Addr

 805

 LDR

 PC

,

Undef_Addr

 806

 LDR

 PC

,

SWI_Addr

 807

 LDR

 PC

,

PAbt_Addr

 808

 LDR

 PC

,

DAbt_Addr

 809

 NOP

 ; Reserved Vector

 810

 LDR

 PC

,

IRQ_Addr

 811

 LDR

 PC

,

FIQ_Addr

813

 814

 IF

 IntVT_SETUP

<>

0

816;Interrupt Vector Table Address

 817HandleEINT0

 EQU

 IntVTAddress

 818HandleEINT1

 EQU

 IntVTAddress

+

4

 819HandleEINT2

 EQU

 IntVTAddress

+

4

*

2

 820HandleEINT3

 EQU

 IntVTAddress

+

4

*

3

 821HandleEINT4_7

 EQU

 IntVTAddress

+

4

*

4

 822HandleEINT8_23

 EQU

 IntVTAddress

+

4

*

5

 823HandleReserved

 EQU

 IntVTAddress

+

4

*

6


850IRQ_Entry

 851

 sub

 sp

,

sp

,

#4       ;reserved for PC

 852

 stmfd

 sp!,{r8-r9} ;备份r8 r9

 853

 854

 ldr

 r9

,=

INTOFFSET ;取的中断偏移

 855

 ldr

 r9

,[

r9

]

856

 ldr

 r8

,=

HandleEINT0 ;得到中断处理函数地址的基地址

 857

 add

 r8

,

r8

,

r9

,

lsl

 #2 ;根据基地址和偏移得到实际中断处理函数地址

 858

 ldr

 r8

,[

r8

]

859

 str

 r8

,[

sp

,

#8]

 860

 ldmfd

 sp!,{r8-r9,pc} ;修改pc指针,跳转到二级中断处理函数处

 861

 862

 ENDIF

 863

 864Reset_Addr

 DCD

 Reset_Handler

 865Undef_Addr

 DCD

 Undef_Handler

 866SWI_Addr

 DCD

 SWI_Handler

 867PAbt_Addr

 DCD

 PAbt_Handler

 868DAbt_Addr

 DCD

 DAbt_Handler

 869

 DCD

 0

 ; Reserved Address

 870IRQ_Addr

 DCD

 IRQ_Handler

 871FIQ_Addr

 DCD

 FIQ_Handler

 872

 873Undef_Handler

 B

 Undef_Handler

 874SWI_Handler

 B

 SWI_Handler

 875PAbt_Handler

 B

 PAbt_Handler

 876DAbt_Handler

 B

 DAbt_Handler

 877

 878

 IF

 IntVT_SETUP

<>

1

 879IRQ_Handler

 B

 IRQ_Handler

 880

 ENDIF

 881

 882

 IF

 IntVT_SETUP

<>

0

 883IRQ_Handler

 B

 IRQ_Entry

 884

 ENDIF

 885

 886FIQ_Handler

 B

 FIQ_Handler

可见触发irq中断时,cpu自动把cpsr保存到spsr,把pc指针置为0x18。经过LDR PC,IRQ_Addr,IRQ_Handler B IRQ_Entry,两次跳转,最终跳到了IRQ_ENTRY, 这其实就是一级中断处理函数,一级中断处理函数的作用就是根据中断偏移寄存器查的其处理函数的地址,请看代码中的注释。


因为用html粘贴的代码,所以提示我文章过长,只有另开一文喽。

关键字:S3c2410  裸板程序  单按键 引用地址:S3c2410裸板程序入门---单按键(一)

上一篇:S3c2410裸板程序入门---串口
下一篇:阅读ARM Memory(L1/L2/MMU)笔记

推荐阅读最新更新时间:2024-11-06 10:16

Windows CE.NET在S3C2410处理器上的移植简介
   本文分析了嵌入式操作系统Windows CE。NET的特点,并利用工具Platform Builder 4。2完成了其在以ARM920T为核心的S3C2410处理器上的定制。   1 Windows CE系统和Platform Builder 4.2   Windows CE是微软推出的一个32位、多线程、多任务的嵌入式操作系统,是微软专门为信息设备、移动应用、嵌入式应用等设计的嵌入式模块型操作系统。用户可选择、组合和配置Windows CE。NET的模块和组件来创建用户版的操作系统。    Windows CE。NET是WindOWS CE 3。0的后继产品,其系统组成如图1所示。Windows
[单片机]
Windows CE.NET在<font color='red'>S3C2410</font>处理器上的移植简介
s3c2410上搭建QT/Embedded4.8.5开发环境(五)
前面我们已经搭建好了三个不同版本的QT编译环境 ①qt-4.8.5-x11:依赖于x11的qt版本,在PC可以直接 ./ 运行 ②qt-4.8.5-x86:依赖与qvfb的qt版本,在PC机上可以使用 qvfb & , 然后“./ -qws”运行 ③qt-4.8.5-arm:arm上的QT版本,交叉编译后在arm上运行 编译大概花了配置两天半的时间,期间还遇见一些问题,好在全部解决了,但是我们总不能每次搭环境都费这么长时间吧,好在我们还有tar可以使用,我们把最后的编译版本打包备份,这样以后我们使用的时候直接解压缩就可以了 备份qt-4.8.5 tar -cvzf tslib-1.4-arm.tar.gz /o
[单片机]
LCD基础及S3C2410 LCD控制器
一、超薄平面显示器时代来临 电视机所采用的 CRT(阴极射线管)有着体积大、重量重、尺寸受限等缺点。随着电子科技的发展,对移动显示的要求越来越多,CRT 的先天限制,让其小型化、行动化的理想受到阻碍。这使得开发新一代的显示器技术变得更有其必要! 新一代的显示器讲求几个重点:平面直角,画面显示不变形、轻薄短小耗能少,携带方便且同时要与现有的影像信号技术兼容。目前谈论到超薄型显示器技术,最普及当是 TFT LCD 的应用了,举凡数字相机、笔记型计算机、PDA 等,需要显示复杂信息的电子产品通通少不了它。TFT LCD 技术又包含了,低温多硅晶TFT LCD、反射式TFT LCD 等,多项不同的显示技术,下面我们就要来一探 LCD
[嵌入式]
s3c2410 __attribute__ ((interrupt ("IRQ")))
在中断里面,有这个函数,不太明白是怎么回事,于是网上找答案~原文是关于s3c44B0的,不过感觉都差不多吧~下面整理下~ ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采用中断比以往的查询方式占用更少的CPU时间,让系统提供更好性能。 查询S3C2410的手册,发现它有?(我不清楚有几种)种工作模式,每种工作模式是不一样的。其中最常用的,就是FIQ和IRQ模式。在使用中断之前,一定要初始化每种模式的栈指针SP,如果不初始化,肯定会出错。在CPU进行初始化时,就需要依次进入IRQ模式,初始化SP,接着再进入FIQ模式初始化
[单片机]
基于S3C2410的氢气浓度监测系统设计
引言 零碳排放的氢燃料作为一种高效、清洁、可再生的能源,得到了国际能源界的广泛认同。氢气也在石油化工、电子工业、食品工业、航空航天工业等领域有了广泛应用。然而,氢气是一种无色无味、携带极不方便、极易泄漏的气体,在室温和标准大气压下,氢气与空气的混合比例达到4.1%~74.1%时遇明火极易爆炸。为了减小使用氢气的安全隐患,开发出一套安全、可靠、灵敏度高的氢气浓度监测系统具有十分重要的意义。 1 系统总体结构设计 采集到的氢传感信号经过低噪声放大电路进行放大处理,并在低通滤波器滤除信号中的高频噪声。然后,经A/D转换器送入ARM处理器S3C2410,ARM处理器再调用应用程序对采集到的数据进行数字处理,最后实时显示浓度值,并
[测试测量]
基于<font color='red'>S3C2410</font>的氢气浓度监测系统设计
基于S3C2410的TFT-LCD驱动电路设计
随着电子技术的迅猛发展,具有耗电少、亮度高、体积小等特点的液晶显示器被广泛应用于嵌入式系统中。S3C2410是三星公司开发的一款以ARM920T为核心的16/32位嵌入式处理器。它主要面向手持设备以及高性价比、低功耗的应用。LTS350Q1-PE1是三星电子公司生产的一款非晶硅有源矩阵TFT-LCD,它具有功耗低、亮度高和体积小等特点,目前在嵌入式设备中应用非常广泛。 基于S3C2410,采用LTS350Q1-PE1作为显示设备可以构成一个基于嵌入式平台的液晶显示系统,如图1所示,该系统可以满足大多数嵌入式手持设备的功能要求。但是,要想S3C2410的LCD控制器可以正确有效地控制TFT-LCD,需要设计两者之间的硬
[单片机]
基于<font color='red'>S3C2410</font>的TFT-LCD驱动电路设计
s3c2410的nandflash启动过程分析
注:此文为部分摘录,并且在原文基础上有改动 link 这几天一直在摸索s3c2410的启动过程,几天的困惑终于在昨天晚上基本解决.下面详细分析一下它的最前面的启动过程. 1.在板子上电的一开始,首先自动判断是否是autoboot模式(这是由硬件设计阶段,由硬件工程师对mcu的引脚连线决定的),我所使用的s3c2410是带有nandflash的,并切被设置成autoboot,从nandflash开始启动. 2.在判断是autoboot模式后,mcu内置的nandflash控制器自动将nandflash的最前面的4k区域(这4k区域存放着 bootloader的最前面4k代码)拷贝到samsung所谓的 steppingstone
[单片机]
关于s3c2410从NAND Flash启动的问题--bootrom 4KB限制
用的是S3C2410.见附件start.s 其中关于nand flash启动的那一段一直百思不得其解,按说从NAND FLASH启动时, 应该是前4KB映射到NGCS0,其中的代码将NAND中存放的程序拷贝到RAM中,但该文件提供的程序好象是先从NAND拷贝 128K的代码到ResetEntry开始的地方,即地址为0的地方,然后再从ResetEntry处拷到RAM中,但此时NGCS0好象只有4KB的 RAM区,怎么能存储128K的代码,一直没想通.望高手指点,谢谢! 搞明白了,是两条指令的差别 LDR r0,=_entry和ADR r0,_entry 前者是在编译的时候按照load address生成的绝对地址,后者反汇编后是相
[单片机]
关于<font color='red'>s3c2410</font>从NAND Flash启动的问题--bootrom 4KB限制
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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