arm嵌入式原理技术及应用h-5arm嵌入式原理技术及应用ch-5arm嵌入式原理技术及应用ch-5arm嵌入式原理技术及应用ch-5.ppt

arm嵌入式原理技术及应用h-5arm嵌入式原理技术及应用ch-5arm嵌入式原理技术及应用ch-5arm嵌入式原理技术及应用ch-5.ppt

  1. 1、本文档共219页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
arm嵌入式原理技术及应用h-5arm嵌入式原理技术及应用ch-5arm嵌入式原理技术及应用ch-5arm嵌入式原理技术及应用ch-5

如果将ARB_SEL2的值设置为01,则一个新的优先级次序将被使用,01对应的优先级次序为0-2-3-4-1-5,处于第2优先级的INT_TIMER1中断现在变成了第5优先级。 ARB_SEL2被设置为00、01、10、11,各个值所出现的情况可以看出,除最高和最低的优先级不变以外,其他各个中断的优先级其实是在做一个旋转排列(rotate)。 令ARB_MODE2=1,ARB_SEL2=00,则当前ARBITER2的优先级顺序为0-1-2-3-4-5。 假设现在该组的1号中断请求INT_TIMER1和2号中断请求INT_TIMER2被同时触发,CPU根据优先级判断后,决定先把INT_TIMER1中断向ARBITER6进行发送,由ARBITER6做最终优先级判断,接着再向ARBITER6发送INT_TIMER2中断。 注意:在INT_TIMER1被处理完毕后,该组中段的优先级次序被自动做了一次旋转,旋转后ARBITER2的优先级顺序变为0-2-3-4-1-5。 假设之后某个时刻该组的INT_TIMER1和INT_TIMER2又被同时触发,则此时CPU优先处理的会是INT_TIMER2。 若另ARB_MODE2=0,则该组的中断优先级次序在任何情况下都不做任何改变,除非人为地重新设置了ARB_SEL2的值。 2) 中断控制器专用寄存器 S3C2410的中断控制器包括8类寄存器: 中断源状态寄存器 中断模式寄存器 中断屏蔽寄存器 中断优先级寄存器 中断服务寄存器 中断偏移寄存器 子源挂起寄存器 中断子源屏蔽寄存器 在程序中不必直接访问相应外设,只需访问相应的内存变量即可实现对指定外设的操作,因为相应的内存变量定位在指定的外设上。这样,对外设的访问看不到相应的指针操作,对结构体成员的访问即可实现对外设相应存储单元的访问,让程序员感觉到仿佛没有外设,只有内存。 例如,一个带有两个32位寄存器的定时器外设,在系统中的物理地址为0其C语言结构描述如下: Struct { volatile unsigned tcfg0; /* 定时器0配置 */ volatile unsigned tcfg1; /* 定时器0配置 */ volatile unsigned tcon; /* 定时器控制 */ volatile unsigned rtcnt0; /* 定时器0值 */ volatile unsigned rtcnt1; /* 定时器0值 */ } timer_regs; 使用分散加载将上述结构体定位到O物理地址,可以将上述结构体放在一个文件名为timer_regs.c中,并在分散加载文件中指定即可,如下: ROM1 0 0 { ……. TIMER 0 UNINIT { timer_regs.o (+ZI) } } ?? 属性UNINIT是避免在应用程序启动时对该执行段的ZI数据段初始化为零。 5.5 嵌入式系统中软件设计 5.5.1 嵌入式C编程规范 在嵌入式开发中,嵌入式C语言是最为常见的程序设计语言,优秀的代码还要具备易读性、易维护性、具有可移植和高可靠性。 1) 嵌入式C程序书写规范 (1)程序块要采用缩进风格编写; (2)较长的语句(例如超过80个字符)要分成多行书写; (3)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分; (4)若函数或过程中参数较长,也要进行适当的划分; (5)一般不要把多个短语句写在一行中; (6)程序块的分界符语句的大括号“{”与“}”一般独占一行并且在同一列; 2 )命名规则 (1)标识符的名称要简明,能够表达出确切的含义,可以使用完整的单词或通常可以理解的缩写; (2)如果在命名中使用特殊约定或缩写,则要进行注释说明; (3)对于变量命名,一般不取单个字符 ,例如i、j、k... ; (4)函数名一般以大写字母开头;所有常量名字母统一用大写。 3 )注释说明 注释有助于程序员理解程序的整体结构,也便于以后程序代码的维护与升级。常用的规则如下: (1)注释语言必须准确、简洁且容易理解; (2)程序代码源文件头部应进行注释说明; (3)函数头部应进行注释; (4)程序中所

您可能关注的文档

文档评论(0)

ganqludp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档