天天看点

嵌入式CPU的启动方式和启动地址

嵌入式CPU的启动方式和启动地址

sailor_forever  sailing_9806#163.com

http://blog.csdn.net/sailor_8318/archive/2009/09/20/4573932.aspx

CPU上电后从哪里开始执行第一条指令?

答案可是千差万别 或许这是嵌入式CPU区别于X86等桌面处理器的一大特点

具体从哪启动是取决于何种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,如FreescaleMPC82xx系列

为什么有两种呢?默认是从0xFFF00100启动,但是里面有程序后,可配置为从0x100启动

也有从0xFFFFFFFC启动的,如E500及IBM的PPC405GP和440,只有4个字节,通常这里是一个跳转指令

MIPS也有从0x1fc0 0000启动的

至于DSP,那就更复杂了

总体来说,嵌入式CPU为了使用特定场合的应用 启动设备繁多

但是ARM的启动方式和启动地址是最简单的了

DSP最复杂 PowerPC有单一的也有多种启动方式的

另附一个参考文档

http://blog.mcuol.com/User/emblinux/Article/13496_1.htm