Chinaunix首页 | 论坛 | 博客
  • 博客访问: 132262
  • 博文数量: 38
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 191
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-16 11:31
个人简介

嵌入式新人

文章分类

全部博文(38)

文章存档

2016年(38)

我的朋友

分类: 嵌入式

2016-05-23 20:54:44


1 看门狗的关闭

      看门狗(WatchDog)的作用是在系统跑飞时能够自动复位,重启系统。嵌入式系统启动过程中,启动代码段不方便去喂狗,所以须在启动代码前端关闭看门狗,当系统启动完成后,再打开看门狗(一旦打开就必须同时提供喂狗),S5PV210内部的iROM代码(BL0)中,已经关闭了看门狗(见图),所以我们这里仅是理解看门狗的原理。

  S5PV210的section7.3.4给出了看门狗的寄存器,可知关闭看门狗功能,仅需将WTCON寄存器的bit5设为0,因此代码如下

点击(此处)折叠或打开

  1. #define WTCON 0xE2700000

  2. ldr r1, =WTCON
  3. ldr r0, =0x00008001
  4. str r0, [r1]




2 iCache的关闭和启用

S5PV21032KBiCache32KBdCache(见图),iROM代码(BL0)已经对iCache进行了初始化iCache(即Enable iCache),为了切实体会启用iCache和关闭iCache的差异,我们在裸机程序中分别启用iCache和关闭iCache,观察LED闪烁的情况。



可以通过以下代码进行
iCache的关闭和启用。

点击(此处)折叠或打开

  1. mrc p15,0,r0,c1,c0,0; // 读CP15的c1到r0中
  2. bic r0, r0, #(1<<12) // bit12 置0 关闭iCache
  3. orr r0, r0, #(1<<12) // bit12 置1 启用iCache
  4. mcr p15,0,r0,c1,c0,0; // 写r0到CP15的c1中
  5. // ARM的iCache由协处理器CP15进行控制,其他具体知识请GOOGLE。

代码(5.rar)make后,将LED.bin烧写到开发板上后(修改start.S中第三步代码关闭/启用iCache)),我们可以观察到

 序号

 操作

 现象和结论

 1

 使用代码关闭iCache

关闭iCacheLED闪烁速度慢

 2

使用代码启用iCache

启用iCacheLED闪烁速度快

3

直接使用BL0

 LED闪烁速度快,BL0初始化时启用了iCache

注:代码引用朱友鹏老师的课程,在此表示感谢。

阅读(2155) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~