裸机AMP(非对称多进程处理模式).doc

裸机AMP(非对称多进程处理模式).doc

ID:28140129

大小:172.50 KB

页数:6页

时间:2018-12-08

裸机AMP(非对称多进程处理模式).doc_第1页
裸机AMP(非对称多进程处理模式).doc_第2页
裸机AMP(非对称多进程处理模式).doc_第3页
裸机AMP(非对称多进程处理模式).doc_第4页
裸机AMP(非对称多进程处理模式).doc_第5页
资源描述:

《裸机AMP(非对称多进程处理模式).doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、裸机AMP(非对称多进程处理模式)  在上一篇博客中,我们已经将ZynqSoC启动并运行起来,在AMP(非对称多进程处理)模式下使用了两个ARMCortex-A9MPCore处理器,然而因为上一篇博客已经相当长了,我没有详细的介绍软件方面的工程细节。  其实在两个处理器上运行的软件工程也非常的简单。这里我将为你们展示通过OCM(片上存储器件)实现ZynqSoC的两个处理器之间的通信。然而,现在的软件工程非常的简单,因此我们可以从这个基础工程开始,继续完善。  上周我们完成的例子中的软件工程主要完成以下几个任

2、务:Core0是主设备,它可以激活Core1。它也利用了片上的UART串口以固定的延迟向一个终端输出打印信息。这个延迟不适用定时计数器等,尽管在这里使用私有的定时计数器很容易,我将在后面的博客中介绍同时使用两个私有的定时计数器。  一旦Core0启动起来,Core1初始化它的私有资源,输出切换信号,控制位于MicroZedI/O扩展板上的八个LED灯亮灭,这里我们需要使用Core1私有的定时计数器和通过GIC使能中断,实现以上功能。  这些应用程序之间是没有联系的,它们并不分享资源。然而,接下来我们想让这些

3、应用程序之间能够通信,分享资源。  运行在Core0上的应用程序是非常简单的。它主要实现的是激活运行在Core1上的应用程序,然后在一个无限循环中通过UART0输出打印出一段简单的信息。    然而,我们计划使用Core1的中断控制器,所以第一步我们必须配置GIC(通用中断控制器),将下图所示的代码加入到Core0的应用程序的源代码文件中:    Core1的应用程序代码可能要更加复杂一些,因为我们要在ZynqSoC的PL(可编程逻辑)部分调用GPIO模块,用于驱动控制MicroZedI/O扩展板上的LED

4、灯。同赛灵思其他的接口一样,standaloneOS使用一句#include“xgpio.h”代码就提供了gpio接口的驱动信息,这个文件与我们之前驱动PS部分的MIO/EMIOGPIO接口所使用的xgpio_ps.h文件有一些小的不同,在这个例程中我想为大家展示如何在ZynqSoC的PL部分使用GPIO接口。    为了确保我们能够看出LED灯的亮灭状态的切换,我们将使用Core1私有的定时器,这与我们之前使用Core0定时器是一样的。  在Core1的程序开始执行它的主程序之前,我们需要禁止片上存储(O

5、CM)的缓存功能,初始化GPIO接口,初始化私有的定时器,和配置中断控制器,这样私有的定时器中断才能够被用来控制LED灯亮灭状态的切换。我们将使用ZynqSoC应用程序和禁止缓存的异常机制完成这些功能。    现在我们可以开始编写相当简单的中断服务程序,当私有的定时器计时结束然后重新计时时,这些中断服务程序就能够控制LED灯的亮灭。这个处理过程会一直进行,我选择使用十六进制的AA和55交替转变赋值给LED灯,控制LED灯的亮灭状态。这个选择将会是所有的LED灯“流动起来”,与所有LED灯的全亮或者全灭状态是

6、有一些区别的。  下图是程序执行的结果,通过Core0输出到终端对话框窗口:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。