- 浏览: 124766 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jamkier:
getPackageManager().setComponen ...
静态注册的receiver也是可以关闭滴 -
chenpeilei2003:
期待下文
内存映射 -
chenpeilei2003:
好高深啊~
lwip -
阿狸爱吃potato:
楼主好~
我也想编个小程序检测蓝牙连接断开 一直找不到合适的方 ...
静态注册的receiver也是可以关闭滴 -
aniyo:
chenpeilei2003 写道不知道
哦
ubnutu下看root目录
PowerPC简介及编程 | |
|
|
来源: ChinaUnix博客 日期: 2009.06.02 21:43 (共有条评论) 我要评论 | |
PowerPC 是一种 RISC 架构的 CPU ,其基本的设计源自 IBM 的 POWER (Performance Optimized With Enhanced RISC 的缩写)架构。POWER是 1991年 , Apple 、IBM、 Motorola 组成的 AIM联盟 所发展出的 微处理器 架构。PowerPC是整个 AIM联盟 平台的一部分,并且是到目前为止唯一的一部分。 PowerPC 的历史可以追溯到早在 1990年 随RISC System/6000一起被介绍的 IBM POWER 架构。该设计是从早期的RISC架构(比如 IBM 801 )与 MIPS 架构的处理器得到灵感的。 一,PowerPC芯片 PowerPC是早期Motorola和IBM联合为Apple的MAC机开发的CPU芯片,商标权同时属于IBM和Motorola,并成为他们的主导成品.IBM主要的PowerPC产品有PowerPC604s(深蓝内部的CPU), PowerPC750,PowerPCG3(1.1GHz).Motorola主要有MC和MPC系列.尽管他们产品不一样,但都采用PowerPC的内核.这些产品大都用在嵌入式系统中. Motorola公司网址 IBM公司网址 相关文章参见 The PowerPC Triumph PowerPC Today and Tomorrow IBM Pushes to 2GHz The PowerPC Initiative The PowerPC Chip-Is It Future Of Electrinics ? Motorola的MPC860简介(摘录) MPC860 PowerQUICC (Quad Integrated Communications Controller) 内部集成了微处理器和一些控制领域的常用外围组件, 特别适用于通信产品. 包括器件的适应性, 扩展能力和集成度等. MPC860 PowerQUICC集成了两个处理块. 一个处理块是嵌入的PowerPC核, 另一个是通信处理模块( CPM, Communications Processor Module), 通信处理模块支持四个串行通信控制器(SCC, Serial Communication Controller), 实际上它有八个串行通道: 四个SCC,两个串行管理控制器 (SMC, Serial Management Channels), 一个串行外围接口电路 ( SPI, Serial Peripheral Interface ) 和一个I2C( Inter-Integrated Circuit ) 接口. 由于CPM分担了嵌入式PowerPC核的外围工作任务, 这种双处理器体系结构功耗要低于传统的体系结构的处理器.
Performance Frenquency (MHz) TIMER Data Bus Address Bus Ext Intterrupts Int Interruputs Watchdog PACKING 52MIPS @40MHz 40 Four 16-Bit Timers or Two 32-Bit Timers 8/16/32 32 12 16 Software Watchdog BGA357 IBM的PowerPC405GP芯片简介 编程示例可参见 系统初始化 PCI设备初始化和网络分析 32位RISC嵌入式CPU,内核主频达到200MHz PC-100,动态随即存储接口(Synchronous DRAM Interface). 100MHz外围设备总线(External Peripheral Bus)
DMA---,支持外设,内部UART和内存,4个通道 PCI总线接口---可设置同步,异步内置时钟 以太网(Ethernet)----支持10/100Mbps全双工(Full-duplex) 媒介独立接口(Medium Independent Interface(MII) 可编程中断控制器(Programmable Interrupt Controller)----支持来自不同资源的中断
CPU一次只能处理一个中断,共有18个中断优先级(priority order) 32位地址线可达4GB的寻址空间 主要控制器包括: SDRAM存储控制器,外部设备总线控制器(EBC),DMA控制器,UART,IIC总线接口,通用寄存器控制器(General Purpose I/O Controller),通用中断控制器(Universal Interrupt Controller, UIC), JTAG. 两个总线分别支持不同的外设
先进的功能
驱动PowerPC405GP的PowerPC405B3内核包括
一个64位累加计时器,由CPU时钟驱动 三个计时器:可编程内部计时器(Programmable Internal Timer,PIT),固定内部计时器(Fix Internal Timer,FIT),看门狗计时器(Watch Dog Timer,WDT) 二,VxWorks装入PowerPC的过程 RISCWatch 是一套软件和硬件开发工具, 主要为IBM PowerPC 600/700系列微处理器和IBM PowerPC 400系列嵌入式处理器提供软硬件, 开发, 调试. 开发板JTAG口 (一般开发版都会甩出一个JTAG接口供开发调试用 ) 连出一个2*8针的接头与RISCWatch的仿真器端相连, 仿真器另一端通过网络连到装有RISCWatch软件的PC机. 不同种类的处理器JTAG管脚的定义不同, 所以和2*8针的接头连接也不同, 具体连结方法参见RISCWatch用户手册. 通过软件和一个配套的硬件仿真器将VxWorks image写入512K的Flash Socket. RISCWatch一端接板子上的JTAG接口,另一端接网络Network. RISCwatch的执行过程顺序: 初始化RAM-------->清理ROM-------->写VxWorks image .bin到FlashRom 用RISCwatch装入VxWorks的操作过程 1.运行RISCwatch: 打开file----->command file------>flashwri.cmd 2.开启Normal 初始化RAM, 在编辑框中键入run, 开始向FlashRom中写入Bootrom.bin,写入完成,键入stop,至此写入完成 系统复位后, VxWorks运行,讲程序写入RAM中的各个地址 RISCwatch中的文件定义 文件rwppc.env: 可更改,如chip type, PC405GP等 文件flashwri.com: 可以察看,改变,如IP地址,load...., .out, .bin 文件flashprog.c: 输出生成 .out, 是写flash Rom 的文件, 写入 .bin 三,调试工具及调试方法 底层驱动调试 RISCWATCH 是一种很好的调试工具,观察内存情况及程序运行. 通过计算机串口与处理器UART相连,设置计算机的超级终端(Hyper Terminal), 通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令,用Beep报警也是经常用的.这种调试方法是用于底层调试硬件,找出硬件存在的问题. VxWorks 在Tornado Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP. 以上是Shell不能正常运行是所采取的方法,Shell正常运行后,Shell是最好的调试工具. 上层应用程序调试跟踪 Tornade2.0中Debuger和Shell是最好的调试工具,可以单步执行跟踪程序运行,观察内存情况和系统资源情况.其中Shell的功能要好于Debuger,不过Debuger操作较为容易,直观. 四,内存映射 MPC860的内存资源(如寄存器等)映射在一个连续的16K Block存储区内,可通过SPR中的Internal Map Memory Register(IMMR)进行解析 对 Memory Registers 操作的几种方式 Indirectly Access Registers Via Memory-----------------------通过指定的I/O寄存器(I/O port)对一个寄存器操作, 如PCI部分I/O操作示例如下: PCI地址I/O寄存器: PCICFGADR 0xEEC00000 PCI数据I/O寄存器: PCICFGDATA 0xEEC00004 具体操作方法:将所要读写的寄存器地址写入PCI地址I/O寄存器PCICFGADR,从PCI数据I/O寄存器PCICFGDATA读出数据,这个数据就是写入地址的寄存器的数据. RegAddr = 0x80000000 | ((offset|BusDevFunc) & 0xFFFFFFFC); RegAddr寄存器地址, 0x80000000 PCI core Address, offset寄存器偏移量 /* * 写RegAddr到PCI I/O地址寄存器PCICFGADR */ sysPciOutLong(PCICFGADR, RegAddr); /* * 从PCI I/O数据寄存器读RegAddr数据data */ data = (unsigned int)sysPciInByte(PCICFGDATA | (offset & 0x3)); Directly Access Registers Via Memory-------------------------直接对寄存器操作 Indirectly Access Registers Via DCR-----------------------------同上, Directly Access Regesters Via DCR-------------------------------同上, 五,PowerPC内核定义 双处理器结构既提供了程序运行的通用处理器,又提供了用于通信用处的特殊通信处理器(CPM). 32位PowerPC结构特点
名称 内存物理地址 备注 SDRAM 0x00000000~0x7FFFFFFF PCI 0x80000000~0xEF5FFFFF Internal Peripherals 0xEF600000~0xEFFFFFFF UART ..... ..... ..... External Peripherals 0xF0000000~0xFF7FFFFF NVRAM/RTC 0xF0000000~0xF0001FFF (8K)下画线为片选 Keybord/Mouse 0xF0100000~0xF0100001 下画线为片选 FPGA_INT_ST.. 0xF0300000~0xF0300000 下画线为片选 FPGA_INT_EN.. 0xF0300001~0xF0300001 下画线为片选 Socket Flash 0xFFF80000~0xFFFFFFFF 512K SRAM 0xFFF00000~0xFFF7FFFF 512K(可通过Swich与Socket Flash 切换)
Priority Exception Type Cause 1 Development port nonmaskable interrupt Signal from the development port 2 System reset interrupt IRQ0 assertion 3 Instruction-related exceptions Instruction processing 4 Peripheral breakpoint request or development port maskable interrupt Breakpoint signal from any peripheral 5 External interrupt (masked if MSR[EE] = 0) Signal from the interrupt controller 6 Decrementer interrupt(masked if MSR[EE] = 0) Decrementer request
中断 极性 触发方式 中断源 0 正(High) 电平(Level) UART 0 1 正(High) 电平(Level) UART 1 2 正(High) 电平(Level) IIC 3 正(High) 电平(Level) External Master 4 正(High) 电平(Level) PCI 5 正(High) 电平(Level) DMA Channel 0 6 正(High) 电平(Level) DMA Channel 1 7 正(High) 电平(Level) DMA Channel 2 8 正(High) 电平(Level) DMA Channel 3 9 正(High) 电平(Level) MAL Wake UP 10 正(High) 电平(Level) MAL SERR 11 正(High) 电平(Level) MAL TXEOB 12 正(High) 电平(Level) MAL RXEOB 13 正(High) 电平(Level) MAL TXDE 14 正(High) 电平(Level) MAL TXDE 15 正(High) 电平(Level) Ethernet 16 正(High) 电平(Level) External PCI SERR 17 正(High) 电平(Level) ECC Correctalbe Error 18 正(High) 电平(Level) PCI Power Management .... Reserved 25 Programmable Programmable External IRQ 0 26 Programmable Programmable External IRQ 1 27 Programmable Programmable External IRQ 2 28 Programmable Programmable External IRQ 3 29 Programmable Programmable External IRQ 4 30 Programmable Programmable External IRQ 5 31 Programmable Programmable External IRQ 6
中断向量表的其实地址取决于MSR[IP]的设置,IP位定义如下: Exception preTx. The setting of IP speciTes whether an exception vector offset is prepended with Fs or 0s. In the following description, nnnnn is the offset of the exception vector. See Table 7-1. 0 Exceptions are vectored to the physical address 0x000n_nnnn 1 Exceptions are vectored to the physical address 0xFFFn_nnnn The reset value of IP is determined by the IIP bit (bit 2) in the hard reset confguration word. Offset Exception Description 0x00000 Reserved 0x00100 System reset interrupt 0x00200 Machine check interrupt 0x00300 DSI A DSI exception is never generated by hardware, but software may branch to this location because of an data TLB error or miss exception. 0x00400 ISI An ISI exception is never generated by the hardware, but software may branch to this location because of an implementation-speciTc instruction TLB error exception. 0x00500 External Interrupt … … … 这个表结合地址映射表可知系统复位的地址是 Socket Flash地址+系统复位偏移地址 = 0xFFF80000 + 0x0100 = 0xFFF80100,即系统通电后,跳到0xFFF80100的位置开始执行程序. MPC860串口中断过程 MPC860集成了两个处理块,一个处理块是嵌入的PowerPC核,另一个是通信处理模块(CPM).通信处理模块有4个SCC和2个SMC,这六个通信口可以通过设置来支持多种协议和通信方式,也可设置为串口UART模式(是通过寄存器GSMR或SMCMR),功能和中断的定义和通常的串口定义基本是一致的在寄存器SCCM/SCCE的位14和位15定义了在何种情况下产生硬件中断. 根据MPC860中SCC UART Event Register(SCCE)的位14和位15定义,位14是数据发送中断标志位,位15是数据接收中断标志位,首先设置SCC UART Mask Register(SCCM)的位14和位15为1,使能接受和发送中断. 如果串口收到数据,则产生硬件RX中断,SCCE为15置1,通知系统有数据到达,有相应的中断例程ISR来取数据. 发送的情况下,数据FIFO为空,产生TX中断,告诉系统发送准备就绪,可以发送,ISR把数据放入FIFO中,发送中断位清零.当发送完毕后,FIFO再为空,再次产生中断,告诉系统发送准备就绪,继续发送. MPC860片选信号的编程方法 在MPC860中,有片选信号CS0,CS1,...,CS7对他们的操作主要是要改变片选信号的电平 一般来说片选信号的发生是对和这一片选线相关联的地址进行操作(读写)时片选信号改变。片选信号通常为低电平有效。比如MPC860的CS0是boot rom,硬件reset后,CPU会从boot rom的起始地址开始执行,CS0变为低 电平。 CS0\ ____ 片选型号 | |____________________ we\ _____ 写有效 | |_____________________ data _______ __ __ 数据信号 | | | | | |_| |_| | 所以只要对一个相应的地址操作,和这个地址芯片(bank)相连的CSx就会改变。 MPC860对CSx分配地址空间的在BRx中定义,BR0,BR1...BR7分别对应8个片选线CS0--CS7。 System Reset Interrupt (0x00100) A system reset interrupt occurs when IRQ0 is asserted. When the exception is taken, processing begins at offset 0x00100. A hard or soft reset also causes program execution to begin fetching at 0x00100 after the associated reset actions. Register Setting SRR0: Set to the (Effective Address) EA of the next instruction of the interrupted process. SRR1: Saves the machine status prior to exceptions and to restore status when an r f iinstruction is executed. 1-4 ,-------0 10-15,--- 0 Others Loaded from MSR[16-31]. SRR1[30] is cleared only by loading a zero from MSR[RI]. MSR : IP No change ME No change LE Value of MSR[ILE] of the interrupted process. Others -----0 External Interrupt Exception (0x00500) In the MPC860 the external interrupt is generated by the on-chip interrupt controller. It is software acknowledged and maskable by MSR[EE], which hardware clears automatically to disable external interrupts when any exception is taken. Register Settings after an External Interrupt Register Setting Description SRR0 Set to the effective address of the instruction that the processor would have attempted to execute next if no interrupt conditions were present. SRR1: 0, Loaded with equivalent bits from the MSR 1-4, Cleared; 5-9, Loaded with equivalent bits from the MSR; 10-15, Cleared; 16-31, Loaded with equivalent bits from the MSR Note that depending on the implementation, reserved bits in the MSR may not be copied to SRR1. MSR POW 0; ILE --; EE 0; PR 0; FP 0; ME --; SE 0; BE 0; IP --; IR 0; DR 0; RI 0; LE Set to value of ILE Hard Reset ConTguration Word The hard reset configuration word is sampled from the data bus. These bits determine the default values of the corresponding bits in the SIUMCR, IMMR, and MSR. IIP:bit1: Initial interrupt prefix. Defines the initial value of the MSR[IP] which defines the interrupt table location. If IIP is cleared (default), the MSR[IP] initial value is one; if it is set to one, the MSR[IP] initial value is zero. ISB:bit 7-8, Initial internal space base select. Defines the initial value of the IMMR bits 0-15 and determines the base address of the internal memory space. 00 0x00000000. 01 0x00F00000. 10 0xFF000000. 11 0xFFF00000. |
发表评论
-
lwip
2013-05-22 14:53 2056动态内存管理 memp_sizes数组 const ... -
lwip 学习
2013-05-08 10:48 0LWIP socket send ... -
(转)ANSI,ASCII,Unicode的区别与联系
2012-12-20 10:48 682很久很久以前,有一群 ... -
内存映射
2012-12-18 15:49 2958最近在做文件系统时粗看了下linux和windows对缓存不同 ... -
FAT32
2012-11-26 09:41 0前段时间用到了FAT32,针对FAT32进行了相关的学习。 ... -
端口sockettcpip
2012-07-10 15:49 813疑惑一个问题 tco/ip和socket到底是什么关系?为什么 ... -
错误: 17883
2012-05-21 09:58 1046症状:发现一台2000的服务器上一个数据库打不开,只是一个库。 ... -
A*算法
2012-04-18 09:58 1560*搜寻算法俗称A星算法,从DFS和BFS中来。 DFS算 ... -
JTAG/SWD
2012-03-30 09:50 8484JTAG接口 1 JTAG( ... -
【(转)整理】open-drain, push-pull,MOSFET, MOS管,三极管等基础知识
2012-03-29 13:45 7078【open-drain与push-pull】 GPIO ... -
详解大端模式和小端模式(转)
2012-03-20 17:48 1456详解大端模式和小端模式 一、大端模式和小端模式的起源 ... -
理解嵌入式开发中的一些硬件相关的概念(转)
2012-03-20 17:42 1015理解嵌入式开发中的 ... -
ARM和X86功耗差别的深层原因探讨(转来的)
2012-03-16 11:11 1182怕自己会忘记,还是放到自己的仓库里面才安心! ARM ... -
最全的编码总结笔记(转来的)
2012-03-15 13:18 645怕自己会忘记,还是放到自己的仓库里面才安心! 1. ASCI ...
相关推荐
标签"powerpc_eabi"、"powerpc_eabi_tools"和"powerpc"、"powerpc_abi"再次强调了PowerPC EABI和相关的开发工具,以及与PowerPC架构的整体关联。 压缩包内的"eabi_app.pdf"很可能是关于PowerPC EABI的详细技术文档...
PowerPC 603e 和 EM603e 微处理器简介 PowerPC 603e 和 EM603e 是由IBM开发的高性能微处理器,它们继承了PowerPC系列的优良特性,并在此基础上进行了优化升级,特别是在功耗控制和性能提升方面有着显著进步。这两...
《PowerPC Linux编程手册》是一本为使用PowerPC架构处理器进行Linux系统编程的专业人员提供的参考指南。本手册不仅覆盖了PowerPC架构的基础知识,还深入探讨了其在Linux环境中的高级编程技术,尤其是与Freescale ...
### 基于PowerPC开发板的Flash编程方法与实现 #### 一、引言 在嵌入式系统开发过程中,Flash(闪存)扮演着至关重要的角色,它被广泛用作存储介质来存放Boot程序、嵌入式操作系统等关键数据。然而,在实际开发过程...
解压后,开发者可以查看和运行这些代码,加深对PowerPC编程的理解。同时,这个zip文件可能还包含编译器、调试器等开发工具,帮助开发者建立完整的开发环境。 学习和掌握飞思卡尔PowerPC架构的编程,需要深入理解...
GCC(GNU Compiler Collection)是开源社区维护的一套编译器,支持多种编程语言和多种处理器架构,包括PowerPC。在powerpc-eabivle-4_9中,GCC提供了解析、优化、生成机器代码等功能,使得开发者可以在PC上编写针对...
PowerPC 汇编语言原理及使用详解 本文将对 PowerPC 汇编语言原理及使用进行详细解释,涵盖 PowerPC 指令集、处理器架构、汇编语言基础、内存模型和获取-执行周期等内容。 1. PowerPC 指令集 PowerPC 指令集是 IBM...
此外,中卷可能会涵盖PowerPC的异常和中断处理机制,这对于系统级编程和实时操作系统(RTOS)的开发至关重要。还有,可能会介绍PowerPC的内存管理单元(MMU)和存储系统,包括分页机制、缓存管理和一致性协议,这些...
总结,"PowerPC 开发指南"将引导开发者深入了解PowerPC架构的细节,从处理器特性到开发工具的使用,再到实际编程和系统设计,全面覆盖了在PowerPC平台上进行软件开发所需的知识。通过学习这些内容,开发者可以更好地...
本手册将为嵌入式开发人员提供PowerPC的编程指导,帮助他们更好地理解和利用这一强大的处理器架构。 1. PowerPC架构概述: PowerPC架构基于开放标准,采用五级流水线,支持动态执行技术,具备出色的并行处理能力。...
在PowerPC指令集中,有一些关键的指令类型,例如Load和Store用于数据的存取,Arithmetic运算指令涵盖了加减乘除及逻辑运算,Branch指令则用于流程控制,如跳转、条件分支等。此外,还有浮点运算指令集,支持单精度和...
"PowerPC assembly"和"PowerPC Programming By the Book A Developer's Guide to the PowerPC architecture"这两份资料可能深入解析了PowerPC汇编语言的细节,包括指令语法、寄存器使用和实际编程实例。 "Reference...
在文档的前言部分,指出该文档定义了除了PowerPC用户指令集架构和PowerPC虚拟环境架构之外的额外指令和设施,这意味着它涵盖了更深层次的技术细节,如操作系统接口、硬件抽象层、设备驱动模型以及与之相关的编程指南...
基于PowerPC处理器硬核的片上可编程系统应用的设计及验证
PowerPC汇编语言是针对PowerPC架构处理器的一种低级编程语言。它提供了对PowerPC硬件的直接访问能力,使得开发者能够更精细地控制程序的执行过程。PowerPC汇编指令集包括了多种不同类型的指令,例如算术运算、逻辑...
PowerPC AS 体系结构是 IBM 为了满足它的 eServer pSeries UNIX 和 Linux 服务器产品家族及它的 eServer iSeries 企业服务器产品家族的具体需要而定义的。PowerPC Book E 体系结构是 IBM 和 Motorola 为满足嵌入式...
汇编语言是与硬件紧密相关的低级编程语言,对于理解和优化PowerPC平台的程序性能至关重要。下面将详细介绍PowerPC汇编指令及其相关知识点。 1. 数据类型与寄存器: PowerPC架构使用多种数据类型,包括字节(byte)...
在深入学习PowerPC底层编程及问题解决的过程中,了解其基本架构、指令集、内存管理、中断处理、异常处理等核心概念至关重要。 1. **PowerPC架构**:PowerPC采用多级流水线、动态分支预测和超标量设计,提高了处理器...