【OK210试用体验】裸机篇 -- 关闭看门狗和设置栈 - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】裸机篇 -- 关闭看门狗和设置栈

【OK210试用体验】裸机篇 -- 关闭看门狗和设置栈

在之前的S5PV210启动流程帖子上有说到,在iROM代码运行的时候,系统自动关闭了看门狗和设置了栈指向。现在来学习一下如何自己来设置。

S5PV210中的看门狗和栈的情况

      看门狗的作用在于监控CPU的运行,保证在诸如噪音和系统错误等故障干扰的情况下能尽快恢复现场正常的工作。但是对于我们写裸机程序来调试,用处不大。看门狗寄存器的地址为0xE2700000。
      在调用C语言函数时,我们常常会去传递一些参数,当参数的个数小于4的时候,我们直接用r0~r3寄存器来完成参数的传递。当传输大于4个的时候,寄存器不够用,所以我们要用到栈来保存现场。
      
      在三星官方的S5PV210的启动流程讲解文档中有这张内存详图,这给我们设置好栈指向的地址做出了指引,我们可以选择指向0XD0037D80,当然也可以选择其他的。

示例程序

简单的汇编程序:关闭看门狗和设置了栈,再调到main函数,其中关闭看门狗只需让其寄存器的值为0,设置栈只需赋予它地址
  1. .global _start

  2. _start:
  3.         // 关闭看门狗
  4.         ldr        r0, =0xE2700000                       
  5.         mov        r1, #0
  6.         str        r1, [r0]

  7.         // 设置栈,以便调用c函数
  8.         ldr        sp, =0xD0037D80                                               

  9.         // 调用c函数
  10.         bl        main                                                       

  11. halt:
  12.         b halt
复制代码


0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-12-22 11:31 , Processed in 0.744787 second(s), Total 65, Slave 46 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表