02.07.2013 Views

Uboot中start.S源码的指令级的详尽解析

Uboot中start.S源码的指令级的详尽解析

Uboot中start.S源码的指令级的详尽解析

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

那么其是如何实现此功能的呢?那么就要简单解释一下其实现原理了。<br />

watchdog 硬件的逻辑就是,其硬件上有个记录超时功能,然后要求用户需要每隔一段时间<br />

(此时间可以根据自己需求而配置)去对其进行一定操作,比如往里面写一些固定的值,俗<br />

称“喂狗”,那么我发现超时了,即过了这么长时间你还不给偶喂食,那么偶就认为你系统<br />

是死机了,出问题了,偶就帮你重启系统。说白了就是弄个看家狗 dog,你要定期给其喂食,<br />

如果超时不喂食,那么狗就认为你,他的主人,你的系统,死机了,就帮你 reset 重启系统。<br />

3.2.2. 为何在要系统初始化的时候关闭 watchdog<br />

了解了watchdog的原理后,此问题就很容易理解了。<br />

如果不禁用watchdog,那么就要单独写程序去定期“喂狗”,那多麻烦,多无聊啊。<br />

毕竟咱此处只是去用uboot初始化必要的硬件资源和系统资源而已,完全用不到这个watchdog<br />

的机制。需要用到,那也是你linux内核跑起来了,是你系统关心的事情,和我uboot没啥关系<br />

的,所以肯定此处要去关闭watchdog(的reset功能)了。<br />

3.3. 为何 ARM7 中 PC=PC+8<br />

此处解释为何ARM7中,CPU地址,即PC,为何有PC=PC+8这一说法:<br />

总所周知,AMR7,是三级流水线,其细节见图:<br />

图表 23 AMR7 三级流水线<br />

首先,对于 ARM7 对应的流水线的执行情况,如下面这个图所示:<br />

ARM7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!