• xilinx 双核AMP运行------zynq 7020


        zynq7020 片子相对较老,支持的bif文件中,不能指定各个核运行的应用程序,所以不能使用zynqMp直接指定程序运行在那个核上的方式进行。

    一 、双核裸机AMP运行方式:

           可以使用两种方式进行;core0应用启动core1应用 核fsbl启动程序添加加载core1的应用。两种方式原理一样,实现的位置不同。

    1. /* 此处代码可以放在core0的应用程序中,也可以放在fsbl的应用程序中 */
    2. #define sev() __asm__("sev")
    3. #define CPU1STARTADR 0xFFFFFFF0
    4. #define CPU1STARTMEM 0x20000000
    5. void StartCpu1(void)
    6. {
    7. /* 指定core1启动位置 */
    8. Xil_Out32(CPU1STARTADR, CPU1STARTMEM);
    9. dmb();
    10. printf("satrt core1 \r\n");
    11. /* 启动core1 */
    12. sev();
    13. }

    1.1 core0 启动core1

    core0 调用位置:在init_platform()之后;

    1. init_platform();
    2. Xil_SetTlbAttributes(0xFFFF0000,0x14de2);
    3. StartCpu1();

    core1中需要调用Xil_SetTlbAttributes(0xFFFF0000,0x14de2); 关闭cache;

    同时需要在bsp中,增加 -g DUSE_AMP=1 选项;不修改前面的条件;

    createBootImage 添加顺序;fsbl->*.bit->core0.elf>core1.elf

    1.2 fsbl 启动core1

    fsbl调用位置:main.c中在LoadBootImage()之后;

    core1中需要调用Xil_SetTlbAttributes(0xFFFF0000,0x14de2); 关闭cache;

    同时需要在bsp中,增加 -g DUSE_AMP=1 选项;不修改前面的条件;

    createBootImage 添加顺序;fsbl->*.bit->core0.elf>core1.elf

    二 、双核Linux+裸机 AMP运行方式:

    1、linux使用petalinux生成,并使用uart0进行打印调试;系统要禁用uart1(因为core1要使用)

    2、core1使用上面的core1.elf,并使用uart1进行打印调试;

    3、裸机应用使用core1.elf和fsbl.elf(通过fsbl加载core1.elf的fsbl.elf 文件)

    4、petalinux生成的文件中,需要使用的文件包括:image.ub, uboot.elf,system.bit三个文件;

    5、createBootImage 添加顺序;fsbl->*.bit->uboot..elf>core1.elf

    6、sd卡放入image.ub文件核BOOT.bin文件(5中生成的)。

  • 相关阅读:
    python数据分析-matplotlib绘制折线图
    花菁荧光染料Cy3/Cy5/Cy7标记COX-2环氧合酶,Cy3/Cy5/Cy7-Cyclooxygenase-2
    55、基于 WebFlux 开发 WebSocKet
    《流畅的Python第二版》读书笔记——函数中的类型注解
    【数据库】索引
    猿如意开发工具|JetBrains GoLand
    什么是BDD测试(行为驱动开发测试)?
    网络黑客入门级工具:netwox
    利用社群媒体打造雇主正面品牌形象的9种方法
    JVM 和 HotSpot 的区别?
  • 原文地址:https://blog.csdn.net/CSlingangwDN/article/details/127830957