跳转到主要内容

Xilinx Vitis学习教程:ZYNQ之lwip使用Echo server(3)

judy 提交于

<font color="#FF8000">作者:joy_v
原文链接: https://blog.csdn.net/longfei_3/article/details/105277058
声明:本文由原创博主授权转发,如需转载请联系博主</font>

疫情期间是真爽,睡觉睡得我啥也不想干,本来也琢磨着继续更新,无奈开工就很忙,天天只想睡觉,自从爽了一个月,我就只想睡觉,看来我要买点亚麻籽油提提神了,碰巧最近有网友问他的双核没法正常工作,我试了下,是可以的,但是这当中也遇到点bug,好吧,开始干活吧。

       实现:cpu1跑echo server例程,cpu0跑helloword。

配置继续使用上个教程的,不明白的可以移步这里: http://xilinx.eetrend.com/blog/2020/100048439.html

硬件配置如下,同echo server例程完全一样
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

生成的文件
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

打开vitis,一步步创建
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

既然用cpu1跑echo server,那我先从CPU1开始创建吧
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

创建好之后
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

选中lwip
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

点锤子编译
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

先创建一个echo server 在CPU1上试试
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

选择刚才的xsa
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

选择cpu 1
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

选择 echo server
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

选中工程,点个锤子编译一下
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

运行一下,打印出来了
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

测试回传,效果正常,CPU1跑的工程没啥幺蛾子。
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

删除当前的工程,准备测试双核
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

先添加cpu0 的支持包
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

保持命名一致,选择CPU0(processor一定别搞错)
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

添加完成,点个锤子编译一下
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

开始创建双核工程,先给CPU1创建echo server工程
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

再给CPU0搞个大项目
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

两个工程创建好了
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

修改CPU0工程的ld文件,一定要按ctrl+s保存

一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存一定要按ctrl+s保存
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

稍微修改一下工程代码,让CPU0一直干活一直干活一直007
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

代码:
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include <stdint.h>

void delay()
{
uint32_t i,j;
for(i=0;i<65535;i++)
{
for(j=0;j<1000;j++)
{

}
}
}

int main()
{
init_platform();

while(1)
{
print("cpu0 do nothing_1\n\r");
delay();
print("cpu0 do nothing_2\n\r");
delay();
}
}

先单独跑下CPU0工程
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

工作正常
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

开始双核测试,把两个工程都选中
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

看打印两颗核心已经能够正常工作了
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

测试一下回传
<center><img src="http://xilinx.eetrend.com/files/2020-04/%E5%8D%9A%E5%AE%A2/100048566-94…; alt=""></center>

也可以工作了