您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

SoC前段(ARM)嵌入式体系开辟实作训练(上)

发布日期:2011-04-17

    一个嵌入式体系的内核在于CPU,当CPU选定后,其他的题目就可渐渐就绪。SoC嵌入式体系的实现可把它分为:一应用型SoC嵌入式体系、开辟型SoC嵌入式体系二种型态,这二种型态的软硬件开辟有着不小的差别,但起首遇到的都是CPU的选定。这里笔者会针对它们的异同处做阐明,再来形貌ARM CPU、指令、体系办理、开辟实作训练平台(PreSoCes)、Linux与进程等,以创建SoC嵌入式体系的团体表面见解,并在实作中作育、训练出开辟技能与创新本领。

     应用型SoC嵌入式体系是指在一个现成的SoC元件上参加软件(或OS),使成一体系;而开辟型SoC嵌入式体系是指SoC元件还在建构中,它会选择仅实用的IP包入并做底层软件测试,以方便将来创建OS,而达成最有竞争力的组合。应用型SoC嵌入式体系所要面对的题目有:选用Turn-key(雏型半成品)方案或本身建构方案、CPU选择、OS选择,以及开辟东西、ICE、Debugger、Compiler等的选择,每一种都相相互关,因此要站在体系产品开辟的角度来考量。

     倘若是选用Turn-key方案,那只要修改部分本身想要的软件即可,这种产品多数属于大量生产又具市场快速反响的特质。软件是体系产品成果的显现,体系多数会挂上一OS,因ARM CPU的计划便是为了放上OS而计划的,因CPU有好几种实行模式以方便task switch用。软件可分为BIOS、Kernel、Device driver、Application S/W等。

     在Linux OS上就有Debug的成果,方便软件除错,对付Application软件来说是方便的,但碰上BIOS与Device driver就不敷以应付了,就像早期产品开辟一样,烧入进程再想想错在那边,多么没有服从,因此要是有ICE与Debugger东西,那就更有服从了。

     至于开辟型SoC嵌入式体系多数是SoC IC计划公司的开辟型态,SoC的内含是由市场需求而定位出,一个个IP元件再渐渐加上去,并验证之。但题目在于,纯软件的验证着实很难完全到达Co-design的100%验证,在没有更美满的办理之前,其他的方法就因应而生。也由于FPGA技能快速的进步,就把它拿来当成新参加IP成果验证的硬件元件,不但云云,更方便软硬件整合Co-design的前段成果验证,IP的开辟就多了一层保障。

     在软件方面,BIOS、Device driver就牢牢地连接着硬件。在这时,当整个OS未创建起来时,就必要ICE与Debugger来资助CPU驱动进程的除错,以验证进程实行对各IP元件驱动正常否。SoC IP的计划是另一门大学问,就不在此形貌。在颠末开端成果验证后,SoC IC就渐渐成型,方便日后产出后再加上OS。

     在以上二种型态的SoC嵌入式体系中,它的重点不过乎是ARM CPU、OS、ICE和Debugger、FPGA、SoC。固然不肯定要用ARM CPU,也可采用MIPS或其他的,只是如今环球CPU IP市场占有率,还是非他莫属。以下笔者就针对这些重点做形貌并在实作训练平台(PreSOCes)上显现各重点技能的开辟与训练步调。起首就针对PreSoCes作一大略形貌,以方便各重点技能在实作阐明时衔接起来。

PreSoCes
PreSoCes的实作成果有哪些?它是专门针对SoC嵌入式体系开辟、训练而计划的平台,它是一个ICE(Pocket ARM ICE或Carrier ARM ICE)、Domingo Debugger、Creator组合而成。体系上特点:一、在WINDOWS环境就能操纵Linux 体系,不需另灌一台Linux PC,也便是一台PC就能开辟Embedded Linux。二、具有Linux OS Debugging的Debugger。

Creator它的特点很多,但重要有(1).在Creator上,可调换CPU模块,如用差别的ARM CPU,或具ARM Core的FPGA模块,其他的MIPS CPU也是思量之一。(2).在Creator上,可调换性的周边IP FPGA模块,如:Create Ph-FPGA-XC2S。(3).电流量测,可对CPU、Memory、LCD、Compact Flash、CMOS Sensor、USB、Ethernet等作量测。其他成果特点如下:

CPU:
˙ARM7TDMI S3C4510(Factory out standard)

CPU模块调换:(另选)
˙Create-ARM922T板(另选)、Altera EPXA1 100K Gates
˙ARM9 TDMI S3C2410 CPU板(另选)
˙其他CPU板(另选)
˙其他大容量FPGA 板(另选)

影象体(Memory):
˙2MB Bytes Flash ROM
˙16M Bytes SDRAM support byte, half-word, word size
˙Access Compact flash card(compact flash card optional)
˙SDRAM Memory Expansion connector

通讯传输(Communication):
˙RS232C port for Debug Console
˙RS232 port for Application
˙RJ-45 10/100 Base-T Ethernet interface
˙USB 1.1 interface

人机界面(Human-Machine Interface):
˙Codec function with Speaker, Microphone circuit
˙CMOS Camera Module
˙4×4 Keypad
˙LED Lamp X 8;7-Seg LED X 4;8 Pin DIP Switch
˙Graphic LCD Display by 4 Level

