在VersalVCK190评估套件上使用器件固件升级(DFU)执行USB辅助启动模式测试

FPGA开发圈 2023-05-22 12:05
作者:Aravindb,AMD Xilinx 开发工程师
文章来源:AMD Xilinx开发者社区

在本篇博文中,我们将演示如何在 Versal AI Core 系列 VCK190 评估套件上从 USB 辅助启动模式启动 Linux。

为此,我们将修改启动镜像格式 (BIF),使用 Vivado 2020.2 通过 USB 来加载第二个可编程器件镜像 (PDI)。

我们将使用 JTAG 作为第一个启动器件来加载 Platform Loader and Manager (PLM),使用 USB 作为第二个启动器件来加载其他分区(A72、u-boot 和 Linux)。

硬件设置:

使用 USB 线将 VCK190 上的 J308 连接到 PC 主机。
将 SW1 跳线设置为 JTAG 模式。

请参阅以下截屏,查找 JTAG 启动模式设置:


模块框图:

注释:默认情况下,在 PetaLinux BSP 中启用 USB 控制器。

修改 Bootgen 和 BIF 文件以创建启动镜像

我们将基于 Vivado/PetaLinux 生成的 BIF 文件来创建 2 个 BIF 文件。

1. 第一个 BIF 用于生成 PDI,用于从主启动器件启动 PLM。在此示例中,使用的是 JTAG。

我们将第一个 BIF 命名为 A72_primary.bif

有两点值得注意:

必须将“boot_device {usb}”添加到 BIF 中。这样 PLM 即可明确 USB 为辅助启动器件。

使用 plm.elf 代替 executable.elf。executable.elf 供 Vivado 用于生成 PDI,但它不支持使用 USB 作为辅助启动器件。因此,我们需要使用 Vitis/PetaLinux 中生成的 plm.elf。

A72_primary.bif:




2. 第二个 BIF 用于生成 PDI,其中包含 u-boot 并通过 USB 器件固件升级 (DFU) 来加载。

我们将第二个 BIF 命名为 A72_secondary.bif

A72_secondary.bif:

A72_secondary.bif

3. 使用 Bootgen 通过以下命令生成主启动镜像和辅助启动镜像。

主启动镜像:

bootgen -arch versal -image a72_primary.bif -w -o boot_primary.bin
****** Xilinx Bootgen v2020.2
**** Build date : Nov 18 2020-09:50:31
** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.
bootgen -arch versal -image a72_primary.bif -w -o boot_primary.bin
****** Xilinx Bootgen v2020.2
**** Build date : Nov 18 2020-09:50:31
** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

[WARNING]: BOOTGEN_POST_PROCESSING is enabled, CDOs will be post processed

[INFO] : Bootimage generated successfully

辅助启动镜像:
bootgen -arch versal -image a72_secondary.bif -w -o boot_secondary.bin
****** Xilinx Bootgen v2020.2
**** Build date : Nov 18 2020-09:50:31
** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.

[WARNING]: BOOTGEN_POST_PROCESSING is enabled, CDOs will be post processed

[INFO] : Bootimage generated successfully

将镜像下载至开发板

1.在目标器件上使用 JTAG 加载 boot_primary.bin 镜像

2. 打印以下消息后,PLM 应等待辅助镜像。
[7.667278]Xilinx Versal Platform Loader and Manager
[12.376881]Release 2020.2 Aug 31 2020 - 09:50:03
[17.085931]Platform Version: v1.0 PMC: v1.0, PS: v1.0
[21.881875]STDOUT: PS UART
[24.324281]****************************************
[28.985971] 24.515056 ms for PrtnNum: 1, Size: 2432 Bytes
[34.094090]-------Loading Prtn No: 0x2
[38.309037] 0.692037 ms for PrtnNum: 2, Size: 48 Bytes
[42.467100]-------Loading Prtn No: 0x3
[96.268506] 50.276421 ms for PrtnNum: 3, Size: 56912 Bytes
[98.652475]-------Loading Prtn No: 0x4
[102.562750] 0.388331 ms for PrtnNum: 4, Size: 2512 Bytes
[107.286018]-------Loading Prtn No: 0x5
[110.907934] 0.013368 ms for PrtnNum: 5, Size: 3424 Bytes
[116.006421]-------Loading Prtn No: 0x6
[119.620971] 0.004568 ms for PrtnNum: 6, Size: 80 Bytes
[124.622246]+++++++Loading Image No: 0x2, Name: pl_cfi, Id: 0x18700000
[130.830893]-------Loading Prtn No: 0x7
[5791.450975] 5657.002021 ms for PrtnNum: 7, Size: 8407952 Bytes
[5794.366281]-------Loading Prtn No: 0x8
[6174.214668] 376.148515 ms for PrtnNum: 8, Size: 539520 Bytes
[6176.999787]+++++++Loading Image No: 0x3, Name: aie_subsys, Id: 0x0421C005
[6183.671081]-------Loading Prtn No: 0x9
[6190.315521] 2.944596 ms for PrtnNum: 9, Size: 352 Bytes
[6192.665846]+++++++Loading Image No: 0x4, Name: fpd, Id: 0x0420C003
[6198.726037]-------Loading Prtn No: 0xA
[6203.102859] 0.679168 ms for PrtnNum: 10, Size: 1136 Bytes
[6207.766790]Loading PDI from USB
[6210.762365]Monolithic/Master Device

3. 检查确认 DFU 能否检测到 USB 目标。
$ sudo dfu-util -l
USB 器件应使用 VendorId : ProductId(即 03fd:0050)进行枚举。

您应看到如下输出:
Found DFU: [03fd:0050] devnum=0, cfg=1, intf=0, alt=1, name="Xilinx DFU Downloader

注释:如果您未看到“Found DFU”消息,请验证连接,然后重试。

4. 在 PC 主机上运行以下命令以使用 dfu-util 将辅助镜像 boot_secondary.bin 下载到 VCK190。
sudo dfu-util d 03fd:0050 -D boot_secondary.bin


检查 UART 0 终端,等待至 U-Boot 加载完成。这样将显示 u-boot 控制台。

5. 出现 U-Boot 提示后,输入 Enter 以终止自动启动。在 UART1 控制台中验证应用是否已加载成功。

6. 在 U-Boot 控制台中,启动 DFU_RAM 以启用 Linux 镜像下载:
U-boot> run dfu_ram

7. 使用以下命令从“Host Machine Terminal”(主机终端)下载 Linux 镜像和 system.dtb:
$ sudo dfu-util -l

以上命令显示了 DFU RAM 的 alt 信息,如下所示:
Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=0, name="Image"
Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=1, name="system.dtb"
Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=0, name="Image"
Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=1, name="system.dtb"
1. dfu-util -d 03fd:0300 -D ./Image -a 0
2. dfu-util -d 03fd:0300 -D ./system.dtb -a 1

8. 在 U-Boot 上看到 DOWNLOAD 消息后,请在 U-Boot 控制台上使用 Ctrl+C 停止 dfu_ram。
##DOWNLOAD ... OK

按 Ctrl+C 退出。

9. 从 U-Boot 控制台运行 booti 命令以运行 Linux。
U-boot> booti 0x18000000 - 0x40000000
(请在 U-Boot 环境内检查此地址)

10. 验证在目标器件上是否已成功加载 Linux。

主机侧日志
root@machine_id:~# dfu-util -l
dfu-util 0.5

(C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc.
(C) 2010-2011 Tormod Volden (DfuSe support)
This program is Free Software and has ABSOLUTELY NO WARRANTY

dfu-util does currently only support DFU version 1.0

Found DFU: [03fd:0050] devnum=0, cfg=1, intf=0, alt=1, name="Xilinx DFU Downloader"

root@machine_id:~# dfu-util -D boot_secondary.bin
dfu-util 0.5

(C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc.
(C) 2010-2011 Tormod Volden (DfuSe support)
This program is Free Software and has ABSOLUTELY NO WARRANTY

dfu-util does currently only support DFU version 1.0

Opening DFU USB device... ID 03fd:0050
Run-time device DFU version 0110
Found DFU: [03fd:0050] devnum=0, cfg=1, intf=0, alt=1, name="Xilinx DFU Downloader"
Claiming USB DFU Interface...
Setting Alternate Setting #1 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 1024
No valid DFU suffix signature
Warning: File has no DFU suffix
bytes_per_hash=19961
Copying data from PC to DFU device
Starting download: [##################################################] finished!
state(2) = dfuIDLE, status(0) = No error condition is present
Done!

root@machine_id:~# dfu-util -l
dfu-util 0.5

(C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc.
(C) 2010-2011 Tormod Volden (DfuSe support)
This program is Free Software and has ABSOLUTELY NO WARRANTY

dfu-util does currently only support DFU version 1.0

Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=0, name="Image"
Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=1, name="system.dtb"
root@machine_id:~#
root@machine_id:~#
root@machine_id:~# cp -rf /proj/css/Aravind_babu/Image .
root@machine_id:~# cp -rf /proj/css/Aravind_babu/system.dtb .
root@machine_id:~#

root@machine_id:~# dfu-util -d 03fd:0300 -D Image -a 0
dfu-util 0.5

(C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc.
(C) 2010-2011 Tormod Volden (DfuSe support)
This program is Free Software and has ABSOLUTELY NO WARRANTY

dfu-util does currently only support DFU version 1.0

Filter on vendor = 0x03fd product = 0x0300
Opening DFU USB device... ID 03fd:0300
Run-time device DFU version 0110
Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=0, name="Image"
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 4096
No valid DFU suffix signature
Warning: File has no DFU suffix
bytes_per_hash=347678
Copying data from PC to DFU device
Starting download: [##################################################] finished!
state(7) = dfuMANIFEST, status(0) = No error condition is present
state(2) = dfuIDLE, status(0) = No error condition is present
Done!

root@machine_id:~# dfu-util -d 03fd:0300 -D system.dtb -a 1
dfu-util 0.5

(C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc.
(C) 2010-2011 Tormod Volden (DfuSe support)
This program is Free Software and has ABSOLUTELY NO WARRANTY

dfu-util does currently only support DFU version 1.0

Filter on vendor = 0x03fd product = 0x0300
Opening DFU USB device... ID 03fd:0300
Run-time device DFU version 0110
Found DFU: [03fd:0300] devnum=0, cfg=1, intf=0, alt=1, name="system.dtb"
Claiming USB DFU Interface...
Setting Alternate Setting #1 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 4096
No valid DFU suffix signature
Warning: File has no DFU suffix
bytes_per_hash=832
Copying data from PC to DFU device
Starting download: [##################################################] finished!
state(7) = dfuMANIFEST, status(0) = No error condition is present
state(2) = dfuIDLE, status(0) = No error condition is present
Done!

log 日志

[7.667278]Xilinx Versal Platform Loader and Manager
[12.376881]Release 2020.2 Aug 31 2020 - 09:50:03
[17.085931]Platform Version: v1.0 PMC: v1.0, PS: v1.0
[21.881875]STDOUT: PS UART
[24.324281]****************************************
[28.985971] 24.515056 ms for PrtnNum: 1, Size: 2432 Bytes
[34.094090]-------Loading Prtn No: 0x2
[38.309037] 0.692037 ms for PrtnNum: 2, Size: 48 Bytes
[42.467100]-------Loading Prtn No: 0x3
[96.268506] 50.276421 ms for PrtnNum: 3, Size: 56912 Bytes
[98.652475]-------Loading Prtn No: 0x4
[102.562750] 0.388331 ms for PrtnNum: 4, Size: 2512 Bytes
[107.286018]-------Loading Prtn No: 0x5
[110.907934] 0.013368 ms for PrtnNum: 5, Size: 3424 Bytes
[116.006421]-------Loading Prtn No: 0x6
[119.620971] 0.004568 ms for PrtnNum: 6, Size: 80 Bytes
[124.622246]+++++++Loading Image No: 0x2, Name: pl_cfi, Id: 0x18700000
[130.830893]-------Loading Prtn No: 0x7
[5791.450975] 5657.002021 ms for PrtnNum: 7, Size: 8407952 Bytes
[5794.366281]-------Loading Prtn No: 0x8
[6174.214668] 376.148515 ms for PrtnNum: 8, Size: 539520 Bytes
[6176.999787]+++++++Loading Image No: 0x3, Name: aie_subsys, Id: 0x0421C005
[6183.671081]-------Loading Prtn No: 0x9
[6190.315521] 2.944596 ms for PrtnNum: 9, Size: 352 Bytes
[6192.665846]+++++++Loading Image No: 0x4, Name: fpd, Id: 0x0420C003
[6198.726037]-------Loading Prtn No: 0xA
[6203.102859] 0.679168 ms for PrtnNum: 10, Size: 1136 Bytes
[6207.766790]Loading PDI from USB
[6210.762365]Monolithic/Master Device
[14602.209878]8394.398825 ms: PDI initialization time
[14604.323262]+++++++Loading Image No: 0x0, Name: apu_subsyste, Id: 0x1C000000
[14611.146703]-------Loading Prtn No: 0x0
[14614.942668] 0.012150 ms for PrtnNum: 0, Size: 41632 Bytes
[14620.302859]-------Loading Prtn No: 0x1
[14624.102159] 0.015812 ms for PrtnNum: 1, Size: 59360 Bytes
[14629.458853]-------Loading Prtn No: 0x2
[14633.428109] 0.185400 ms for PrtnNum: 2, Size: 896512 Bytes
[14638.786881]***********Boot PDI Load: Done*************
[14643.873331]765870.806637 ms: ROM Time
[14647.508740]Total PLM Boot Time
NOTICE: ATF running on Xilinx Versal Silicon
WARNING: BL31: invalid exception level (3)
NOTICE: BL31: Secure code at 0x0
NOTICE: BL31: Non secure code at 0x8000000
NOTICE: BL31: v2.2(debug):rel-v2020.2_SAM_EA2-1-g3e90bb84f
NOTICE: BL31: Built : 13:22:27, Aug 28 2020
INFO: GICv3 with legacy support detected. ARM GICv3 driver initialized in EL3
INFO: BL31: Initializing runtime services
WARNING: BL31: cortex_a72: CPU workaround for 859971 was missing!
INFO: BL31: cortex_a72: CPU workaround for cve_2017_5715 was applied
INFO: BL31: cortex_a72: CPU workaround for cve_2018_3639 was applied
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x8000000
INFO: SPSR = 0x3c9

U-Boot 2020.01 (Sep 02 2020 - 08:11:32 +0000)

Model: Xilinx Versal vck190 Eval board revA (QSPI)
DRAM: 6 GiB
EL Level: EL2
MMC: sdhci@f1050000: 0
In: serial@ff000000
Out: serial@ff000000
Err: serial@ff000000
Bootmode: JTAG_MODE
Net:
ZYNQ GEM: ff0c0000, mdio bus ff0c0000, phyaddr 1, interface rgmii-id

Warning: ethernet@ff0c0000 (eth0) using random MAC address - 86:d3:1d:bd:e8:8e
eth0: ethernet@ff0c0000
ZYNQ GEM: ff0d0000, mdio bus ff0c0000, phyaddr 2, interface rgmii-id

Warning: ethernet@ff0d0000 (eth1) using random MAC address - 76:8d:63:c4:fe:17
, eth1: ethernet@ff0d0000
Hit any key to stop autoboot: 0
Versal>
Versal> run dfu_ram
#DOWNLOAD ... OK
Ctrl+C to exit ...
#DOWNLOAD ... OK
Ctrl+C to exit ...
Versal>
Versal> pri
arch=arm
baudrate=115200
board=versal
board_name=versal
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootaa64.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=jtag pxe dhcp jtag mmc0 mmc1 xspi0 dfu_usb pxe dhcp
bootcmd=run distro_bootcmd
bootcmd_dfu_usb=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f; dfu 0 ram 0 && echo DFU: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo DFU: SCRIPT FAILED: continuing...;
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00011:UNDI:003000;setenv bootp_arch 0xb;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_jtag=echo JTAG: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo JTAG: SCRIPT FAILED: continuing...;
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcmd_xspi0=sf probe 0 0 0 && sf read $scriptaddr $script_offset_f $script_size_f && echo XSPI: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo XSPI: SCRIPT FAILED: continuing...;
bootdelay=5
bootm_low=0
bootm_size=80000000
cpu=armv8
dfu_alt_info=Image ram 0x18000000 0x10000000;system.dtb ram 0x40000000 0x400000
dfu_ram=run dfu_ram_info && dfu 0 ram 0
dfu_ram_info=setenv dfu_alt_info Image ram $kernel_addr_r $kernel_size_r\\;system.dtb ram $fdt_addr_r $fdt_size_r
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
fdt_addr_r=0x40000000
fdt_high=10000000
fdt_size_r=0x400000
fdtcontroladdr=7ded9b20
initrd_high=79000000
kernel_addr_r=0x18000000
kernel_size_r=0x10000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
pxefile_addr_r=0x10000000
ramdisk_addr_r=0x02100000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
script_offset_f=7f80000
script_size_f=0x80000
scriptaddr=0x20000000
soc=versal
stderr=serial@ff000000
stdin=serial@ff000000
stdout=serial@ff000000
thor_ram=run dfu_ram_info && thordown 0 ram 0
ubifs_boot=env exists bootubipart || env set bootubipart UBI; env exists bootubivol || env set bootubivol boot; if ubi part ${bootubipart} && ubifsmount ubi${devnum}:${bootubivol}; then devtype=ubi; run scan_dev_for_boot; fi
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
vendor=xilinx

Environment size: 4783/32764 bytes

Versal> booti 0x18000000 - 0x40000000
## Flattened Device Tree blob at 40000000
Booting using the fdt blob at 0x40000000
Loading Device Tree to 000000000fff2000, end 000000000ffff294 ... OK

Starting kernel ...

[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[ 0.000000] Linux version 5.4.0-xilinx-v2020.1 (oe-user@oe-host) (gcc version 9.2.0 (GCC)) #1 SMP Wed Sep 2 08:07:18 UTC 2020
[ 0.000000] Machine model: Xilinx Versal vck190 Eval board revA (QSPI)
[ 0.000000] earlycon: pl11 at MMIO32 0x00000000ff000000 (options '115200n8')
[ 0.000000] printk: bootconsole [pl11] enabled
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] cma: Reserved 256 MiB at 0x0000000070000000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.1
[ 0.000000] percpu: Embedded 22 pages/cpu s49880 r8192 d32040 u90112
[ 0.000000] Detected PIPT I-cache on CPU0
[ 0.000000] CPU features: detected: GIC system register CPU interface

....

root@xilinx-vck190-es1-2020_2:~#

注释:请在启动镜像和 log 日志中找到随附的 BIF 文件。

FPGA开发圈 这里介绍、交流、有关FPGA开发资料(文档下载,技术解答等),提升FPGA应用能力。
评论
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 123浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 30浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 178浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 195浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 145浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 206浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 159浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 324浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 134浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 619浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 210浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 74浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 666浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 238浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