大门牙原创,欢迎随意转载,批评,引用。
一. 两个处理器之间的关系
Zenq系列的两个ARM处理器核心可以分别工作,其公用资源有cache、DDR、所有外设、OCM存储器等。
可以将其看成是两个线程,实际使用时,可以通过线程同步、互斥的方式来实现裸机情况下的简单双核调度与使用。
二. 实现方法
准备工作
由于两个核心的内存空间是公用的,硬件上不作区分,也就是说每个核心都可以访问到完整的DDR空间。
因此,需要在逻辑上将两个核心使用的内存空间区分开来。例如
CPU | DDR |
---|---|
CPU0 | 0 ~ 200MB |
CPU1 | 200M ~ 512MB |
开发时,需要建立3个application工程
1. FSBL
2. CPU0_app
3. CPU1_app
BootLoader的改动
对于ARM架构而言,不区分程序空间和数据空间,因此程序加载时也应该加载到各自对应的空间中。对于BootLoader而言,需要完成4件事情。
1. 芯片自检,加载驱动
2. 载入bit stream,并通过VCAP模块写入FPGA
3. 载入CPU0的程序和CPU1的程序
4. 将CPU0 hand off 到CPU0的用户程序上