|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
最近一段时间,一直在学习MPC8272相关的东西,现在把学到看到的东西记录下来,网上关于powerpc的资料好像很少,讨论的也不多,所以我拿出来分享一下,希望对哪里存有质疑或者疑问的朋友可以把问题提出来,大家一起交流。实际上我用的芯片是8247,但是文档都是通用的。
第一部分:MPC8272处理器上电启动首先,在PowerPC 603e内核中,重置有很多种情况,比如上电重置,看门狗重置,软重置,硬重置,当然越软的重置需要进行初始化的内容就越少,这里从相对最复杂的上电重置进行说明,内核支持硬件重置配置字(HRCW),处理器上电者复位后,拉低#PORESET外部引脚(在引脚名称前面加#表示取反),进入上电重置流程,在外部电压到达至少2/3 Vcc后,#PORESET引脚至少被持续16个输入时钟周期。当#PORESET从低到高发生跳转时,驱动#RSTCONF引脚决定芯片的配置,如果这时候#RSTCONF是高电平,则芯片在配置过程中作为从设备,当它是低电平时则作为一个配置主设备。进行配置主从的选择后,MPC8272开始进行设置。在整个上电重启以及配置过程中,#HRESET和#SRESET都必须是拉低状态。配置过程花费1024个CLOCKIN周期,之后读取MODCK[1:3]用来决定芯片的工作模式,这段时间 MPC8272处理器挂起直到主PLL(锁相环)稳定。PLL的锁定以及分频器的确定都是与时钟模式有关的,在每种时钟模式下,总线,核心,PCI以及CPM的频率都是取决于MODCK,MODCK一共有7位,MODCK[1:3]是三个硬件配置引脚,MODCK[4:7]也就是硬件配置字中的MODCK_H 4位。当主PLL稳定后,向其他设备分配时钟信号。#HRESET继续保持512个时钟周期后释放,#RESET在再经过三个时钟周期后释放。关于重置配置(硬件重置配置字),32位,复位后,首先从CS0空间地址为0x0,0x8,0x10,0x18处,通过数据总线D[0:31]读取4个字节的配置字节,分别取D0--D7位,将他们拼接成一个32位HRCW(如果有多个处理器,它会接着按相同的方式从0x20-0xF8读取其他slave的HRCW,当系统治右一个处理器时,这些字节仅仅保留空间)。硬件重置配置字可以储存在flash或者EEPROM中,如果有需要,可以启动设备的指定地址写入配置字节,以供设备启动加载。在以后的u-boot代码分析中,就会说明写硬件重置配置字的过程。主要配置内容(启动存储器端口宽度,系统时钟配置,CPU内部寄存器地址空间的起始地址等,e.g. BPS=01:启动存储器既EEPROM端口宽度为8位;BMS=0:启动存储器的地址空间为0xFE00 0000—0xFFFF FFFF;这个地址是EEPROM的问题,可以理解成把EEPROM映射到这个地址,这些地址与EEPROM选址相对应。ISB=100:CPU内部寄存器空间起始地址为0xF000 0000;MODCK_H=1010:与MODCK[1:3]=100配合,决定PLL倍频因子为4,即系统时钟为400MHz)随后处理器执行一个系统重启异常,中断向量偏移量对应的地址为0x100,即为向量号,异常向量表所在内存空间的位置根据HRCW可能有0x0000 0000和0xFFF0 0000两个,与向量号相加后,得到中断地址,由于内部CS0片选已经与flash或者EEPROM相连,所以直接从EEPROM或者flash连接的位置偏移0x100开始读指令。但是最后跳转的时候我有些不确定,对于CS0片选,我是把它理解成把flash存储器映射到以CS0所指的位置为基地址的一段存储空间上,分为高地址和低地址两种,即0x0地址和0xfff0 0000地址,但是偏移的0x100是从这个地址跳入flash中呢?还是在flash中需要有0x100的偏移量? |
|