体系增援(Board System):
˙1*system reset switch
˙1*JTAG connector
˙Real time clock by I2C interface
˙EEPROM 128×8 Bit
˙Clock changeable for CPU
˙可针对CPU、Memory、LCD、Compact Flash、CMOS sensor、Codec、USB、UART、EtherNet、etc作电流量测

周边IP FPGA模块调换:(另选)
˙Create Ph-FPGA-XC2S板(另选)
˙其他FPGA或CPCD模块(另选)

作业体系(Operating System):
˙Running uClinux
˙Others

 
ARM CPU
在开端相识PreSoCes成果后,就来看看嵌入式体系的内核ARM CPU,在这里以ARM Core S3C4510元件为阐明。为何要学ARM CPU呢?因嵌入式体系是软、硬件的整合,它有BISO、Device driver,能不相识CPU吗?又加上如将来要走入SoC IP计划,那又更不克不及不相识它,以是笔者仅取重点阐明。

ARM7TDMI内核的重要构成
〈1〉.寄存器组(register bank):ARM7TDMI利用寄存器组来保存微处理惩罚器内部种种操纵模式的运算域及CPU状态。寄存器组中的全部寄存器至少具有两个读取埠(read port)与一个写入埠(write port)以供存取寄存器之用,较为特别是R15,有三个读取埠与两个写入埠。
〈2〉.桶型位移寄存器(barrel shifter):ARM7TDMI利用barrel shifter来实行位元位移或旋转,这是一样平常DSP常用的成果之一。
〈3〉.算术逻辑运算单位(ALU):ARM7TDMI利用ALU来实行算术与逻辑运算。
〈4〉.地址寄存器(address register)与累增器(incrementer):ARM7TDMI利用地址寄存器与累增器来选择并维持影象体定址成果,以孕育产生连续或非连续的影象体地址。
〈5〉.数据寄存器(data register):ARM7TDMI利用数据寄存器来生存数据以与影象体相相互同。
〈6〉.指令解码器(instruction decoder):ARM7TDMI利用指令解码器以孕育产生与指令相映射的控制信号。
 



图1 ARM core
 

■Pipeline布局
1.完备指令实行的管线作业
 


 

2.三层管线作业流程
 


 

在这环境下可知一个Cycle实行一个指令。

■CPU数据实行图
 


图2 CPU数据实行
 

CPU数据实行图阐明

本文利用一大略的加法运算再搭配二个寄存器(Rm及Rn)来阐明:
1.分别将(Rn及Rm)送到A BUS及B BUS。
2.在B BUS的Rm透过Barrel Shifter作位移运算后,结果与在A BUS的Rn在ALU整相助运算举措。
3.末了运算结果会由ALU BUS送回寄存器Rd做保存。
4.进程计数器结果则透过Address incrementer作更新再将值写回进程计数器。
5.此时Address BUS更新数据地址,举行下一步的下令撷取的举措;影象体即会把指令送到Data BUS做进一步的指令解码及实行的准备。

■进程模式(Programmer Mode)
寄存器
ARM Mode寄存器共有37个,分别有31个32bit一样平常寄存器及6个状态寄存器,而于差别操纵模式下分有差别的寄存器可供利用。
 


表1 ARM Mode寄存器
 

THUMB Mode寄存器是一个ARM状态寄存器的子聚集,分别有21个32bit一样平常寄存器及6个状态寄存器,利用者可直接利用R0-R7和PC,stack pointer register(SP),link register(LR)、CPSR及SPSR。
 


 

在二种State的寄存器组中,有共用寄存器,也有各别寄存器,这就方便OS 的task switch 之进程参数转换用。

■忆体格局
ARM7TDMI对付影象体内数据的存取以byte为单位,并由0开始线性向上存取的方法举行。也便是byte0~byte3会开始被存取为一个word(在ARM里,一个word便是32位元;也便是4个byte),接下来是byte4~byte7被存取...依此类推下去。而如许保存在影象体中的一个word之4个byte,哪个会置于最高位置?哪个又会置于最低位置呢?这时,ARM则提供了两种格局供计划者来利用---Big Endian和Little Endian。

在Big Endian格局中,一个word里的最大有效字节会保存到最低的字节里,而最小有效字节会保存到最高的字节里。
 



表3 Big Endian格局
 

在Little Endian格局中,一个word里的最小有效字节会保存到最低的字节,而最大有效字节会保存到最高的字节里。
 



表4 Little Endian格局
 

操纵模式
ARM7TDMI共增援7种操纵模式。
 



表5 ARM7TDMI操纵模式
 

模式变化
模式的变化可以由软件控制或是经过外部停止和例外变乱的处理惩罚所孕育产生。大多数的应用进程会在User模式下实行。非User模式,亦可称为特权模式,其通常用来实行停止办事、例外变乱,大概是存取受掩护的资源。

■例外变乱
每当例外变乱的孕育产生,则进程的一样平常旗标则会临时克制,在例外被处理惩罚之前,如今的处理惩罚步伐状态必须被保存,最初的进程才华够被恢复。当停止被处理惩罚完时,其他的例外变乱就会被担当处理惩罚,但它们会依照优先次序处理惩罚。
 



表6 例外变乱