2009-09-22

CPU的启动地址

也就是说,上电后从什么地方取第一条指令。
转自http://bbs.byr.edu.cn/wForum/disparticle.php?boardName=Embedded_System&ID=5841

发信人: ssailing (sailing), 信区: Embedded_System
标  题: Re: CPU启动时执行第一条指令的地址是怎么定的??
发信站: 北邮人论坛 (Sun Sep 20 21:53:52 2009), 站内

这个问题取决于何种类型的CPU
 
1、启动方式
有些CPU有多种启动方式,不同启动方式的启动设备是不一样的
典型的有片内ROM启动,片外flash启动(又分为并口/SPI等不同的接口形式),片外EEPROM启动甚至是RAM启动
如AT91RM9200就有片内ROM启动和片外并口flash启动
TI F2812就有并口flash启动和IIC EEPROM启动
TI C6416只有RAM启动,需要主控CPU将程序下载到RAM中,再触发复位
TI C6488启动方式更是多达五六种 每种都有不同的适用场合 可见多么强大
PPC440启动方式更是多达8种
 
那么这么多种复杂的启动方式是如何选择的呢
通常都是通过硬件管脚控制的 可以设置跳线选择不同的启动方式
CPU上电时会对这些管脚进行采样 选择相应的启动方式
但是大部分CPU通常都只有一种启动方式 即从并口flash启动
 
2、启动地址
选择了某种启动方式后,启动地址通常都是固定的
ARM系统无论从何种设备启动都是从0地址开始运行的
PowerPC通常是0x100或者0xFFF00100,如Freescale MPC82xx系列
为什么有两种呢?默认是从0xFFF00100启动,但是里面有程序后,可配置为从0x100启动
也有从0xFFFFFFFC启动的,如E500及IBM的PPC405GP和440,只有4个字节,通常这里是一个跳转指令
MIPS也有从0x1fc0 0000启动的
至于DSP,那就更复杂了
 
总体来说,嵌入式CPU为了使用特定场合的应用 启动设备繁多
但是ARM的启动方式和启动地址是最简单的了
DSP最复杂 PowerPC有单一的也有多种启动方式的

No comments: