Por favor refierase al artículo en la Parte 5 para obtener configuración necesaria adicional del simulador Simics aplicable al DE-25 Agilex 5 antes de continuar. El objetivo de este artículo es completar el proceso de construcción de la aplicación de Zephyr RTOS que se ejecuta en la plataforma virutal Simics relevante al Agilex™ 5 DE-25 FPGA Dev Kit
En nuestro previo artículo Parte 5 casi hemos completado el proceso de construcción de la aplicación de los filósofos tomando café en el Zephyr RTOS DigiKey del simulador Simics del Agilex 5. Para completar este proceso, se procede con el siguiente paso para crear el bl2.hex del bl2.bin como se describe a continuación,
cd $TOP_FOLDER/qspi_bin
aarch64-none-linux-gnu-objcopy -v -I binary -O ihex --change-addresses 0x00000000 bl2.bin bl2.hex
Ahora estamos listos para crear la imagen flash_image_jic.rpd qspi del fip.bin y el bl2.hex,
cd $TOP_FOLDER/qspi_bin
ln -s $TOP_FOLDER/ghrd_a5ed065bb32ae6sr0_hps.sof agilex5_factory.sof
quartus_pfg -c qspi_flash_image_agilex5_boot.pfg
Ahora se crea el projecto de Simics bajo el tope como sigue,
cd $TOP_FOLDER
rm -rf project-1
mkdir project-1
cd project-1
Bajo el nuevo projecto que se ha definido, se activa la plataforma virtual del agilex5e-universal como se muestra a continuación,
simics_intelfpga_cli --deploy agilex5e-universal
Se construye la plataforma virutal así,
make
Para boot desde el binario en el QSPI,
cd $TOP_FOLDER/project-1
cputypestring=""
if [ $cputype = "a76" ]; then
cputypestring='$hps_boot_core = 2
$hps_core0_1_power_on = TRUE
$hps_core2_power_on = TRUE
$hps_core3_power_on = TRUE '
fi;
tee zephyr_qspi.simics << 'EOF'
# TOP-LEVEL CONFIG Script TO BOOT ZEPHYR.
local $board_name = "system.board.fpga"
# Ensure the nand_mem.img & bl2.bin paths are relative to the simics executable
# First stage boot loader, ATF BL2 path
$fsbl_image_filename = ../qspi_bin/bl2.bin
#Boot from QSPI
$qspi_image_filename = ../qspi_bin/flash_image_jic.rpd
# Enable Console
$create_hps_serial0_console=TRUE
EOF
echo "$cputypestring" >> zephyr_qspi.simics
echo 'run-command-file "targets/agilex5e-universal/agilex5e-universal.simics"
run' >> zephyr_qspi.simics
En este punto estamos listos para correr el de demo de la aplicación de Zephyr RTOS,
cd $TOP_FOLDER/project-1
ln -s zephyr_qspi.simics zephyr.simics
./simics zephyr.simics
...
...
....
HPS Status:
Status of system.board.fpga.soc_inst.hps_subsys.agilex_hps [class vp_intel_agilex_5_soc]
========================================================================================
Setup:
Top component : system
Instantiated : True
Attributes:
boot_core : 0
combophy_iface_select_enable : False
core0_1_power_on : True
core2_power_on : True
core3_power_on : True
create_hps_serial0_console : True
create_hps_serial1_console : False
fsbl_image : ../qspi_bin/bl2.bin
hps_cpu_freq_mhz : 400
reset_vector : 0
stepping : A0
Connections:
f2s_fpga_irq[0] : system.board.fpga.soc_inst.periph_subsys:periph_button_irq
hps2fpga_0_down : system.board.fpga.soc_inst.example_design:design_mem_conn
hps_conn : system.board.fpga.soc_inst.hps_subsys.emif:emif_conn
lwhps2fpga_down : system.board.fpga.soc_inst.periph_subsys:periph_mem_conn
serial0 : system.board.fpga.soc_inst.hps_subsys.agilex_hps.console0:serial
usb31_slot : system.board.fpga.soc_inst.hps_subsys.agilex_hps.usb31:usb31_hps_slot
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[0] info] Calling hard reset default
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[0] info] pendr clear
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[1] info] Calling hard reset default
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[1] info] pendr clear
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[2] info] Calling hard reset default
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[2] info] pendr clear
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[3] info] Calling hard reset default
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.gicr[3] info] pendr clear
[system.board.fpga.soc_inst.hps_subsys.agilex_hps.uart0.bank.regs unimpl] Write to unimplemented field regs.FCR.DMAM (value written = 0x1, contents = 0).
Ya se puede observar la plataforma virtual Simics del Agilex™ 5 relevante al DE-25 FPGA Dev Kitr usando el zephyr.simics en una ventana del demo separada como se muestra en el siguiente video,
Este demo de los filósofos en la plataforma virtual Simics Agilex™ 5 del demo modificado tomando café, se puede configurar para diferentes objetos y distintos tipos de sincronización: SEMAPHORES, MUTEXES, STACKS, FIFOS and LIFOS.
La plataforma DE-25 FPGA Dev Kit poderosa tiene el HPS/FPGA Agilex 5 (disponible en la serie D o E dependiendo del caso) capaz de implemtar losTensores de IA,
que va mas alla que los tradicionales métodos clásicos,
y está disponible en DigiKey.
Que tenga un buen día.
Este articulo esta disponible en ingles aqui.
This article is available in english here.


