ZYNQ双核AMP开发详解(USE_AMP -DUSE_AMP=1 含义和作用详解)

reference: https://blog.csdn.net/tech06/article/details/106697858

Zynq双核AMP模式运行(Zynq双核AMP模式运行演示视频教程 :
https://www.ixigua.com/i6836328174431765005/),CPU1工程的bsp中需要增加编译选项“-DUSE_AMP=1”,这个编译选项有什么作用呢?是如何影响源码的编译的呢?

我们找到Xilinx相关的说明文档,查看一下,我们在Xilinx官网搜索“-DUSE_AMP=1”,勾选“Design Tools”,如下图所示我们会搜到“UG1186 - Libmetal and OpenAMP User Guide”这个文档,我们下载查阅一下。
在这里插入图片描述

我们打开“UG1186”这个文档,直接搜索“-DUSE_AMP=1”,如下图所示,可以看到增加“-DUSE_AMP=1”编译选项的作用是,“To disable initialization of shared resources when the master processor is handling shared resources initialization”。

在这里插入图片描述

具体是什么意思呢?CPU0先启动运行初始化系统,然后启动CPU1,这时CPU0已经初始化共享资源并且可能正在使用某些资源。但是CPU0和CPU1的工程使用的Bsp的源码是一样的,增加“-DUSE_AMP=1”编译选项的作用就是使能预编译指令,让CPU1工程中涉及到共享资源初始化的代码段不被编译进应用程序,这样CPU1启动后就不会再进行共享资源的初始化了。

那么具体都涉及哪些共享资源,哪些代码没有被编译呢?我们可以搜索工程源码,如下图所示,

在这里插入图片描述

这里需要说明一下我们在编译器选项中添加的是“-DUSE_AMP=1”这个参数,那么在源码中的预编译指令是用“USE_AMP”定义的,也就是编译器选项中的DUSE_AMP等价于源码中的USE_AMP。

我们首先查看一下boot.S,如下图所示,我们可以看到initialize L2 Cache的代码段不被编译,那么CPU1启动后就不会初始化L2缓存。

在这里插入图片描述

我们再来查看一下xil_cache.c,如下图所示,主要影响到CPU1对缓存的操作。

在这里插入图片描述

在这里插入图片描述

我们再查看一下xil-crt0.S,如下图所示,主要影响到CPU1对全局时钟的操作。

在这里插入图片描述

最后我们再看一下xscugic_hw.c和xscugic.c,当定义了USE_AMP等于1时,都是直接return,不对中断进行配置。

在这里插入图片描述

在这里插入图片描述

那么总结一下就是,“-DUSE_AMP=1”编译选项将影响到工程代码里的USE_AMP预编译指令,使得Cache操作函数、全局时钟以及中断控制器SCUGIC的初始化函数不被编译进CPU1的应用程序中,避免可能会出现的CPU0和CPU1Cache一致性维护异常和中断异常等问题。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 领航者zynq之linux驱动开发指南_v1.3.pdf 是一份介绍如何在zynq芯片上进行linux驱动开发的文档,包括驱动编写、编译、安装和测试等方面的内容。 该文档首先介绍了zynq芯片的基本概念和结构,以及如何搭建linux开发环境。接着,详细讲解了linux设备驱动框架的基本原理和驱动开发流程。 在具体的驱动编写方面,文档提供了大量的示例代码和详细的注释,让开发者能够更好地理解驱动程序的实现原理。同时,也介绍了驱动编译、安装和调试等方面的基本操作。 总的来说,该文档是一份非常实用和全面的linux驱动开发指南,适合于想要在zynq芯片上进行linux驱动开发的工程师和开发者使用。它不仅提供了理论上的知识,还提供了大量的实践操作和示例代码,让读者能够更好地掌握驱动开发的技巧和方法,提高开发效率。 ### 回答2: 《领航者Zynq之Linux驱动开发指南_v1.3.pdf》是一本关于Zynq处理器的Linux驱动开发指南。该指南详细介绍了如何开发驱动程序以在Zynq平台上与硬件设备进行通信。 该指南包含以下内容: 1. Zynq处理器概述:介绍了Zynq处理器的架构、特性和基本原理。 2. 设备树(Device Tree):介绍了设备树的概念、原理和使用方法,让读者了解如何用设备树描述硬件设备和编写驱动程序。 3. 驱动程序框架:介绍了驱动程序的基本框架和编写方法,以及如何使用Linux内核提供的API进行编程。 4. 驱动程序的调试和优化:介绍了Linux内核的调试方法和工具,以及如何优化驱动程序的性能和可靠性。 该指南是一本非常实用的学习资源,适合需要在Zynq平台上进行Linux驱动开发的工程师和学生使用。它详细讲解了Zynq处理器的基本知识和驱动程序开发的方法,为读者提供了全面的指导和参考。 ### 回答3: 《领航者zynq之linux驱动开发指南_v1.3.pdf》是一本关于针对领航者Zynq芯片进行Linux驱动开发的指南。该指南详细介绍了如何使用Zynq芯片的板级支持包(BSP)创建Linux操作系统,并在此基础上进行驱动开发。指南中包含了丰富的实例代码和图示,能够帮助读者深入理解驱动开发过程。 该指南主要方法是以实际应用场景为基础,通过分析应用场景中所需实现的功能,从而引出需要编写的驱动程序,并给出了具体的实现方法。指南中所介绍的应用场景包括LED灯控制、按键输入、串口通信、定时器等,这些场景涵盖了嵌入式系统开发的一般需求,可以帮助读者快速掌握Linux驱动开发的方法和技巧。 同时,指南中也提到了一些开发工具的使用方法,如Xilinx的Vivado开发套件和Linux内核调试工具。这些开发工具的运用有助于提高开发效率,并且可以帮助开发者快速解决问题。 总体来说,该指南是一本实用性很强的Linux驱动开发指南。无论是对于Zynq芯片的开发者,还是对于嵌入式Linux操作系统的开发者都是很有参考价值的。通过学习该指南,读者可以掌握一些基本的驱动开发方法和理念,并有助于开发出更加稳定和优秀的嵌入式系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值