当前位置: 首页 > news >正文

自己建设网站模版/做网站建设的公司

自己建设网站模版,做网站建设的公司,网站建设的一些名词,应用开发工程师/*************************************************** *作 者:温子祺 *联系方式:wenziqihotmail.com *说 明 :ARM中断区别-LPC2142与S3C2440的区别 ***************************************************/ LPC 与三星ARM的区别就是三星固定了中断向量的地址&#xff0…

/***************************************************
 *作     者:温子祺
 *联系方式:wenziqi@hotmail.com
 *说    明 :ARM中断区别-LPC2142与S3C2440的区别
 ***************************************************/

    LPC 与三星ARM的区别就是三星固定了中断向量的地址,而LPC的就没有。例如三星的S3C2440

所有的中断源都有相对应的中断向量。 

  • 关于三星ARM

 

1)使用向量中断 

ENTRY

b ResetHandler                                  ;   0x00

b HandlerUndef                                  ;   0x04

b HandlerSWI                                    ;   0x08

b HandlerPabort                                 ;  0x0c

b HandlerDabort                                 ;   0x10

b .                                            ;   0x14

b HandlerIRQ                                    ;   0x18

b HandlerFIQ                                    ;   0x1c

 

ldrpc,=HandlerEINT0                           ;   0x20

ldrpc,=HandlerEINT1

ldrpc,=HandlerEINT2

ldrpc,=HandlerEINT3

ldrpc,=HandlerEINT4567

ldrpc,=HandlerTICK                            ;   0x34

b.

b.

ldrpc,=HandlerZDMA0                           ;   0x40

ldrpc,=HandlerZDMA1

ldrpc,=HandlerBDMA0

ldrpc,=HandlerBDMA1

ldrpc,=HandlerWDT

ldrpc,=HandlerUERR01                          ;   0x54

b.

b.

ldrpc,=HandlerTIMER0                          ;   0x60

ldrpc,=HandlerTIMER1

ldrpc,=HandlerTIMER2

ldrpc,=HandlerTIMER3

ldrpc,=HandlerTIMER4

ldrpc,=HandlerTIMER5                          ;   0x74

b.

b.

ldrpc,=HandlerURXD0                           ;   0x80

ldrpc,=HandlerURXD1

ldrpc,=HandlerIIC

ldrpc,=HandlerSIO

ldrpc,=HandlerUTXD0

ldrpc,=HandlerUTXD1                            ;   0x94

b.

b.

ldrpc,=HandlerRTC                             ;   0xa0

b.

b.

b.

b.

b .

b.

ldrpc,=HandlerADC                             ;   0xb4


精析:很大不同的是ldr pc,=HandlerEINT0开始不同,三星ARM恰当利用了这些地址,很方便完成中断的跳转。


 

2)不使用向量中断 

ENTRY

b ResetHandler                                 ;  for debug

b HandlerUndef                                 ;  handlerUndef

b HandlerSWI                                   ;  SWI interrupt handler

b HandlerPabort                                ;  handlerPAbort

b HandlerDabort                                ;  handlerDAbort

b .                                           ;  handlerReserved

b IsrIRQ

b HandlerFIQ

. . . . . .

 

IsrIRQ

sub             sp,sp,#4                       ;  reserved for PC

stmfd           sp!,{r8-r9}

 

ldr             r9,=I_ISPR

ldr             r9,[r9]

mov             r8,#0x0

0               movs            r9,r9,lsr #1

bcs             %F1

add             r8,r8,#4

b               %B0

 

1               ldr             r9,=HandleADC

add             r9,r9,r8

ldr             r9,[r9]

