This tutorial is Part-III on "Raspberry SenseHAT Integrating with Kria KR260". In this tutorial we have SenseHAT's all components as Sensors + LEDMatrix + Joystick interfaced with KR260.
Part-II of this Tutorial: SenseHAT LED Matrix Integration with KR260 in Petalinux. In Part-II, we have detail steps for "Integrating SenseHAT Sensors + LED Matrix with Kria KR260 in Petalinux.
Part-I of this Tutorial: with details of VIVADO block design and Petalinux flow follow "SenseHAT sensors interfacing with Kria KR260 in Petalinux" tutorial.
Tools Version used: VIVADO/Vitis and Petalinux - 2022.2
Detail version of this "Tutorial" is also available in PDF format at footer section of this tutorial (Download it).Design Files of this Project:
We have provided VIVADO Tcl, XDC file, Petalinux BSP file (ready to build BSP file), drivers and python application for SenseHAT sensors and LED Matrix at: https://github.com/LogicTronix/KR260-SenseHAT-Petalinux [Git Branch: Main(default) or KR260-SenseHAT-Final].
You can clone git repo of this tutorial by:
git clone -b recursive https://github.com/logictronix/kr260-sensehat-petalinux.git
KR260-SenseHAT-Petalinux Git Repo:The LED Matrix on the Sense Hat is driven by the led2472g IC which is a LED driver manufactured by STMicroelectronics. This LED driver is controlled by ATTiny88. The ATTiny88 acts as a slave on the IIC bus and can be accessed at 0x46 slave address.
The Sense HAT python API uses 8 bit (0 to 255) colors for R, G and B components of a pixel. When these values are written to the Linux frame buffer they're bit shifted into RGB 5 6 5. The driver converts them to RGB 5 5 5 before it passes them to the ATTiny88 AVR for writing to the LEDs.
VIVADO Block DesignThe VIVADO Block design can also be created from the given Tcl Source[Link], you can create the VIVADO block design by sourcing it on VIVADO Tcl console. The Block design will have Zynq MPSoC PS, AXI IIC IP, GPIO, Interrupt Controller and other necessary IP blocks. This VIVADO block design will be used for "Interfacing SenseHAT's Sensors + LEDMatrix and Joystick" on this tutorial.
Note: In this block design we have AXI GPIO is used for "handling interrupt of LEDMatrix and Joystick". This AXI GPIO block was not there at Part-II (LEDMatrix), along with AXI GPIO block we will also have to assign contraint for it in this tutorial.
Functions of the used IP Cores/Block's are listed below.- The clocking wizard is used to generate a single 100 MHz clock for all the peripherals. It receives both the clock and reset inputs from the PS.
- The concat block is used to group all the interrupts in the system together. The input to this block are interrupts from other blocks such as the IIC and the GPIO block. The concat block will present all these interrupts on a single bus as its output which is connected to the interrupt input of the PS.
- The processing system reset block provides the reset signal to all the peripherals.
- The AXI interconnect manages all the AXI peripherals and this provides a master interface for the peripherals.
- The interrupt controller handles all the interrupts connected to its input.
- The IIC block acts as an I2C master and controls all the sensors and devices attached to the I2C bus.
- The GPIO block handles the interrupt generated by the Sense HAT on pin 16 of the RPi header.
The Sense HAT sits over the RPi header on the KR260 as shown in the picture above. The description of the 40 pins is shown for this alignment. The sensors communicate over I2C which uses pins 3 and 5.
Only 2 pins (AE14 and AE15) on the KR260 require constraining for I2C to work. AE15 is used for SDA and AE14 is used for SCL.
# RPi IIC
set_property PACKAGE_PIN AE15 [get_ports {iic_sda_io}]
set_property IOSTANDARD LVCMOS33 [get_ports {iic_sda_io}]
set_property PULLUP true [get_ports {iic_sda_io}]
set_property PACKAGE_PIN AE14 [get_ports {iic_scl_io}]
set_property IOSTANDARD LVCMOS33 [get_ports {iic_scl_io}]
set_property PULLUP true [get_ports {iic_scl_io}]
# Interrupt
set_property PACKAGE_PIN AA12 [get_ports {rpi_irpt_tri_i}]
set_property IOSTANDARD LVCMOS33 [get_ports {rpi_irpt_tri_i}]
However, the following image can be used as a reference to map and constrain all other pins.
- From the File menu on VIVADO tool, select Export > Export Platform.
- Select the Hardware option in the Platform Type window.
- Select the Pre-Synthesis state and also select the Include bitstream option in the Platform State window.
- Change required Platform Properties.
- Enter a name for the XSA and select a folder to export the XSA to and select Finish.
Sense HAT Sensor's Driver Availability
C/C++ Drivers for most sensors are available from the vendor themselves. Some drivers are also written by independent developers.
Humidity/Temperature
Accelerometer/Gyroscope and Magnetometer
Pressure/Temperature
- https://github.com/ameltech/sme-lps25h-library
- https://github.com/kirananto/RaZorReborn/tree/master/drivers/sensors/pressure/lps25h
LED Driver
Petalinux Project- PrerequisitesCreating a petalinux project requires a supported BSP which can be downloaded from the link below. A project also can be created without the BSP which is less convenient.
- Download the KR260-SenseHAT BSP from: https://github.com/LogicTronix/KR260-SenseHAT-Petalinux/tree/KR260-SenseHAT-Final/design_files
- This provided BSP already has configured the necessary packages and drivers, so it can be directly build. Or you can update the "Hardware on this BSP" using Get-Hardware-Config command of Petalinux.
petalinux-create --type project -s <location-to-bsp> --name <project-name>
cd <project-name>
petalinux-build
- On this provided BSP, we have included "KR260 App in the RootFS", so the Kria App automatically loads while booting on the KR260-Board.
- We also have added SenseHAT drivers by creating "recipes-modules" on this BSP file itself. Further details of the "SenseHAT" drivers can be found at: https://github.com/LogicTronix/KR260-SenseHAT-Petalinux/tree/KR260-SenseHAT-LedMatrix/driver
- So "petalinux-build" basically did all config and build the petalinux project.
Run the following command to create a bootable WIC image.
petalinux-package --wic --images-dir images/linux/ --bootfiles "ramdisk.cpio.gz.u-boot, boot.scr, Image, system.dtb, system-zynqmp-sck-kr-g-revB.dtb" --disk-name "sda"
- Make sure the dtb file is present in the <petalinux-project-dir>/images/linux/ directory.
- Burn the SD card with the WIC image, and boot up the KR260 board (with SenseHAT).
- On this WIC image, the "kr260 overlay" is automatically added on "RootFS of WIC image", the BSP have that configuration. So this step sort-out(remove) steps like "copying dtbo, bit.bin and shell.json" into Board(/lib/firmware/xilinx/) manually.
You can download the SD Image from following Google Drive [Link], you can boot the KR260 with this WIC image, clone the git repo and run the main.py application.
Loading the Overlay and Detecting Devices on the I2C BusList the apps present on the device.
sudo xmutil listapps
Unload the current app.
sudo xmutil unloadapp
Load your app (kr260 in this case).
sudo xmutil loadapp kr260
Check if the XIIC is listed as an I2C bus in the system.
i2cdetect -l
- This will list all the I2C bus in the system (i2c-7 in this case).
- If the bus is unavailable, unload and load the app again.
Check for devices on the XIIC bus.
- sudo i2cdetect -y -r <i2c-bus-number>
- This will show the address of the sensors connected to the I2C bus.
- If the Sense Hat is working, it should show the following addresses.
- The following address map of I2C bus 7 shows all the sensor addresses from the Sense HAT. These addresses are also listed in table 1.
- Make the bus accessible to your user group by running the following command.
- sudo chown root:petalinux /dev/i2c-<bus_number> && sudo chmod g+rw /dev/i2c-<bus_number>
- e.g. sudo chown root:petalinux /dev/i2c-7 && sudo chmod g+rwx /dev/i2c-7
To communicate with the sensors attached to the bus with python, a python package needs to be installed.
Installing SMBusTo install SMBus, run pip3 install smbus. SMBus provides python bindings for Linux SMBus access through i2c-dev.
SenseHAT Package [Cloning it on KR260 Board]The main.py [https://github.com/LogicTronix/KR260-SenseHAT-Petalinux/blob/KR260-SenseHAT-Final/main.py] is an example script provided for convenience. When the user runs this script, a ‘Hello World’ message is displayed over the LED matrix. The joystick can then be used to toggle between and display various readings from the temperature, humidity, pressure, accelerometer, gyroscope and magnetometer sensors.
It takes time to display long messages on the LED matrix. So longer texts are sent to the stdout instead. So watch over the terminal for messages.
To run the main.py script, run:
python3 main.py or python main.py on the terminal.
The program keeps displaying the ‘Hello World!’ message until the user uses the joystick. While the message is being displayed over the LED matrix, the program waits for user input in a separate thread. This thread updates what function to execute based on the joystick movement. The five buttons on the joystick are mapped to functions listed below.
● Up - Humidity
● Down - Pressure
● Left - Accelerometer
● Right - Gyroscope
● Middle - Temperature
The color on the display switches to a random color on every press of the joystick.
The example directory in the Logictronix Git repo has other scripts that you can try. The Readme file on the repo also has some basic examples. You can also check https://pythonhosted.org/sense-hat/api/for detailed description of the methods. Note that not all methods and properties listed in https://pythonhosted.org/sense-hat/api/ are available. Supported methods and properties are listed in the repos readme file.
If you would like to print other information to the terminal, you can use the available methods and properties listed in the repo’s readme with a python print statement. However, if you need to display the information on the matrix, convert the output from the method or property to string using the builtin python str method.
Demo - Pictorial:Xilinx Zynq MP First Stage Boot Loader
Release 2022.1 Sep 16 2022 - 04:56:15
MultiBootOffset: 0x1F0
Reset Mode : System Reset
Platform: Silicon (4.0), Running on A53-0 (64-bit) Processor, Device Name: XCZUUNKNEG
QSPI 32 bit Boot Mode
FlashID=0x20 0xBB 0x20
PrïNOTICE: BL31: v2.6(release):0897efd
NOTICE: BL31: Built : 04:58:29, Sep 16 2022
U-Boot 2022.01-g91ad7924-dirty (Sep 15 2022 - 23:00:49 -0600), Build: jenkins-BUILDS-2022.1-som_qspi_generation-131
CPU: ZynqMP
Silicon: v3
Detected name: zynqmp-smk-k26-xcl2g-rev1-sck-kr-g-rev1
Model: ZynqMP SMK-K26 Rev1/B/A
Board: Xilinx ZynqMP
DRAM: 4 GiB
PMUFW: v1.1
Xilinx I2C FRU format at nvmem0:
Manufacturer Name: XILINX
Product Name: SMK-K26-XCL2G
Serial No: XFL1MFM0QKNJ
Part Number: 5057-04
File ID: 0x0
Revision Number: 1
Xilinx I2C FRU format at nvmem1:
Manufacturer Name: XILINX
Product Name: SCK-KR-G
Serial No: XFL1LBA4HJZD
Part Number: 5100-01
File ID: 0x0
Revision Number: 1
EL Level: EL2
Chip ID: xck26
NAND: 0 MiB
MMC:
Loading Environment from nowhere... OK
In: serial
Out: serial
Err: serial
Bootmode: QSPI_MODE
Reset reason: SOFT
Net:
ZYNQ GEM: ff0b0000, mdio bus ff0c0000, phyaddr 4, interface sgmii
eth0: ethernet@ff0b0000
ZYNQ GEM: ff0c0000, mdio bus ff0c0000, phyaddr 8, interface rgmii-id
, eth1: ethernet@ff0c0000
starting USB...
Bus usb@fe200000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
Bus usb@fe300000: Register 2000440 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus usb@fe200000 for devices... 5 USB Device(s) found
scanning bus usb@fe300000 for devices... 4 USB Device(s) found
scanning usb for storage devices... 1 Storage Device(s) found
Hit any key to stop autoboot: 2 1 0
model=SMK-K26-XCL2G
Device 0: Vendor: Generic Rev: 1.98 Prod: Ultra HS-COMBO
Type: Removable Hard Disk
Capacity: 60940.0 MB = 59.5 GB (124805120 x 512)
... is now current device
Scanning usb 0:1...
Found U-Boot script /boot.scr
2777 bytes read in 1 ms (2.6 MiB/s)
## Executing script at 20000000
Trying to load boot images from usb0
21527040 bytes read in 1435 ms (14.3 MiB/s)
45024 bytes read in 5 ms (8.6 MiB/s)
23216883 bytes read in 1547 ms (14.3 MiB/s)
## Loading init Ramdisk from Legacy Image at 04000000 ...
Image Name: petalinux-initramfs-image-xilinx
Created: 2011-04-05 23:00:00 UTC
Image Type: AArch64 Linux RAMDisk Image (uncompressed)
Data Size: 23216819 Bytes = 22.1 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 00100000
Booting using the fdt blob at 0x100000
Loading Ramdisk to 779db000, end 78fff2b3 ... OK
Loading Device Tree to 000000000fff2000, end 000000000fffffdf ... OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 5.15.36-xilinx-v2022.2 (oe-user@oe-host) (aarch64-xilinx-linux-gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37.20210721) #1 SMP Mon Oct 3 07:50:07 UTC 2022
[ 0.000000] Machine model: ZynqMP SMK-K26 Rev1/B/A
[ 0.000000] earlycon: cdns0 at MMIO 0x00000000ff010000 (options '115200n8')
[ 0.000000] printk: bootconsole [cdns0] enabled
[ 0.000000] efi: UEFI not found.
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000000000000-0x00000000ffffffff]
[ 0.000000] Normal [mem 0x0000000100000000-0x000000087fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000007fefffff]
[ 0.000000] node 0: [mem 0x0000000800000000-0x000000087fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff]
[ 0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[ 0.000000] cma: Reserved 900 MiB at 0x000000003f400000
[ 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.2
[ 0.000000] percpu: Embedded 17 pages/cpu s29464 r8192 d31976 u69632
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: detected: ARM erratum 845719
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 1031940
[ 0.000000] Kernel command line: earlycon console=ttyPS1,115200 clk_ignore_unused root=/dev/ram0 rw init_fatal_sh=1 xilinx_tsn_ep.st_pcp=4 cma=900M
[ 0.000000] Unknown kernel command line parameters "init_fatal_sh=1", will be passed to user space.
[ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] software IO TLB: mapped [mem 0x000000007bf00000-0x000000007ff00000] (64MB)
[ 0.000000] Memory: 3080616K/4193280K available (13888K kernel code, 990K rwdata, 3916K rodata, 2112K init, 573K bss, 191064K reserved, 921600K cma-reserved)
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=4.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[ 0.000000] Root IRQ handler: gic_handle_irq
[ 0.000000] GIC: Using split EOI/Deactivate mode
[ 0.000000] random: get_random_bytes called from start_kernel+0x474/0x6d8 with crng_init=0
[ 0.000000] arch_timer: cp15 timer(s) running at 99.99MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171015c90f, max_idle_ns: 440795203080 ns
[ 0.000000] sched_clock: 56 bits at 99MHz, resolution 10ns, wraps every 4398046511101ns
[ 0.008304] Console: colour dummy device 80x25
[ 0.012392] Calibrating delay loop (skipped), value calculated using timer frequency.. 199.99 BogoMIPS (lpj=999990)
[ 0.022753] pid_max: default: 32768 minimum: 301
[ 0.027477] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 0.034700] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 0.043510] rcu: Hierarchical SRCU implementation.
[ 0.047497] EFI services will not be available.
[ 0.051848] smp: Bringing up secondary CPUs ...
[ 0.056565] Detected VIPT I-cache on CPU1
[ 0.056602] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[ 0.056970] Detected VIPT I-cache on CPU2
[ 0.056992] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[ 0.057344] Detected VIPT I-cache on CPU3
[ 0.057365] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[ 0.057403] smp: Brought up 1 node, 4 CPUs
[ 0.091693] SMP: Total of 4 processors activated.
[ 0.096360] CPU features: detected: 32-bit EL0 Support
[ 0.101464] CPU features: detected: CRC32 instructions
[ 0.106607] CPU: All CPU(s) started at EL2
[ 0.110642] alternatives: patching kernel code
[ 0.115941] devtmpfs: initialized
[ 0.123578] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.128112] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[ 0.154747] pinctrl core: initialized pinctrl subsystem
[ 0.155257] DMI not present or invalid.
[ 0.158354] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.164965] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[ 0.171120] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[ 0.178929] audit: initializing netlink subsys (disabled)
[ 0.184343] audit: type=2000 audit(0.150:1): state=initialized audit_enabled=0 res=1
[ 0.184696] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[ 0.198763] ASID allocator initialised with 65536 entries
[ 0.204169] Serial: AMBA PL011 UART driver
[ 0.226137] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[ 0.227194] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[ 0.233868] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.240514] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[ 1.209504] cryptd: max_cpu_qlen set to 1000
[ 1.230945] DRBG: Continuing without Jitter RNG
[ 1.427473] raid6: neonx8 gen() 2388 MB/s
[ 1.597526] raid6: neonx8 xor() 1763 MB/s
[ 1.767586] raid6: neonx4 gen() 2424 MB/s
[ 1.937629] raid6: neonx4 xor() 1722 MB/s
[ 2.107697] raid6: neonx2 gen() 2296 MB/s
[ 2.277745] raid6: neonx2 xor() 1584 MB/s
[ 2.447803] raid6: neonx1 gen() 1964 MB/s
[ 2.617859] raid6: neonx1 xor() 1347 MB/s
[ 2.787911] raid6: int64x8 gen() 1518 MB/s
[ 2.957970] raid6: int64x8 xor() 860 MB/s
[ 3.128031] raid6: int64x4 gen() 1780 MB/s
[ 3.298078] raid6: int64x4 xor() 941 MB/s
[ 3.468146] raid6: int64x2 gen() 1554 MB/s
[ 3.638191] raid6: int64x2 xor() 827 MB/s
[ 3.808250] raid6: int64x1 gen() 1148 MB/s
[ 3.978302] raid6: int64x1 xor() 575 MB/s
[ 3.978341] raid6: using algorithm neonx4 gen() 2424 MB/s
[ 3.982289] raid6: .... xor() 1722 MB/s, rmw enabled
[ 3.987221] raid6: using neon recovery algorithm
[ 3.992269] iommu: Default domain type: Translated
[ 3.996649] iommu: DMA domain TLB invalidation policy: strict mode
[ 4.003088] SCSI subsystem initialized
[ 4.006728] usbcore: registered new interface driver usbfs
[ 4.012068] usbcore: registered new interface driver hub
[ 4.017346] usbcore: registered new device driver usb
[ 4.022401] mc: Linux media interface: v0.10
[ 4.026592] videodev: Linux video capture interface: v2.00
[ 4.032064] pps_core: LinuxPPS API ver. 1 registered
[ 4.036958] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 4.046055] PTP clock support registered
[ 4.049956] EDAC MC: Ver: 3.0.0
[ 4.053303] zynqmp-ipi-mbox mailbox@ff990400: Registered ZynqMP IPI mbox with TX/RX channels.
[ 4.061713] FPGA manager framework
[ 4.065010] Advanced Linux Sound Architecture Driver Initialized.
[ 4.071259] Bluetooth: Core ver 2.22
[ 4.074523] NET: Registered PF_BLUETOOTH protocol family
[ 4.079776] Bluetooth: HCI device and connection manager initialized
[ 4.086099] Bluetooth: HCI socket layer initialized
[ 4.090937] Bluetooth: L2CAP socket layer initialized
[ 4.095958] Bluetooth: SCO socket layer initialized
[ 4.101111] clocksource: Switched to clocksource arch_sys_counter
[ 4.106955] VFS: Disk quotas dquot_6.6.0
[ 4.110775] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 4.121310] NET: Registered PF_INET protocol family
[ 4.122539] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
[ 4.131211] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
[ 4.138285] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
[ 4.146312] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear)
[ 4.153747] TCP: Hash tables configured (established 32768 bind 32768)
[ 4.159940] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[ 4.166606] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
[ 4.173760] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 4.179523] RPC: Registered named UNIX socket transport module.
[ 4.185148] RPC: Registered udp transport module.
[ 4.189805] RPC: Registered tcp transport module.
[ 4.194483] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 4.200882] PCI: CLS 0 bytes, default 64
[ 4.204906] Trying to unpack rootfs image as initramfs...
[ 4.210795] armv8-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
[ 4.218059] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[ 5.187432] Freeing initrd memory: 22672K
[ 5.217391] Initialise system trusted keyrings
[ 5.217521] workingset: timestamp_bits=46 max_order=20 bucket_order=0
[ 5.223292] NFS: Registering the id_resolver key type
[ 5.227626] Key type id_resolver registered
[ 5.231785] Key type id_legacy registered
[ 5.235763] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 5.242428] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[ 5.249774] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 5.288721] NET: Registered PF_ALG protocol family
[ 5.288774] xor: measuring software checksum speed
[ 5.296378] 8regs : 2626 MB/sec
[ 5.300109] 32regs : 3110 MB/sec
[ 5.305112] arm64_neon : 2564 MB/sec
[ 5.305597] xor: using function: 32regs (3110 MB/sec)
[ 5.310616] Key type asymmetric registered
[ 5.314686] Asymmetric key parser 'x509' registered
[ 5.319557] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[ 5.326887] io scheduler mq-deadline registered
[ 5.331381] io scheduler kyber registered
[ 5.359641] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 5.361374] Serial: AMBA driver
[ 5.364239] cacheinfo: Unable to detect cache hierarchy for CPU 0
[ 5.373439] brd: module loaded
[ 5.376665] loop: module loaded
[ 5.377504] mtdoops: mtd device (mtddev=name/number) must be supplied
[ 5.384719] tun: Universal TUN/TAP device driver, 1.6
[ 5.387158] CAN device driver interface
[ 5.391551] usbcore: registered new interface driver asix
[ 5.396284] usbcore: registered new interface driver ax88179_178a
[ 5.402331] usbcore: registered new interface driver cdc_ether
[ 5.408119] usbcore: registered new interface driver net1080
[ 5.413746] usbcore: registered new interface driver cdc_subset
[ 5.419625] usbcore: registered new interface driver zaurus
[ 5.425174] usbcore: registered new interface driver cdc_ncm
[ 5.431453] usbcore: registered new interface driver uas
[ 5.436066] usbcore: registered new interface driver usb-storage
[ 5.442609] rtc_zynqmp ffa60000.rtc: registered as rtc0
[ 5.447209] rtc_zynqmp ffa60000.rtc: setting system clock to 1970-01-01T00:03:53 UTC (233)
[ 5.455474] i2c_dev: i2c /dev entries driver
[ 5.461258] usbcore: registered new interface driver uvcvideo
[ 5.466056] Bluetooth: HCI UART driver ver 2.3
[ 5.469777] Bluetooth: HCI UART protocol H4 registered
[ 5.474887] Bluetooth: HCI UART protocol BCSP registered
[ 5.480168] Bluetooth: HCI UART protocol LL registered
[ 5.485265] Bluetooth: HCI UART protocol ATH3K registered
[ 5.490633] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 5.496888] Bluetooth: HCI UART protocol Intel registered
[ 5.502231] Bluetooth: HCI UART protocol QCA registered
[ 5.507424] usbcore: registered new interface driver bcm203x
[ 5.513052] usbcore: registered new interface driver bpa10x
[ 5.518583] usbcore: registered new interface driver bfusb
[ 5.524038] usbcore: registered new interface driver btusb
[ 5.529493] usbcore: registered new interface driver ath3k
[ 5.534988] EDAC MC: ECC not enabled
[ 5.538576] EDAC DEVICE0: Giving out device to module edac controller cache_err: DEV edac (POLLED)
[ 5.547517] EDAC DEVICE1: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[ 5.559889] sdhci: Secure Digital Host Controller Interface driver
[ 5.565633] sdhci: Copyright(c) Pierre Ossman
[ 5.569944] sdhci-pltfm: SDHCI platform and OF driver helper
[ 5.575887] ledtrig-cpu: registered to indicate activity on CPUs
[ 5.581634] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[ 5.587996] zynqmp_firmware_probe Platform Management API v1.1
[ 5.593742] zynqmp_firmware_probe Trustzone version v1.0
[ 5.627509] securefw securefw: securefw probed
[ 5.627637] zynqmp_aes firmware:zynqmp-firmware:zynqmp-aes: The zynqmp-aes driver shall be deprecated in 2022.2 and removed in 2023.1
[ 5.638527] alg: No test for xilinx-zynqmp-aes (zynqmp-aes)
[ 5.643897] zynqmp_aes firmware:zynqmp-firmware:zynqmp-aes: AES Successfully Registered
[ 5.651946] zynqmp-keccak-384 firmware:zynqmp-firmware:sha384: The zynqmp-sha-deprecated driver shall be deprecated in 2022.2 and removed in 2023.1 release
[ 5.665742] alg: No test for xilinx-keccak-384 (zynqmp-keccak-384)
[ 5.671987] alg: No test for xilinx-zynqmp-rsa (zynqmp-rsa)
[ 5.677488] usbcore: registered new interface driver usbhid
[ 5.682897] usbhid: USB HID core driver
[ 5.689514] ARM CCI_400_r1 PMU driver probed
[ 5.690096] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
[ 5.697720] usbcore: registered new interface driver snd-usb-audio
[ 5.704223] pktgen: Packet Generator for packet performance testing. Version: 2.75
[ 5.711690] Initializing XFRM netlink socket
[ 5.715315] NET: Registered PF_INET6 protocol family
[ 5.720580] Segment Routing with IPv6
[ 5.723823] In-situ OAM (IOAM) with IPv6
[ 5.727755] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 5.733890] NET: Registered PF_PACKET protocol family
[ 5.738603] NET: Registered PF_KEY protocol family
[ 5.743374] can: controller area network core
[ 5.747701] NET: Registered PF_CAN protocol family
[ 5.752442] can: raw protocol
[ 5.755378] can: broadcast manager protocol
[ 5.759532] can: netlink gateway - max_hops=1
[ 5.763935] Bluetooth: RFCOMM TTY layer initialized
[ 5.768700] Bluetooth: RFCOMM socket layer initialized
[ 5.773821] Bluetooth: RFCOMM ver 1.11
[ 5.777524] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 5.782805] Bluetooth: BNEP filters: protocol multicast
[ 5.787989] Bluetooth: BNEP socket layer initialized
[ 5.792922] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[ 5.798801] Bluetooth: HIDP socket layer initialized
[ 5.803760] 8021q: 802.1Q VLAN Support v1.8
[ 5.807980] 9pnet: Installing 9P2000 support
[ 5.812144] Key type dns_resolver registered
[ 5.816485] registered taskstats version 1
[ 5.820425] Loading compiled-in X.509 certificates
[ 5.826206] Btrfs loaded, crc32c=crc32c-generic, zoned=no, fsverity=no
[ 5.840352] ff010000.serial: ttyPS1 at MMIO 0xff010000 (irq = 60, base_baud = 6249999) is a xuartps
[ 5.849379] printk: console [ttyPS1] enabled
[ 5.849379] printk: console [ttyPS1] enabled
[ 5.853679] printk: bootconsole [cdns0] disabled
[ 5.853679] printk: bootconsole [cdns0] disabled
[ 5.862870] of-fpga-region fpga-full: FPGA Region probed
[ 5.874008] xilinx-zynqmp-dma fd500000.dma-controller: ZynqMP DMA driver Probe success
[ 5.882091] xilinx-zynqmp-dma fd510000.dma-controller: ZynqMP DMA driver Probe success
[ 5.890149] xilinx-zynqmp-dma fd520000.dma-controller: ZynqMP DMA driver Probe success
[ 5.898221] xilinx-zynqmp-dma fd530000.dma-controller: ZynqMP DMA driver Probe success
[ 5.906280] xilinx-zynqmp-dma fd540000.dma-controller: ZynqMP DMA driver Probe success
[ 5.914347] xilinx-zynqmp-dma fd550000.dma-controller: ZynqMP DMA driver Probe success
[ 5.922413] xilinx-zynqmp-dma fd560000.dma-controller: ZynqMP DMA driver Probe success
[ 5.930469] xilinx-zynqmp-dma fd570000.dma-controller: ZynqMP DMA driver Probe success
[ 5.938605] xilinx-zynqmp-dma ffa80000.dma-controller: ZynqMP DMA driver Probe success
[ 5.946672] xilinx-zynqmp-dma ffa90000.dma-controller: ZynqMP DMA driver Probe success
[ 5.954730] xilinx-zynqmp-dma ffaa0000.dma-controller: ZynqMP DMA driver Probe success
[ 5.962799] xilinx-zynqmp-dma ffab0000.dma-controller: ZynqMP DMA driver Probe success
[ 5.970855] xilinx-zynqmp-dma ffac0000.dma-controller: ZynqMP DMA driver Probe success
[ 5.978920] xilinx-zynqmp-dma ffad0000.dma-controller: ZynqMP DMA driver Probe success
[ 5.986977] xilinx-zynqmp-dma ffae0000.dma-controller: ZynqMP DMA driver Probe success
[ 5.995043] xilinx-zynqmp-dma ffaf0000.dma-controller: ZynqMP DMA driver Probe success
[ 6.003419] xilinx-zynqmp-dpdma fd4c0000.dma-controller: Xilinx DPDMA engine is probed
[ 6.014518] zynqmp-display fd4a0000.display: vtc bridge property not present
[ 6.024316] xilinx-dp-snd-codec fd4a0000.display:zynqmp_dp_snd_codec0: Xilinx DisplayPort Sound Codec probed
[ 6.034351] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm0: Xilinx DisplayPort Sound PCM probed
[ 6.042383] xilinx-dp-snd-pcm zynqmp_dp_snd_pcm1: Xilinx DisplayPort Sound PCM probed
[ 6.051163] zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13
[ 6.051178] xilinx-dp-snd-card fd4a0000.display:zynqmp_dp_snd_card: Xilinx DisplayPort Sound Card probed
[ 6.067848] OF: graph: no port node found in /axi/display@fd4a0000
[ 6.074340] xlnx-drm xlnx-drm.0: bound fd4a0000.display (ops 0xffff800008e649d8)
[ 7.281130] zynqmp-display fd4a0000.display: [drm] Cannot find any crtc or sizes
[ 7.288754] [drm] Initialized xlnx 1.0.0 20130509 for fd4a0000.display on minor 0
[ 7.296258] zynqmp-display fd4a0000.display: ZynqMP DisplayPort Subsystem driver probed
[ 7.305959] spi-nor spi0.0: mt25qu512a (65536 Kbytes)
[ 7.311073] 17 fixed-partitions partitions found on MTD device spi0.0
[ 7.317517] Creating 17 MTD partitions on "spi0.0":
[ 7.322393] 0x000000000000-0x000000080000 : "Image Selector"
[ 7.328833] 0x000000080000-0x000000100000 : "Image Selector Golden"
[ 7.335435] tpm_tis_spi spi2.0: 2.0 TPM (device-id 0x1B, rev-id 22)
[ 7.342169] 0x000000100000-0x000000120000 : "Persistent Register"
[ 7.348940] 0x000000120000-0x000000140000 : "Persistent Register Backup"
[ 7.355896] tpm tpm0: A TPM error (256) occurred attempting the self test
[ 7.362684] tpm tpm0: starting up the TPM manually
[ 7.367869] 0x000000140000-0x000000200000 : "Open_1"
[ 7.373530] 0x000000200000-0x000000f00000 : "Image A (FSBL, PMU, ATF, U-Boot)"
[ 7.381400] 0x000000f00000-0x000000f80000 : "ImgSel Image A Catch"
[ 7.388282] 0x000000f80000-0x000001c80000 : "Image B (FSBL, PMU, ATF, U-Boot)"
[ 7.396174] 0x000001c80000-0x000001d00000 : "ImgSel Image B Catch"
[ 7.403037] 0x000001d00000-0x000001e00000 : "Open_2"
[ 7.408634] 0x000001e00000-0x000002000000 : "Recovery Image"
[ 7.414917] 0x000002000000-0x000002200000 : "Recovery Image Backup"
[ 7.421813] 0x000002200000-0x000002220000 : "U-Boot storage variables"
[ 7.428996] 0x000002220000-0x000002240000 : "U-Boot storage variables backup"
[ 7.436776] 0x000002240000-0x000002280000 : "SHA256"
[ 7.442373] 0x000002280000-0x0000022a0000 : "Secure OS Storage"
[ 7.448919] 0x0000022a0000-0x000004050000 : "User"
[ 7.453715] mtd: partition "User" extends beyond the end of device "spi0.0" -- size truncated to 0x1d60000
[ 7.464534] macb ff0b0000.ethernet: Not enabling partial store and forward
[ 7.472045] macb ff0b0000.ethernet eth0: Defer probe as mdio producer ff0c0000.ethernet is not probed
[ 7.494766] random: fast init done
[ 7.533212] macb ff0c0000.ethernet: Not enabling partial store and forward
[ 7.612008] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[ 7.618517] xilinx-axipmon fd0b0000.perf-monitor: Probed Xilinx APM
[ 7.624979] xilinx-axipmon fd490000.perf-monitor: Probed Xilinx APM
[ 7.631447] xilinx-axipmon ffa10000.perf-monitor: Probed Xilinx APM
[ 7.639059] i2c i2c-1: Added multiplexed i2c bus 3
[ 7.643975] i2c i2c-1: Added multiplexed i2c bus 4
[ 7.648858] i2c i2c-1: Added multiplexed i2c bus 5
[ 7.653763] i2c i2c-1: Added multiplexed i2c bus 6
[ 7.658551] pca954x 1-0074: registered 4 multiplexed busses for I2C switch pca9546
[ 7.667076] at24 1-0050: supply vcc not found, using dummy regulator
[ 7.673738] at24 1-0050: 8192 byte 24c64 EEPROM, writable, 1 bytes/write
[ 7.680564] at24 1-0051: supply vcc not found, using dummy regulator
[ 7.687198] at24 1-0051: 8192 byte 24c64 EEPROM, writable, 1 bytes/write
[ 7.694111] cdns-i2c ff030000.i2c: 400 kHz mmio ff030000 irq 41
[ 7.701422] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer with timeout 60s
[ 7.708858] cdns-wdt ff150000.watchdog: Xilinx Watchdog Timer with timeout 10s
[ 7.717088] macb ff0b0000.ethernet: Not enabling partial store and forward
[ 7.723988] macb ff0b0000.ethernet: invalid hw address, using random
[ 7.730842] macb ff0b0000.ethernet eth0: Defer probe as mdio producer ff0c0000.ethernet is not probed
[ 7.782968] macb ff0c0000.ethernet: Not enabling partial store and forward
[ 7.789851] macb ff0c0000.ethernet: invalid hw address, using random
[ 7.803491] macb ff0c0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0c0000 irq 39 (8a:9d:2c:ac:ce:04)
[ 7.837587] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[ 7.843084] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[ 7.850827] xhci-hcd xhci-hcd.1.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x0000000002010890
[ 7.860247] xhci-hcd xhci-hcd.1.auto: irq 66, io mem 0xfe200000
[ 7.866359] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15
[ 7.874618] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 7.881836] usb usb1: Product: xHCI Host Controller
[ 7.886700] usb usb1: Manufacturer: Linux 5.15.36-xilinx-v2022.2 xhci-hcd
[ 7.893474] usb usb1: SerialNumber: xhci-hcd.1.auto
[ 7.898629] hub 1-0:1.0: USB hub found
[ 7.902393] hub 1-0:1.0: 1 port detected
[ 7.906487] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[ 7.911971] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[ 7.919619] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[ 7.926241] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.15
[ 7.934503] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 7.941720] usb usb2: Product: xHCI Host Controller
[ 7.946584] usb usb2: Manufacturer: Linux 5.15.36-xilinx-v2022.2 xhci-hcd
[ 7.953362] usb usb2: SerialNumber: xhci-hcd.1.auto
[ 7.958480] hub 2-0:1.0: USB hub found
[ 7.962239] hub 2-0:1.0: 1 port detected
[ 7.990231] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[ 7.995721] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 3
[ 8.003460] xhci-hcd xhci-hcd.2.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x0000000002010890
[ 8.012872] xhci-hcd xhci-hcd.2.auto: irq 69, io mem 0xfe300000
[ 8.018956] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15
[ 8.027218] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 8.034430] usb usb3: Product: xHCI Host Controller
[ 8.039296] usb usb3: Manufacturer: Linux 5.15.36-xilinx-v2022.2 xhci-hcd
[ 8.046070] usb usb3: SerialNumber: xhci-hcd.2.auto
[ 8.051183] hub 3-0:1.0: USB hub found
[ 8.054938] hub 3-0:1.0: 1 port detected
[ 8.059019] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[ 8.064507] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 4
[ 8.072163] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[ 8.078930] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.15
[ 8.087199] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 8.094413] usb usb4: Product: xHCI Host Controller
[ 8.099275] usb usb4: Manufacturer: Linux 5.15.36-xilinx-v2022.2 xhci-hcd
[ 8.106054] usb usb4: SerialNumber: xhci-hcd.2.auto
[ 8.111179] hub 4-0:1.0: USB hub found
[ 8.114931] hub 4-0:1.0: 1 port detected
[ 8.119424] macb ff0b0000.ethernet: Not enabling partial store and forward
[ 8.126330] macb ff0b0000.ethernet: invalid hw address, using random
[ 8.157068] macb ff0b0000.ethernet eth1: Cadence GEM rev 0x50070106 at 0xff0b0000 irq 38 (9a:f1:af:df:e0:57)
[ 8.169716] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[ 8.176730] of_cfs_init
[ 8.179183] of_cfs_init: OK
[ 8.182093] clk: Not disabling unused clocks
[ 8.186597] ALSA device list:
[ 8.189548] #0: DisplayPort monitor
[ 8.193977] Freeing unused kernel memory: 2112K
[ 8.221146] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[ 8.281151] Run /init as init process
[ 8.356375] random: python3: uninitialized urandom read (24 bytes read)
[ 8.371181] usb 3-1: new high-speed USB device number 2 using xhci-hcd
[ 8.411763] usb 1-1: New USB device found, idVendor=0424, idProduct=2744, bcdDevice= 2.21
[ 8.419950] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8.427146] usb 1-1: Product: USB2744
[ 8.430808] usb 1-1: Manufacturer: Microchip Tech
[ 8.470406] hub 1-1:1.0: USB hub found
[ 8.474215] hub 1-1:1.0: 4 ports detected
[ 8.481170] zynqmp-display fd4a0000.display: [drm] Cannot find any crtc or sizes
[ 8.561733] usb 3-1: New USB device found, idVendor=0424, idProduct=2744, bcdDevice= 2.21
[ 8.569915] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8.577077] usb 3-1: Product: USB2744
[ 8.580739] usb 3-1: Manufacturer: Microchip Tech
[ 8.585665] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
[ 8.631518] usb 2-1: New USB device found, idVendor=0424, idProduct=5744, bcdDevice= 2.21
[ 8.639704] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 8.646870] usb 2-1: Product: USB5744
[ 8.650526] usb 2-1: Manufacturer: Microchip Tech
[ 8.655780] hub 3-1:1.0: USB hub found
[ 8.659600] hub 3-1:1.0: 3 ports detected
[ 8.710377] hub 2-1:1.0: USB hub found
[ 8.714351] hub 2-1:1.0: 3 ports detected
[ 8.731207] usb 4-1: new SuperSpeed USB device number 2 using xhci-hcd
[ 8.771576] usb 4-1: New USB device found, idVendor=0424, idProduct=5744, bcdDevice= 2.21
[ 8.779755] usb 4-1: New USB device strings: Mfr=2, Product=3, SerialNumber=0
[ 8.786894] usb 4-1: Product: USB5744
[ 8.790544] usb 4-1: Manufacturer: Microchip Tech
[ 8.846801] hub 4-1:1.0: USB hub found
[ 8.850702] hub 4-1:1.0: 2 ports detected
[ 8.871121] usb 1-1.1: new high-speed USB device number 3 using xhci-hcd
[ 9.013051] macb ff0b0000.ethernet eth1: PHY [ff0c0000.ethernet-ffffffff:04] driver [TI DP83867] (irq=POLL)
[ 9.022806] macb ff0b0000.ethernet eth1: configuring for phy/sgmii link mode
[ 9.030436] pps pps0: new PPS source ptp0
[ 9.034539] macb ff0b0000.ethernet: gem-ptp-timer ptp clock registered.
MAC address for eth1 is updated to 00:0a:35:0f:db:84
[ 9.046106] usb 1-1.1: New USB device found, idVendor=0424, idProduct=2240, bcdDevice= 1.98
[ 9.049074] random: python3: uninitialized urandom read (24 bytes read)
[ 9.055535] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 9.055543] usb 1-1.1: Product: Ultra Fast Media
[ 9.055547] usb 1-1.1: Manufacturer: Generic
[ 9.055551] usb 1-1.1: SerialNumber: 000000225001
[ 9.083241] usb 3-1.3: new high-speed USB device number 3 using xhci-hcd
[ 9.090607] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[ 9.097273] scsi host0: usb-storage 1-1.1:1.0
[ 9.211146] usb 1-1.4: new high-speed USB device number 4 using xhci-hcd
[ 9.218529] usb 3-1.3: New USB device found, idVendor=0424, idProduct=2740, bcdDevice= 2.00
[ 9.226878] usb 3-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 9.234180] usb 3-1.3: Product: Hub Controller
[ 9.238610] usb 3-1.3: Manufacturer: Microchip Tech
[ 9.341940] usb 1-1.4: New USB device found, idVendor=0424, idProduct=2740, bcdDevice= 2.00
[ 9.350290] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 9.357625] usb 1-1.4: Product: Hub Controller
[ 9.362075] usb 1-1.4: Manufacturer: Microchip Tech
[ 9.655708] macb ff0c0000.ethernet eth0: PHY [ff0c0000.ethernet-ffffffff:08] driver [TI DP83867] (irq=POLL)
[ 9.665457] macb ff0c0000.ethernet eth0: configuring for phy/rgmii-id link mode
[ 9.673341] pps pps1: new PPS source ptp1
[ 9.677410] macb ff0c0000.ethernet: gem-ptp-timer ptp clock registered.
MAC address for eth0 is updated to 00:0a:35:0f:d0:0c
[ 10.151935] scsi 0:0:0:0: Direct-Access Generic Ultra HS-COMBO 1.98 PQ: 0 ANSI: 0
[ 10.161267] sd 0:0:0:0: [sda] 124805120 512-byte logical blocks: (63.9 GB/59.5 GiB)
[ 10.169520] sd 0:0:0:0: [sda] Write Protect is off
[ 10.174896] sd 0:0:0:0: [sda] No Caching mode page found
[ 10.180193] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 10.190160] sda: sda1 sda2
[ 10.194780] sd 0:0:0:0: [sda] Attached SCSI removable disk
root: recovering journal
root: clean, 63740/524288 files, 537461/1048576 blocks
[ 11.394521] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[ 12.050967] systemd[1]: System time before build time, advancing clock.
[ 12.101737] systemd[1]: systemd 249.7+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
[ 12.132035] systemd[1]: Detected architecture arm64.
Welcome to PetaLinux 2022.2_release_S10071807 (honister)!
[ 12.232592] systemd[1]: Hostname set to <logictronix>.
[ 12.383377] systemd-fstab-generator[519]: Failed to create unit file /run/systemd/generator/boot.mount, as it already exists. Duplicate entry in /etc/fstab?
[ 12.397691] systemd-sysv-generator[526]: SysV service '/etc/init.d/urandom' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.398379] systemd[517]: /lib/systemd/system-generators/systemd-fstab-generator failed with exit status 1.
[ 12.421968] systemd-sysv-generator[526]: SysV service '/etc/init.d/dropbear' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.456767] systemd-sysv-generator[526]: SysV service '/etc/init.d/save-rtc.sh' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.484742] systemd-sysv-generator[526]: SysV service '/etc/init.d/sendsigs' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.508790] systemd-sysv-generator[526]: SysV service '/etc/init.d/inetd.busybox' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.533163] systemd-sysv-generator[526]: SysV service '/etc/init.d/halt' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.557319] systemd-sysv-generator[526]: SysV service '/etc/init.d/single' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.583285] systemd-sysv-generator[526]: SysV service '/etc/init.d/umountnfs.sh' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.607566] systemd-sysv-generator[526]: SysV service '/etc/init.d/fuse' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.632278] systemd-sysv-generator[526]: SysV service '/etc/init.d/watchdog-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.656651] systemd-sysv-generator[526]: SysV service '/etc/init.d/umountfs' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 12.680582] systemd-sysv-generator[526]: SysV service '/etc/init.d/reboot' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 13.084444] systemd[1]: Queued start job for default target Multi-User System.
[ 13.092592] random: systemd: uninitialized urandom read (16 bytes read)
[ 13.127246] systemd[1]: Created slice Slice /system/getty.
[ OK ] Created slice Slice /system/getty.
[ 13.161405] random: systemd: uninitialized urandom read (16 bytes read)
[ 13.169230] systemd[1]: Created slice Slice /system/modprobe.
[ OK ] Created slice Slice /system/modprobe.
[ 13.201185] random: systemd: uninitialized urandom read (16 bytes read)
[ 13.208922] systemd[1]: Created slice Slice /system/serial-getty.
[ OK ] Created slice Slice /system/serial-getty.
[ 13.242141] systemd[1]: Created slice User and Session Slice.
[ OK ] Created slice User and Session Slice.
[ 13.281371] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ OK ] Started Dispatch Password âŠts to Console Directory Watch.
[ 13.321302] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ OK ] Started Forward Password RâŠuests to Wall Directory Watch.
[ 13.361417] systemd[1]: Reached target Path Units.
[ OK ] Reached target Path Units.
[ 13.391197] systemd[1]: Reached target Remote File Systems.
[ OK ] Reached target Remote File Systems.
[ 13.431199] systemd[1]: Reached target Slice Units.
[ OK ] Reached target Slice Units.
[ 13.461214] systemd[1]: Reached target Swaps.
[ OK ] Reached target Swaps.
[ 13.491692] systemd[1]: Listening on RPCbind Server Activation Socket.
[ OK ] Listening on RPCbind Server Activation Socket.
[ 13.531202] systemd[1]: Reached target RPC Port Mapper.
[ OK ] Reached target RPC Port Mapper.
[ 13.571423] systemd[1]: Listening on Syslog Socket.
[ OK ] Listening on Syslog Socket.
[ 13.601317] systemd[1]: Listening on initctl Compatibility Named Pipe.
[ OK ] Listening on initctl Compatibility Named Pipe.
[ 13.641640] systemd[1]: Listening on Journal Audit Socket.
[ OK ] Listening on Journal Audit Socket.
[ 13.681394] systemd[1]: Listening on Journal Socket (/dev/log).
[ OK ] Listening on Journal Socket (/dev/log).
[ 13.721448] systemd[1]: Listening on Journal Socket.
[ OK ] Listening on Journal Socket.
[ 13.751611] systemd[1]: Listening on Network Service Netlink Socket.
[ OK ] Listening on Network Service Netlink Socket.
[ 13.791496] systemd[1]: Listening on udev Control Socket.
[ OK ] Listening on udev Control Socket.
[ 13.831384] systemd[1]: Listening on udev Kernel Socket.
[ OK ] Listening on udev Kernel Socket.
[ 13.871415] systemd[1]: Listening on User Database Manager Socket.
[ OK ] Listening on User Database Manager Socket.
[ 13.913588] systemd[1]: Mounting Huge Pages File System...
Mounting Huge Pages File System...
[ 13.943728] systemd[1]: Mounting POSIX Message Queue File System...
Mounting POSIX Message Queue File System...
[ 13.983773] systemd[1]: Mounting Kernel Debug File System...
Mounting Kernel Debug File System...
[ 14.011522] systemd[1]: Condition check resulted in Kernel Trace File System being skipped.
[ 14.024023] systemd[1]: Mounting Temporary Directory /tmp...
Mounting Temporary Directory /tmp...
[ 14.063494] systemd[1]: Condition check resulted in Create List of Static Device Nodes being skipped.
[ 14.075748] systemd[1]: Starting Load Kernel Module configfs...
Starting Load Kernel Module configfs...
[ 14.114279] systemd[1]: Starting Load Kernel Module drm...
Starting Load Kernel Module drm...
[ 14.154087] systemd[1]: Starting Load Kernel Module fuse...
Starting Load Kernel Module fuse...
[ 14.184079] systemd[1]: Starting RPC Bind...
Starting RPC Bind...
[ 14.221359] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
[ 14.240340] systemd[1]: Starting Load Kernel Modules...
Starting Load Kernel Modules...
[ 14.273999] systemd[1]: Starting Remount Root and Kernel File Systems...
Starting Remount Root and Kernel File Systems[[ 14.281566] dmaproxy: loading out-of-tree module taints kernel.
0m...
[ 14.289736] EXT4-fs (sda2): re-mounted. Opts: (null). Quota mode: none.
[ 14.324030] systemd[1]: Starting Coldplug All udev Devices...
Starting Coldplug All udev Devices...
[ 14.356642] systemd[1]: Started RPC Bind.
[ OK ] Started RPC Bind.
[ 14.381563] systemd[1]: Mounted Huge Pages File System.
[ OK ] Mounted Huge Pages File System.
[ 14.431687] systemd[1]: Mounted POSIX Message Queue File System.
[ OK ] Mounted POSIX Message Queue File System.
[ 14.471833] systemd[1]: Mounted Kernel Debug File System.
[ OK ] Mounted Kernel Debug File System.
[ 14.511814] systemd[1]: Mounted Temporary Directory /tmp.
[ OK ] Mounted Temporary Directory /tmp.
[ 14.551895] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[ 14.560096] systemd[1]: Finished Load Kernel Module configfs.
[ OK ] Finished Load Kernel Module configfs.
[ 14.601860] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 14.609493] systemd[1]: Finished Load Kernel Module drm.
[ OK ] Finished Load Kernel Module drm.
[ 14.641840] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[ 14.649578] systemd[1]: Finished Load Kernel Module fuse.
[ OK ] Finished Load Kernel Module fuse.
[ 14.682548] systemd[1]: Finished Load Kernel Modules.
[ OK ] Finished Load Kernel Modules.
[ 14.712497] systemd[1]: Finished Remount Root and Kernel File Systems.
[ OK ] Finished Remount Root and Kernel File Systems.
[ 14.755645] systemd[1]: Mounting NFSD configuration filesystem...
Mounting NFSD configuration filesystem...
[ 14.791690] systemd[1]: Condition check resulted in FUSE Control File System being skipped.
[ 14.802775] systemd[1]: Mounting Kernel Configuration File System...
Mounting Kernel Configuration File System...
[ 14.853992] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
[ 14.862648] systemd[1]: Condition check resulted in Platform Persistent Storage Archival being skipped.
[ 14.875172] systemd[1]: Starting Apply Kernel Variables...
Starting Apply Kernel Variables...
Starting Create Static Device Nodes in /dev...
[ 14.935139] systemd[1]: Failed to mount NFSD configuration filesystem.
[FAILED] Failed to mount NFSD configuration filesystem.
See 'systemctl status proc-fs-nfsd.mount' for details.
[DEPEND] Dependency failed for NFS server and services.
[DEPEND] Dependency failed for NFS Mount Daemon.
[ OK ] Mounted Kernel Configuration File System.
[ OK ] Finished Apply Kernel Variables.
[ OK ] Finished Coldplug All udev Devices.
[ OK ] Finished Create Static Device Nodes in /dev.
[ OK ] Reached target Preparation for Local File Systems.
Mounting /var/volatile...
[ OK ] Started Entropy Daemon based on the HAVEGE algorithm.
Starting Journal Service...
Starting Rule-based ManageâŠfor Device Events and Files...
[ OK ] Mounted /var/volatile.
Starting Load/Save Random Seed...
[ OK ] Started Rule-based Manager for Device Events and Files.
[ OK ] Started Journal Service.
Starting Flush Journal to Persistent Storage...
[ OK ] Finished Flush Journal to Persistent Storage.
[ OK ] Reached target Sound Card.
[ OK ] Finished Load/Save Random Seed.
[ OK ] Found device Ultra_HS-COMBO boot.
[ OK ] Listening on Load/Save RF âŠitch Status /dev/rfkill Watch.
Mounting /boot...
[ OK ] Mounted /boot.
[ OK ] Reached target Local File Systems.
Starting Create Volatile Files and Directories...
[ OK ] Finished Create Volatile Files and Directories.
Starting Network Time Synchronization...
Starting Record System Boot/Shutdown in UTMP...
[ OK ] Finished Record System Boot/Shutdown in UTMP.
[ OK ] Started Network Time Synchronization.
[ OK ] Reached target System Initialization.
[ OK ] Started Daily Cleanup of Temporary Directories.
[ OK ] Reached target System Time Set.
[ OK ] Started Daily rotation of log files.
[ OK ] Reached target Timer Units.
[ OK ] Listening on D-Bus System Message Bus Socket.
[ OK ] Listening on dropbear.socket.
[ OK ] Reached target Socket Units.
[ OK ] Reached target Basic System.
[ OK ] Started archconfig.
[ OK ] Started Job spooling tools.
[ OK ] Started Periodic Command Scheduler.
[ OK ] Started D-Bus System Message Bus.
Starting dfx-mgrd Dynamic Function eXchange...
[ OK ] Started Start fan control, if configured.
Starting inetd.busybox.service...
Starting IPv6 Packet Filtering Framework...
Starting IPv4 Packet Filtering Framework...
[ OK ] Started System Logging Service.
Starting User Login Management...
[ OK ] Started dfx-mgrd Dynamic Function eXchange.
[ OK ] Finished IPv6 Packet Filtering Framework.
Mar 3 07:27:50 logictronix kernel: GIC: Adjusting CPU interface base to 0x00000000f902f000
[ OK ] Finished IPv4 Packet Filtering Framework.
[ OK ] Reached target Preparation for Network.
Mar 3 07:27:54 logictronix kernel: armv8-pmu pmu: hw perfevents: no interrupt-affinity property, guessing.
Mar 3 07:27:55 logictronix kernel: cacheinfo: Unable to detect cache hierarchy for CPU 0
Mar 3 07:27:55 logictronix kernel: mtdoops: mtd device (mtddev=name/number) must be supplied
Starting Network Configuration...
Mar 3 07:27:56 logictronix kernel: zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13
Mar 3 07:27:56 logictronix kernel: OF: graph: no port node found in /axi/display@fd4a0000
Mar 3 07:27:57 logictronix kernel: tpm tpm0: A TPM error (256) occurred attempting the self test
Mar 3 07:27:57 logictronix kernel: mtd: partition "User" extends beyond the end of device "spi0.0" -- size truncated to 0x1d60000
Mar 3 07:27:57 logictronix kernel: at24 1-0050: supply vcc not found, using dummy regulator
Mar 3 07:27:57 logictronix kernel: at24 1-0051: supply vcc not found, using dummy regulator
Mar 3 07:27:58 logictronix kernel: clk: Not disabling unused clocks
Mar 3 07:28:00 logictronix kernel: sd 0:0:0:0: [sda] No Caching mode page found
Mar 3 07:28:00 logictronix kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Mar 3 07:28:04 logictronix kernel: dmaproxy: loading out-of-tree module taints kernel.
Mar 3 07:28:07 logictronix kernel: FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ OK ] Started inetd.busybox.service.
[ OK ] Started User Login Management.
[ OK ] Started Network Configuration.
Starting Wait for Network to be Configured...
Starting Network Name Resolution...
Mar 3 07:28:09 logictronix kernel: OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/firmware-name
Mar 3 07:28:09 logictronix kernel: OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/resets
[ OK ] Started Network Name Resolution.
[ OK ] Reached target Network.
[ OK ] Reached target Host and Network Name Lookups.
Starting DNS forwarder and DHCP server...
[ OK ] Started NFS status monitor for NFSv2/3 locking..
[ OK ] Started Respond to IPv6 Node Information Queries.
Starting Network Time Service...
[ OK ] Started Network Router Discovery Daemon.
Starting Permit User Sessions...
Starting Target Communication Framework agent...
[ OK ] Finished Permit User Sessions.
[ OK ] Started Getty on tty1.
[ OK ] Started Serial Getty on ttyPS1.
[ OK ] Reached target Login Prompts.
[ OK ] Started DNS forwarder and DHCP server.
[ OK ] Started Target Communication Framework agent.
[ OK ] Started Network Time Service.
PetaLinux 2022.2_release_S10071807 logictronix ttyPS1
logictronix login:
***Things to consider while using similar HATs on PetalinuxDriversMost HATs that require drivers will probably already have drivers in the upstream Raspberry Pi linux repo. If the board is relatively new, the manufacturer of the board could provide the drivers for it. Get the drivers from the upstream repo or any other source and add it to the petalinux roofs. The steps are described in the “Adding Sense HAT Driver in the rootfs” section of this document.
InterruptsSome devices on these HATs make use of the interrupt, like the joystick on the Sense HAT. If the device is not functioning properly, you might want to check if the HAT uses interrupts on the datasheet or the schematic. When the system is interrupted, an interrupt service routine is executed to handle that interrupt.
To connect the interrupt to the PS, you can use the GPIO block and tie its interrupt output to the interrupt controller or the PS interrupt input. If there are multiple interrupts in the system, use a concat block to join all interrupts and connect the output of the concat block to the PS interrupt input.
The Sense HAT uses pin 16 on the RPi header as the interrupt pin.
Device TreeSimply adding the drivers in the root file system won’t make the device work. It will also require modification to the dts ot dtsi file. These files describe the hardware that cannot be dynamically detected.
rpi-sense@46 {
#address-cells = <0x01>;
#size-cells = <0x00>;
compatible = "rpi,rpi-sense";
reg = <0x46>;
keys-int-gpios = <&axi_gpio_0 0 4>;
status = "okay";
};
For example,
● The compatible property in the above node is used to bind the device with the specified driver.
● The #address-cells property indicates how many cells are needed to form the base address part in the reg property.
● The keys-int-gpios property tells the interrupt is handled by axi_gpio_0 interrupt controller and is connected to pin 0 and is LEVEL_HIGH triggered.
***
Thanks to Frank Shrestha [frank_shrestha@logictronix.com] for creating this "in-depth" tutorial!
Comments