Question: I need help in embedded systemes ( system on chip ) , here is a description of what I need: ( In vivado & vitis

I need help in embedded systemes(system on chip), here is a description of what I need:
(In vivado & vitis)
Build a TCP fire - w@||
Can detect malicious data in a TCP packet
- Zynq
Runs the TCP server
Receives TCP packets and sends the packet payload to the MicroBlaze
Analyzes and reports the results from the MicroBlaze to the user
- MicroBlaze
Receives the TCP payload from the Zynq
Searches for malicious data
Reports back to the Zynq
How the data is transferred is up to you
For example
Mailbox
Mailbox + BRAM/FIFO
DMA + BRAM/FIFO
...
(This link might help: https://packetsender.com/)
The software design briefly is as follows:
Launch Vitis
Workspace: $em_sys_lab/lab-/software
Create platform projects
Use the exported hardware (.xsa)
lab-6-zynq-platform
Create an application project
lab-6-zynq-application
Program the FPGA
So I need guidance to do this, the steps to follow, then the code in C-embedded will also be nice to have
==================================================================================================
I have a similar project that can be a starting point, its sofware design goes:
*Notice that 3 images concern the example I gave, the other two concern the project I want to do.
Launch Vitis
Workspace: $em_sys_lab/lab-/software
Create platform projects
Use the exported hardware (.xsa)
lab-5-zynq-platform
lab-5-mb-platform
Create an application project
lab-5-zynq-application
Lab-5-mb-application
Program the FPGA,
I will give the C-embedded codes from this example project:
// mb-application -> this goes in one c file
#include
#include
#include "platform.h"
#include "xil_printf.h"
#include "xil_types.h"
#include "xparameters.h"
//#include "xgpio.h"
//#include "xtmrctr.h"
#include "xil_exception.h"
#include "sleep.h"
#include "xmbox.h"
int main()
{
XMbox_Config *cfg_ptr_mailbox;
XMbox mailbox;
init_platform();
cfg_ptr_mailbox = XMbox_LookupConfig(0U);
XMbox_CfgInitialize(&mailbox, cfg_ptr_mailbox, cfg_ptr_mailbox->BaseAddress);
u32 bytes_sent;
u32 read_buffer =2;
while (1){
// wait for the values of the ZYNQ
XMbox_ReadBlocking(&mailbox, &read_buffer, 4);
// increment the values with 1
read_buffer = read_buffer +1;
// send back towards the ZYNQ
XMbox_Write(&mailbox, (u32*) &read_buffer, 4, &bytes_sent);
}
cleanup_platform();
return 0;
}
//Zynq application -> this goes in a second c file
#include
#include
#include "platform.h"
#include "xil_printf.h"
#include "xil_types.h"
#include "xparameters.h"
#include "xgpio.h"
//#include "xtmrctr.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "sleep.h"
#include "xmbox.h"
#include "time.h"
// interrupt handler
void gpio_intr_handler(void *axi_gpio){
}
int main(){
// variables
// AXI GPIO config and driver object
XGpio_Config *cfg_ptr_axi_gpio;
XGpio axi_gpio;
XMbox_Config *cfg_ptr_mailbox;
XMbox mailbox;
xil_printf("Initialization of the platform\r
");
init_platform();
// setup of the peripherals
xil_printf("Configure the peripherals\r
");
//AXI GPIO
xil_printf("Configure AXI GPIO\r
");
cfg_ptr_axi_gpio = XGpio_LookupConfig(XPAR_AXI_GPIO_0_DEVICE_ID);
XGpio_CfgInitialize(&axi_gpio, cfg_ptr_axi_gpio, cfg_ptr_axi_gpio->BaseAddress);
// set the mode of the channels (input/output)
// buttons (channel 1)--> input
// LEDs (channel 2)--> output
//XGpio_SetDataDirection(&axi_gpio, 1,1);
//XGpio_SetDataDirection(&axi_gpio, 2,0);
xil_printf("Configure MailBox\r
");
cfg_ptr_mailbox = XMbox_LookupConfig(XPAR_MAILBOX_0_IF_0_DEVICE_ID);
XMbox_CfgInitialize(&mailbox, cfg_ptr_mailbox, cfg_ptr_mailbox->BaseAddress);
xil_printf("Starting the program\r
");
u32 bytes_sent;
u32 read_buffer =2;
while (1){
// Generate values between 0-14
int random_value =7;//rand ()%14;
// Send to the mailbox (MicroBlaze) non blocking write
XMbox_Write(&mailbox, (u32*) &random_value, 4, &bytes_sent);
// Wait for response of the MicroBlaze blocking read
XMbox_ReadBlocking(&mailbox, &read_buffer, 4);
// Display the value of the value on the LEDs
xil_printf("%d", read_buffer);
}
xil_printf("Cleanup of the platform\r
");
cleanup_platform();
return 0;
}
I need help in embedded systemes ( system on chip

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!