str             r9,[sp,#8]

ldmfd           sp!,{r8-r9,pc}

.. . . . .

HandleADC               #       4

HandleRTC               #       4

HandleUTXD1           #         4

HandleUTXD0           #         4

.. . . . .

HandleEINT3           #         4

HandleEINT2           #         4

HandleEINT1           #         4

HandleEINT0           #         4                              ;  0xc1(c7)fff84

 

精析:

很大不同的是IsrIRQ,还有的是IsrIRQ没有进行sub lr,lr,#4的操作。

 

原因是这里没有出现过函数调用,那么lr仍然

是进入中断前保存的lr的值.由于当函数加上__irq关键字(中断服务函数)时,

编译器在执行中断服务函数之前自动添加上

sub lr,lr,#4

stmfd sp!,{r0-r3,r12,lr}(只压栈r0-r3,r12,lr原因时ARM内核进入中断时默认压栈r4-r7)

.....

ldmfd sp!,{r0-r3,r12,pc}^

注意:IsrIRQ是不可重入的。

 

; 在这里不出现sub lr,lr,#4原因是这里没有出现过函数调用,那么lr仍然
; 是进入中断前保存的lr的值.由于当函数加上__irq关键字(中断服务函数)时,
; 编译器在执行中断服务函数之前自动添加上
; sub lr,lr,#4
; stmfd sp!,{r0-r3,r12,lr}(只压栈r0-r3,r12,lr原因时ARM内核进入中断时默认压栈r4-r7)
; .....
; ldmfd sp!,{r0-r3,r12,pc}^
; 注意:IsrIRQ是不可重入的。

 

  • 关于LPCARM

LPC的ARM我们要着重关心VICVectAddr寄存器,为什么这样说呢?

 

LDR     PC, ResetAddr

LDR     PC, UndefinedAddr

LDR     PC, SWI_Addr

LDR     PC, PrefetchAddr

LDR     PC, DataAbortAddr

DCD     0xb9205f80

LDR     PC, [PC, #-0xff0]

LDR     PC,FIQ_Addr


精析:

    LDR PC,[PC,#-0xff0]的地址为0x18,那么这时PC的指向值是什么呢?我们可以这样计算得到

PC=0x18+8-0xff0=0xfffff030,恰好是VICVectAddr寄存器的地址,而且VICVectAddr保存的是要执行的中断例程的地址,因为当中断发生时,硬件自动把如VICVectAdd0、VICVectAddr1的值复制到VICVectAddr中。

   因此,LPC只要设置好VICVectAdd0类似的地址就可以实现中断了。

转载于:https://www.cnblogs.com/wenziqi/archive/2010/07/11/1775104.html

http://www.lbrq.cn/news/1479277.html

相关文章:

  • 毕业设计题目怎么选题/品牌seo培训咨询
  • 泰州做网站需要多少钱/seo搜索引擎推广什么意思
  • wordpress做外贸站/怎么自己弄一个网站
  • 独立网站建设/网络营销服务平台
  • html网站的直播怎么做/windows优化大师收费吗
  • 赣州淘捷网络科技有限公司/优化师的工作内容
  • 云南省中国建设工程造价管理协会网站/长尾词和关键词的区别
  • 基层人武部正规化建设/厦门搜索引擎优化
  • 山西省建设厅官方网站/关闭站长工具seo综合查询
  • ...无锡网站制作/关键词排名怎么快速上去
  • 中小企业网站建设报告/网站建设合同
  • seo排名快速上升/成都网站关键词推广优化
  • 电子元器件网站建设/模板自助建站
  • 普集网站开发/网上怎么做广告
  • 做视频网站可行吗/广州搜索排名优化
  • 北京网站制作基本流程/站长统计是什么意思
  • 松阳县建设局网站/找代写文章写手
  • 定制头像的网站/汕头企业网络推广
  • 免费做漫画网站/搜索量用什么工具查询
  • 中国建设积分商城网站/网络服务是什么
  • 制作网站建设的公司/西安关键词seo
  • wordpress 3.8 问题/河北网站seo策划
  • 香港建站网站/国产系统2345
  • 网站建设账务处理/怎样进行网络推广效果更好
  • 建设厅网站更改登陆密码/网址大全123
  • 知名建站的公司/搜索引擎排名查询工具
  • 实用的网站/比较好的软文发布平台
  • 高端网站定做/新闻热点事件2021(最新)
  • 建立网站批复/各大免费推广网站
  • 学做网站 软件/刺激广告
  • 2025 腾讯广告算法大赛 Baseline 项目解析
  • 《Java 程序设计》第 14 章 - JavaFX 基础
  • Linux多线程线程控制
  • 在Trae中使用MoonBit月兔
  • 【Excel】制作双重饼图
  • 明智运用C++异常规范(Exception Specifications)