当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]S3C44B0的初始化程序的理解

S3C44B0初始化程序就是初始化各个关键的寄存器,建立中断向量,然后转移到主函数去执行程序。不过S3C44B0不支持地址映射,所以程序不COPY到RAM种执行。S3C44B0初始化对我们广大初学者来说,比较难理解的是中断的处理和一些少见的操作符号,S3C44B0的中断子程序地址存放在初始化程序最后就是

  HandleADC # 4

  HandleRTC # 4

  HandleUTXD1 # 4

  HandleUTXD0 # 4

  HandleSIO # 4

  HandleIIC # 4

  HandleURXD1 # 4

  HandleURXD0 # 4

  这一段,它的其实地址是ISR_STARTADDRESS,个人写中断程序的时候,子程序地址被编译器连放在相应的位置。初始化完成后,程序转通过BL Main 转到用户定义的主程序上执行。以下是我个人的一些理解,有错误的地方希望大家指出来。

  GBLL THUMBCODE

  [ {CONFIG} = 16

  THUMBCODE SETL {TRUE}

  CODE32

  |

  THUMBCODE SETL {FALSE}

  ]

  [ THUMBCODE

  CODE32 ;for start-up code for Thumb mode

  ]

  ×××××××××××××××××××××××

  其中[=IF ,|=ELSE ,]= ENDIF, CODE32 表明一下操作都在ARM状态。这些都是伪操作

  这段我理解为设定THUMCODE的值,然后确定,用户的程序是在ARM状态还是THUM状态。不过不管THUMCODE是何值,下面代码都是ARM状态

  这段没有什么很复杂的,就是这三个[,|,]操作符让我迷惑了半天,翻了半天书才找到解释

  MACRO 宏 伪操作

  $HandlerLabel HANDLER(宏的名称) $HandleLabel(宏的参数)

  $HandlerLabel

  sub sp,sp,#4 ;decrement sp(to store jump address)

  stmfd sp!,{r0} ;PUSH the work register to stack(lr does't push because it return to original address)

  ldr r0,=$HandleLabel;load the address of HandleXXX to r0

  ldr r0,[r0] ;load the contents(service routine start address) of HandleXXX

  str r0,[sp,#4] ;store the contents(ISR) of HandleXXX to stack

  ldmfd sp!,{r0,pc} ;POP the work register and pc(jump to ISR)

  MEND

  *******************************

  这段当初我觉得比较难理解,不过通过看各种程序,对这段有了一个基本的理解。这个宏的作用是把各个中断程序的地址装入当前的PC,44B0有两种装断模式 一种是没有中断向量表,一种是使用中断向量表的

  使用中断向量表只能是IRQ方式,当使用中断向量表的时候,中断发生时由44B0的中断控制器自动跳转到

  相应的位置。比如在中断向量表的模式下,一个外部中断0发生程序自动跳转到 地址0X20处,0X20地址单元的指令时ldr pc,=HandlerEINT0

  因而程序PC跳到HandlerEINT0处,执行这个宏操作,把外部中断的函数的地址赋给PC。 44B0里面定义了一个

  #define pISR_EINT0 (*(unsigned *)(_ISR_STARTADDRESS+0x84)) ,_ISR_STARTADDRES是中断程序地址的起始地址,_ISR_STARTADDRESS+0X84是HandleEINT0的地址

  例如一个外部中断函数名void EXINT(),程序里执行 pISR_EINT0=(unsigned)EXIT,就把自己的函数地址赋给了标号为HandleEINT0处的内存单元

  IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data)

  IMPORT |Image$$RW$$Base| ; Base of RAM to initialise

  IMPORT |Image$$ZI$$Base| ; Base and limit of area

  IMPORT |Image$$ZI$$Limit| ; to zero initialise

  ××××××××××××××××××××××××××××××××××

  这段我个人的理解为这些是连接器生成的于输出段相关的符号,是在没有使用SCATTER文件的情况可以调用。这段指出了在ROM和RAM种的数据的地址,这些地址应该是连接器生成的,不过为什么能调用

  连接器生产的符号,我不大明白其中的原因,还希望各位说说自己的理解

  IsrIRQ ;using I_ISPR register.

  sub sp,sp,#4 ;reserved for PC

  stmfd sp!,{r8-r9}

  ;IMPORTANT CAUTION

  ;if I_ISPC isn't used properly, I_ISPR can be 0 in this routine.

  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}

  ×××××××××××××××××××××××

  这段是没有使用装断向量模式下如何装载中断子程序,因为44B0有30个中断源,所以需要程序处理以确定调用那个中断程序

  0,1是局部标号,%B是向后搜索局部标号, %F是向前搜索局部标号 。都是伪操作

  I_ISPR寄存器各位表明发生了应该调用那个中断子程序。只能1位置位,其它位为0,比如说串口1发送中断发生,这时I_ISPR的

  值为0X04,ldr r9,=I_ISPR

  ldr r9,[r9] 两条指令后,r9的内容为0X4 ,

  movs r9,r9,lsr #1 r9内容右移一位

  bcs %F1 判断是否把置位是否转移到C位,

  add r8,r8,#4 如果没有的R8加4

  如果r9内容为0x04 需要右移3次 ,之后r8的内容为8 然后HandleADC的地址 加上r8的值 就是串口1发送中断的地址,这个地址的内容是中断子程序的地址

  再说明几个伪操作:^=MAP. #=field

  别的方面我觉得比较容易理解了,就不多讲了。
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2023年9月21日 /美通社/ -- 作为"基因工厂"概念的提出者和践行者,擎科生物始终坚持数字赋能技术创新的理念,在基因工厂各环节进行关键性技术突破,以实现基因合成自动化、智能化生产,推动科学...

