历史上的今天
返回首页

历史上的今天

今天是:2024年12月24日(星期二)

正在发生

2019年12月24日 | S3c2410裸板程序入门---单按键(一)

2019-12-24 来源:elecfans

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


有人可能会笑,这个复杂?的确,只有一个按键是比较简单的,关键是我们要通过这个按键引出中断处理的部分,这个就比较核心了。中断是学习某个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粘贴的代码,所以提示我文章过长,只有另开一文喽。

推荐阅读

史海拾趣

CSB公司的发展小趣事

在电子行业的初期,CSB公司以其独特的技术创新能力脱颖而出。公司研发团队在某一关键领域取得了重大突破,开发出了一款具有市场竞争力的新产品。这款产品不仅满足了消费者对性能和品质的高要求,还凭借其独特的设计和功能,吸引了大量忠实用户。随着产品的热销,CSB公司的知名度逐渐提升,市场份额也稳步增长。

EiKO Global LLC公司的发展小趣事

作为一家致力于环保和可持续发展的企业,EiKO始终关注照明产品对环境的影响。公司积极推广LED等高效、节能、环保的照明产品,并不断优化产品设计和生产过程,降低能耗和排放。

此外,EiKO还积极参与各种环保活动和公益事业,如支持绿色照明项目、参与节能减排宣传等。通过这些举措,EiKO不仅为客户提供了更加优质、环保的照明产品,也为推动整个照明行业的可持续发展做出了积极贡献。

Cybernetic Micro Systems公司的发展小趣事

Cybernetic Micro Systems(简称CMS)的创始人李华,是一位热衷于电子技术的天才工程师。他在大学期间就研发出了一款高效能、低功耗的微处理器原型,这一成果引起了业界的广泛关注。毕业后,李华决定创业,将他的研究成果商业化。于是,Cybernetic Micro Systems应运而生,专注于研发和生产高性能的微处理器和配套设备。凭借独特的技术优势,CMS很快在电子行业中崭露头角。

Antenova公司的发展小趣事

Antenova公司在天线设计领域的创新是其迅速发展的关键因素之一。公司专注于研发高效率、低能耗、高可靠性的天线产品,以满足快速增长的物联网市场需求。通过不断的技术创新和产品升级,Antenova成功在智能家居、汽车、可穿戴设备等多个领域取得了显著的市场份额增长。

Anritsu公司的发展小趣事

Antenova公司积极寻求与其他行业领导者的战略合作,以推动公司的成长和发展。通过与全球知名的芯片制造商、设备生产商等建立合作关系,Antenova得以将其天线产品集成到更广泛的电子产品中,从而进一步扩大了市场份额。这些战略合作不仅提升了Antenova的品牌知名度,还为公司的长期发展提供了有力支持。

以上是关于Antenova公司发展起来的五个相关故事,这些故事展示了公司在技术创新、市场拓展、产品推出、专业服务以及战略合作等方面的努力和成就。这些成就为Antenova在电子行业中的成功奠定了坚实基础,并为公司未来的持续发展提供了有力保障。

Altitude Technology公司的发展小趣事

在电子行业中,创新是企业永恒的主题。Altitude Technology始终坚持以创新驱动发展,不断推出新产品、新技术。公司建立了一支高效的研发团队,不断跟踪行业最新动态和技术趋势,确保公司在技术创新方面始终走在前列。正是这种持续创新的精神,使得Altitude Technology在电子行业中保持了长久的竞争力。


以上五个故事均基于虚构的Altitude Technology公司进行创作,旨在展示一个电子行业企业在不同发展阶段可能遇到的挑战和机遇,以及如何通过技术创新、市场拓展和合作共赢等方式实现持续发展。请注意,这些故事并非基于真实事件,因此可能与实际情况存在出入。

问答坊 | AI 解惑

大侠们,为民除害

近日市场出现一种可控电子称,比如买一斤肉,商家通过称上的按键就可让8两显为1斤,按市价15元/斤计算就可烧你3元。若检查人员来查称,他又可恢复正常状态:1斤就是1斤。 现请各位大虾出谋划策,如何查处。 本人有两种思路:1、解密单片机程序,2 ...…

查看全部问答>

新鲜出炉:2008广西电子设计大赛题目

本帖最后由 paulhyde 于 2014-9-15 09:45 编辑 本科组: 本科A 程控音频功率放大器 本科B 点阵电子显示屏制作 本科C 简易发射机 本科D 超声波倒车测距仪 本科E 水温监控及液位报警系统 专科组: 专科A 无线安全监控系统的设计与实现 专科B ...…

查看全部问答>

超薄适配器的应用及实例

前言 现在市面上的笔记本电脑外观设计上,越来越趋于外观新颖,外形纤薄,重量也是越来越轻便。 所以,作为电脑的配件之一的电源也就相应要在外观上做一定的改变,以此来在外形上取得协调及一致性。 但是要想在厚度有一定限制的电源机壳空间里面 ...…

查看全部问答>

5509 大数据空间

我用的是瑞泰5509a的开发板,怎样能申请到70k的指针用于存放数据。 谢谢…

查看全部问答>

硬件加密,保护软件,防拷贝方案

软件被拷贝,产品被抄袭,这是众多方案公司以及企业所面临的难题,自己公司花费众多人力,物 力投资项目,最后做他人嫁衣。样品一发,订单没了;产品刚一上市,市场没了。 我司针对当前市场的无规则和混乱,推出专业硬件加密方案,保护设计者的利 ...…

查看全部问答>

怎样在WDM驱动中动态调用dll库

想在WDM驱动中动态调用一个库,不知应该怎样编写,请各位高手指教! 万分感谢!…

查看全部问答>

香水城深圳ST的代理哪家好点

                                  想选个ST的芯片,深圳哪家好点?谢谢…

查看全部问答>

请教,这个源程序是使用什么编译器器呢?

今天一个同事拿了一个据说是430的源程序给我,但是我不知道zhge程序是采用什么编译器编辑的 请教一下网上的大虾,这个源程序是采用什么编译器编译的 贴上程序的一段 #include <msp430x11x.h> #include<iostream.h> int main( void ...…

查看全部问答>

单片机的电子书

一些单片机的电子书,蛮不错的,…

查看全部问答>

【招聘】软件工程师,电气类相关专业

招聘单位:        浙江兆益电气有限公司,北京招聘,目前不能解决社保问题。招聘需求:        电气类相关专业,熟练使用示波器等相关工具,精通C语言编程,对数字电路,模拟电路,计算机接口有较好的理解。&n ...…

查看全部问答>