openAMP系统实现。
一个核跑Linux,一个核裸跑。 -----> 已经实现。
一个核跑Linux,一个核跑UCOS -----> 还未实现。
Micrium的ucos OpenAMP例子与Xilinx的例子框架结构有些不同,尝试修改共享内存基地址、改变程序结构,还未成功。先放一放,以后再来实验,或者等Micrium给出官方的例程~~~~TT
step1: openAMP框架介绍
参考文档:ug1186
step2: 创建standalone应用工程
从Vivado中Export Hardwre(Include bitstream)后,点击Launch SDK打开Xilinx SDK开发工具。
这一次我们需要实现在裸机上运行AMP架构的程序。
首先创建BSP:File -> New -> Board Support Package
对话框的选项按下面配置:
Hardware Platform :选择从vivado中输出的平台名称 CPU :选择ps7_cortexa9_1,(即第二个arm核,第一个用来运行Linux和作为AMP的主机) BSP OS platform :选择standalone
点击Finish按键,进入BSP的详细配置界面:
Overview,库支持中选中xilopenamp standalone选项,stdin和stdout需要选择与Linux系统(ps_uart1)不同的串口 drivers->ps7_cortexa9_1,修改 extra_compiler_flags的值,加入“-DUSE_AMP=1” #-DUSE_AMP=1说明 #Add -DUSEAMP=1 to the extra_compiler_flags to disable the definition of #low-level read, write, and open operations. #This also disables the vector table location in #the tightly-coupled memory (TCM).
点击OK,BSP就配置完成了,等待Xilinx SDK自动生成各种文件。
接着,需要依赖这个BSP去创建OpenAMP的应用程序。
针对裸机standalone,软件内提供了三个例子:echo-test,matrix multiplication Demo,RPC Demo。如下图:
我们直接调用例子,生成三个OpenAMP应用程序。编译后,我们就能够在每个应用工程的Debug文件夹下,找到需要的裸机elf可执行文件。
编译时候有一些警告,官网查到说不用理会这些。警告有:
in expansion of macro 'XScuGic_EnableIntr' in expansion of macro 'XScuGic_DisableIntr' implicit declaration of function 'Xil_Out32' [-Wimplicit-function-declaration] implicit declaration of function 'Xil_In32' [-Wimplicit-function-declarati