关键字: 高通 自动化 TIMES 全自动

TDengine TSBS 基准测试结果显示查询性能达到 InfluxDB 的 37 倍、TimescaleDB 的 28.6 倍 北京2023年2月22日 /美通社/ -- 2月21日,开源、高性...

关键字: ENGINE LED TIMES 数据库

上海2022年12月20日 /美通社/ -- 当前我国疫情防控面临新形势,新冠病毒的防与治已成为全民关注的社会热点。继平安健康(港股上市名称:平安好医生)上线防疫咨询专区,并为平安集团旗下多个客户端入口升级上线免费"新冠...

关键字: 防护 大众 AI技术 TIMES

佛山2022年12月20日 /美通社/ -- 沿着高质量发展航道,中国经济巨轮破浪前行,越来越多中国企业加快建设、塑造优势,在新发展格局中彰显品牌力量。恒洁卫浴作为家居新国货代表品牌,创立24年以来,始终肩负“...

关键字: 智能马桶 BSP NAS TIMES

上海2022年12月5日 /美通社/ -- 12月1日,上海德达医院胸外科/肿瘤科正式迁入医疗楼3C独立病区,舒适宽敞的环境、整洁优雅的配套设施让患者感受到了"家"一样的舒适。新病区的启用,标志着上海...

关键字: VI 医疗服务 CE CODE

重塑好物"麦麦绿色餐盘"长三角首发,亮相进博会 上海2022年11月7日 /美通社/ -- 第五届中国国际进口博览会开幕之际,麦当劳中国重塑好物"麦麦绿色餐盘"将亮相国家会展中心...

关键字: TIMES 色环 供应链 RS

韩国海洋水产部(海水部)表示,从10月24日起允许外国游客搭乘邮轮入境及下船旅游,但所有船员和乘客须遵守国内防疫规定。根据规定,所有乘客和船员在邮轮内的剧场、餐厅等室内公共设施须佩戴口罩,入境前须通过检疫信息登记系统(Q...

关键字: CODE

(全球TMT2022年9月6日讯)近年来美网在提升数字体验方面下了功夫,这背后,作为赛事主办方美国网球协会 (USTA)长期合作伙伴的IBM及其众多数字化解决方案功不可没。很长时间以来,IBM Consulting与美...

关键字: IBM 数字化 应用程序 CODE

-- VMLY&Rx助力雅培瞬感突破品类圈层,场景化诠释健康控糖生活方式 上海2022年9月6日 /美通社/ -- 现下的流行趋势,追剧要追甜宠剧,收获糖点;饮食则追低糖型,收获健康。中商产业研究院的数据显示,...

关键字: 医疗器械 TIMES 监测系统 血糖

首发500瓶 -- 美自东方,耀目登场 官宣 -- 贺兰山×SHANG XIA联名霄峰·凌顶正式发布 上海2022年8月29日 /美通社/ -- 8月26日晚,贺兰山X SHANG XIA联...

关键字: AN 国美 MIDDOT TIMES
关闭
关闭