一、ZYNQ上的多核
CMP——Chip Multiple Processor.
同构:指令集和体系结构完全一样;异构:ZYNQ介于同构h和异构之间,单看PS为同构,加上PL可实现异构,可支持AMP和SMP,AMP方案更丰富,手机上的芯片一般集成了CPU和ARM核为异构。
AMP(非对称):分离的操作系统,每个核独自运行不同的任务,由其中一个作为管理;SMP(对称的):一个OS同时管理所有的处理器核,主要由同构处理器构成。BMP(边界);类似于SMP一个OS同时管理所有的处理器核,结合了对称和非对称处理器的优点。
CPU0的DDR占前512M的511M,起始地址为1M,CPU1的DDR占1GB的后512M。OCM一共252K,分为4块,每块64K,地址映射到4GB的最后256K。系统默认RAM0占3*64K,RAM1占64K,RAM1的地址从0XFFFF0000开始占据4GB控件的最后64K,RAM0占据4GB空间的从0开始的开头192K。ZYNQ的PS是32位机地址最大4GB,由于是统一编址DDR只能占1GB,也就是ZYNQ的DDR只支持1GB,默认OCM的192KB会和DDR的192KB重合,如果需要让两者完全分开就需要修改OCM的地址。
ZYNQ上电后的0X00000000地址指向的是内部ROM然后开始执行其第一行代码,根据条线选择决定是从FLASH存储器家在代码还是等待Jtag接口的额之灵,该阶段启动完成后ROM从地址空间消失,用户无法访问该ROM。如果是从F拉升存储器启动则会读取到CPU0的DDR起始地址,本次加载的代码叫做FSBL(First Stage BootLoader)FSBL首先会将Bit流文件下载到FPGA使得在Vivado中设计的硬件在FPGA中生成,接下来再从Flash中将CPU0和CPU1的应用程序加载到各自的DDR起始地址完成启动。
ZYNQ的多处理方案:双l裸机;裸机+Linux;双Linux.
我们今天实现的是双裸机,内存各占50%,设计共享内存加SGI的通信机制。