DE10-Nano
DE10-Nano
Links
- http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1046&PartNo=4 - DE10-Nano product pages
- https://daq00.triumf.ca/nextcloud/index.php/s/trpnsXK5xKZdjYG - DE10-Nano documentation (local)
- https://github.com/altera-opensource/linux-socfpga - Linux kernel sources
- https://bitlog.it/hardware/building-embedded-linux-for-the-terasic-de10-nano-and-other-cyclone-v-soc-fpgas/
- https://github.com/intel/de10-nano-hardware/tree/master
- https://www.rocketboards.org/foswiki/Documentation/DeviceTreeGenerator140
- https://github.com/altera-opensource/sopc2dts
- https://www.rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide?_ts1669347393245=&erpm_id=6980624_ts1669347393245
- https://github.com/zangman/de10-nano/blob/master/docs/Flash-FPGA-from-HPS-running-Linux.md
Additional info
- https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841847/Solution+ZynqMP+PL+Programming
- https://github.com/altera-opensource/linux-socfpga/blob/socfpga-5.4.94-lts/Documentation/ABI/testing/sysfs-class-fpga-manager
Board revisions
Per https://daq00.triumf.ca/nextcloud/index.php/s/trpnsXK5xKZdjYG#pdfviewer
- revision A: -A0, EPCQ128
- revision B: -B0, EPCQ128
- revision B2: -B0, "17040025-XXXX”, EPCQ64
- revision C: -C0, EPCQ64
Serial console
DE10-Nano has a built-in USB-serial adapter connected to the ARM CPU console.
Baud rate: 115200 (set in uboot env and in the linux kernel command line)
- connect a mini-USB (*not* Micto-USB!) cable from mini-USB port on the side of the ethernet connection to a PC
- "lsusb" will find a usb-serial adapter:
$ lsusb ... Bus 001 Device 009: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC ...
- linux will create a ttyUSB device (see system messages if it did not happen)
$ ls -l /dev/ttyUSB* crw-rw-rw- 1 root dialout 188, 0 Aug 8 17:12 /dev/ttyUSB0
- confirm current user has read and write permissions to /dev/ttyUSB0, "chmod a+wr" the device node as needed, also see http://www.triumf.info/wiki/DAQwiki/index.php/SLinstall#Configure_USB_device_permissions
- use minicom & etc
minicom -D /dev/ttyUSB0 -b 115200
JTAG
DE10-Nano has a built-in USB blaster.
- connect Mini-USB (*not* Micro-USB!) on the side of HDMI and power connectors to a PC
- lsusb will show an altera usb-blaster device:
$ lsusb ... Bus 001 Device 008: ID 09fb:6010 Altera ...
- jtagconfig will find a usb-blaster and detect it is connected to a Cyclone5 SoC:
$ /daq/daqshare/olchansk/altera/17.1/quartus/bin/jtagconfig 1) DE-SoC [1-1.1] 4BA00477 SOCVHPS 02D020DD 5CSEBA6(.|ES)/5CSEMA6/..
- open quartus, connect to this usb blaster, work it as usual.
JTAG load sof file
quartus_pgm -m JTAG -o "p;output_files/DE10_NANO_SoC_GHRD.sof@2"
Initial flash card
- 8GB SD flash
- Partitions
root@daq01:~/de10-nano# fdisk -l /dev/sdb Disk /dev/sdb: 7.4 GiB, 7901020160 bytes, 15431680 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x443b5867 Device Boot Start End Sectors Size Id Type /dev/sdb1 * 6144 210943 204800 100M c W95 FAT32 (LBA) /dev/sdb2 210944 4700159 4489216 2.1G 83 Linux /dev/sdb3 2048 6143 4096 2M a2 unknown
de10_nano_linux_console.img
partitions
root@daq01:~/de10-nano# fdisk -l /dev/sdb Disk /dev/sdb: 7.4 GiB, 7901020160 bytes, 15431680 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x55f3145b Device Boot Start End Sectors Size Id Type /dev/sdb1 2121728 3799447 1677720 819.2M b W95 FAT32 /dev/sdb2 14336 2111487 2097152 1G 83 Linux /dev/sdb3 2048 4095 2048 1M a2 unknown
boot messages
Welcome to minicom 2.7 OPTIONS: I18n Compiled on Feb 7 2016, 13:37:27. Port /dev/ttyUSB0, 13:52:11 Press CTRL-A Z for help on special keys U-Boot SPL 2013.01.01 (Oct 12 2016 - 10:38:03) BOARD : Altera SOCFPGA Cyclone V Board CLOCK: EOSC1 clock 25000 KHz CLOCK: EOSC2 clock 25000 KHz CLOCK: F2S_SDR_REF clock 0 KHz CLOCK: F2S_PER_REF clock 0 KHz CLOCK: MPU clock 925 MHz CLOCK: DDR clock 400 MHz CLOCK: UART clock 100000 KHz CLOCK: MMC clock 50000 KHz CLOCK: QSPI clock 3613 KHz RESET: COLD INFO : Watchdog enabled SDRAM: Initializing MMR registers SDRAM: Calibrating PHY SEQ.C: Preparing to start memory calibration SEQ.C: CALIBRATION PASSED SDRAM: 1024 MiB ALTERA DWMMC: 0 U-Boot 2013.01.01 (Oct 12 2016 - 10:40:34) CPU : Altera SOCFPGA Platform BOARD : Altera SOCFPGA Cyclone V Board I2C: ready DRAM: 1 GiB MMC: ALTERA DWMMC: 0 *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Skipped ethaddr assignment due to invalid EMAC address in EEPROM Net: mii0 Warning: failed to set MAC address Hit any key to stop autoboot: 0 reading u-boot.scr 200 bytes read in 4 ms (48.8 KiB/s) ## Executing script at 02000000 reading soc_system.rbf ** Unable to read file soc_system.rbf ** altera_load: Failed with error code -4 ## Starting application at 0x3FF795A4 ... ## Application terminated, rc = 0x0 reading zImage 4686600 bytes read in 226 ms (19.8 MiB/s) reading socfpga.dtb 25012 bytes read in 6 ms (4 MiB/s) ## Flattened Device Tree blob at 00000100 Booting using the fdt blob at 0x00000100 Loading Device Tree to 03ff6000, end 03fff1b3 ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.5.0-00198-g6b20a29-dirty (terasic@ubuntu) (gcc version 5.2.1 20151005 (Linaro GCC7 [ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] Machine model: Terasic DE10 NANO [ 0.000000] Truncating RAM at 0x00000000-0x40000000 to -0x30000000 [ 0.000000] Consider using a HIGHMEM enabled kernel. [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] PERCPU: Embedded 13 pages/cpu @ef9ca000 s21824 r8192 d23232 u53248 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 195072 [ 0.000000] Kernel command line: console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Memory: 769012K/786432K available (7339K kernel code, 487K rwdata, 1724K rodata, 520K init, 149K ) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xf0800000 - 0xff800000 ( 240 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf0000000 ( 768 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0xc0008000 - 0xc08e1ea8 (9064 kB) [ 0.000000] .init : 0xc08e2000 - 0xc0964000 ( 520 kB) [ 0.000000] .data : 0xc0964000 - 0xc09ddfc4 ( 488 kB) [ 0.000000] .bss : 0xc09ddfc4 - 0xc0a037a8 ( 150 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 32. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] L2C: platform modifies aux control register: 0x02060000 -> 0x32460000 [ 0.000000] L2C: platform provided aux values permit register corruption. [ 0.000000] L2C: DT/platform modifies aux control register: 0x02060000 -> 0x32460000 [ 0.000000] L2C-310 erratum 769419 enabled [ 0.000000] L2C-310 enabling early BRESP for Cortex-A9 [ 0.000000] L2C-310 full line of zeros enabled for Cortex-A9 [ 0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled [ 0.000000] L2C-310 cache controller enabled, 8 ways, 512 kB [ 0.000000] L2C-310: CACHE_ID 0x410030c9, AUX_CTRL 0x46460001 [ 0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns [ 0.000006] sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 21474836475ns [ 0.000017] Switching to timer-based delay loop, resolution 10ns [ 0.000387] Console: colour dummy device 80x30 [ 0.000405] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=1) [ 0.000418] pid_max: default: 32768 minimum: 301 [ 0.000506] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000517] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.001030] CPU: Testing write buffer coherency: ok [ 0.001056] ftrace: allocating 22895 entries in 68 pages [ 0.036156] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.036408] Setting up static identity map for 0x8280 - 0x82d8 [ 0.037772] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.037839] Brought up 2 CPUs [ 0.037852] SMP: Total of 2 processors activated (400.00 BogoMIPS). [ 0.037859] CPU: All CPU(s) started in SVC mode. [ 0.038534] devtmpfs: initialized [ 0.043676] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 [ 0.043937] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.044889] NET: Registered protocol family 16 [ 0.045630] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.052486] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. [ 0.052498] hw-breakpoint: maximum watchpoint size is 4 bytes. [ 0.081967] SCSI subsystem initialized [ 0.082231] usbcore: registered new interface driver usbfs [ 0.082295] usbcore: registered new interface driver hub [ 0.082350] usbcore: registered new device driver usb [ 0.082496] sopc@0:usbphy@0 supply vcc not found, using dummy regulator [ 0.083382] pps_core: LinuxPPS API ver. 1 registered [ 0.083392] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.083421] PTP clock support registered [ 0.083567] FPGA manager framework [ 0.084131] Bluetooth: Core ver 2.21 [ 0.084187] NET: Registered protocol family 31 [ 0.084195] Bluetooth: HCI device and connection manager initialized [ 0.084209] Bluetooth: HCI socket layer initialized [ 0.084219] Bluetooth: L2CAP socket layer initialized [ 0.084243] Bluetooth: SCO socket layer initialized [ 0.084850] clocksource: Switched to clocksource timer [ 0.122985] NET: Registered protocol family 2 [ 0.123499] TCP established hash table entries: 8192 (order: 3, 32768 bytes) [ 0.123569] TCP bind hash table entries: 8192 (order: 4, 65536 bytes) [ 0.123675] TCP: Hash tables configured (established 8192 bind 8192) [ 0.123751] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.123795] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.123980] NET: Registered protocol family 1 [ 0.124362] RPC: Registered named UNIX socket transport module. [ 0.124372] RPC: Registered udp transport module. [ 0.124378] RPC: Registered tcp transport module. [ 0.124384] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.124923] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available [ 0.125760] futex hash table entries: 512 (order: 3, 32768 bytes) [ 0.134741] NFS: Registering the id_resolver key type [ 0.134851] Key type id_resolver registered [ 0.134860] Key type id_legacy registered [ 0.134917] ntfs: driver 2.1.32 [Flags: R/W]. [ 0.135225] jffs2: version 2.2. (NAND) �© 2001-2006 Red Hat, Inc. [ 0.138763] io scheduler noop registered (default) [ 0.143457] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled [ 0.144433] console [ttyS0] disabled [ 0.144470] ffc02000.serial: ttyS0 at MMIO 0xffc02000 (irq = 28, base_baud = 6250000) is a 16550A [ 0.731555] console [ttyS0] enabled [ 0.736743] brd: module loaded [ 0.741896] CAN device driver interface [ 0.746124] socfpga-dwmac ff702000.ethernet: snps,phy-addr property is deprecated [ 0.753714] stmmac - user ID: 0x10, Synopsys ID: 0x37 [ 0.758759] Ring mode enabled [ 0.761800] DMA HW capability register supported [ 0.766318] Enhanced/Alternate descriptors [ 0.770665] Enabled extended descriptors [ 0.774654] RX Checksum Offload Engine supported (type 2) [ 0.780120] TX Checksum insertion supported [ 0.784370] Enable RX Mitigation via HW Watchdog Timer [ 0.790090] socfpga-dwmac ff702000.ethernet eth0: No MDIO subnode found [ 0.802194] libphy: stmmac: probed [ 0.805602] eth0: PHY ID 00221622 at 1 IRQ POLL (stmmac-0:01) active [ 0.812394] ffb40000.usb supply vusb_d not found, using dummy regulator [ 0.819041] ffb40000.usb supply vusb_a not found, using dummy regulator [ 1.104815] dwc2 ffb40000.usb: EPs: 16, dedicated fifos, 8064 entries in SPRAM [ 1.204898] dwc2 ffb40000.usb: DWC OTG Controller [ 1.209605] dwc2 ffb40000.usb: new USB bus registered, assigned bus number 1 [ 1.216660] dwc2 ffb40000.usb: irq 40, io mem 0x00000000 [ 1.222106] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 1.228880] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 1.236081] usb usb1: Product: DWC OTG Controller [ 1.240765] usb usb1: Manufacturer: Linux 4.5.0-00198-g6b20a29-dirty dwc2_hsotg [ 1.248050] usb usb1: SerialNumber: ffb40000.usb [ 1.253141] hub 1-0:1.0: USB hub found [ 1.256923] hub 1-0:1.0: 1 port detected [ 1.261481] usbcore: registered new interface driver usb-storage [ 1.267811] mousedev: PS/2 mouse device common for all mice [ 1.273628] i2c /dev entries driver [ 1.278013] usbcore: registered new interface driver bfusb [ 1.283541] usbcore: registered new interface driver btusb [ 1.289068] Synopsys Designware Multimedia Card Interface Driver [ 1.295224] dw_mmc ff704000.flash: supports-highspeed property is deprecated. [ 1.302401] dw_mmc ff704000.flash: IDMAC supports 32-bit address mode. [ 1.308944] dw_mmc ff704000.flash: Using internal DMA controller. [ 1.315026] dw_mmc ff704000.flash: Version ID is 240a [ 1.320091] dw_mmc ff704000.flash: DW MMC controller at irq 39,32 bit host data width,1024 deep fifo [ 1.329341] dw_mmc ff704000.flash: Got CD GPIO [ 1.364830] dw_mmc ff704000.flash: 1 slots initialized [ 1.370417] ledtrig-cpu: registered to indicate activity on CPUs [ 1.376593] usbcore: registered new interface driver usbhid [ 1.382140] usbhid: USB HID core driver [ 1.386211] fpga_manager fpga0: Altera SOCFPGA FPGA Manager registered [ 1.393264] altera_hps2fpga_bridge sopc@0:fpgabridge@0: fpga bridge [hps2fpga] registered [ 1.401633] altera_hps2fpga_bridge sopc@0:fpgabridge@1: fpga bridge [lwhps2fpga] registered [ 1.410163] altera_hps2fpga_bridge sopc@0:fpgabridge@2: fpga bridge [fpga2hps] registered [ 1.418669] altera_fpga2sdram_bridge sopc@0:fpgabridge@3: fpga bridge [fpga2sdram] registered [ 1.427171] altera_fpga2sdram_bridge sopc@0:fpgabridge@3: driver initialized with handoff 00000000 [ 1.436522] oprofile: using arm/armv7-ca9 [ 1.441576] NET: Registered protocol family 10 [ 1.446710] sit: IPv6 over IPv4 tunneling driver [ 1.451897] NET: Registered protocol family 17 [ 1.456373] NET: Registered protocol family 15 [ 1.460801] can: controller area network core (rev 20120528 abi 9) [ 1.467012] NET: Registered protocol family 29 [ 1.471443] can: raw protocol (rev 20120528) [ 1.475711] can: broadcast manager protocol (rev 20120528 t) [ 1.481353] can: netlink gateway (rev 20130117) max_hops=1 [ 1.487085] Bluetooth: RFCOMM TTY layer initialized [ 1.491963] Bluetooth: RFCOMM socket layer initialized [ 1.497111] Bluetooth: RFCOMM ver 1.11 [ 1.500856] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 1.506161] Bluetooth: BNEP filters: protocol multicast [ 1.511370] Bluetooth: BNEP socket layer initialized [ 1.516326] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 1.522223] Bluetooth: HIDP socket layer initialized [ 1.527223] 8021q: 802.1Q VLAN Support v1.8 [ 1.531420] lib80211: common routines for IEEE802.11 drivers [ 1.537132] Key type dns_resolver registered [ 1.541470] ThumbEE CPU extension supported. [ 1.545747] Registering SWP/SWPB emulation handler [ 1.552065] of_cfs_init [ 1.554574] of_cfs_init: OK [ 1.559702] ttyS0 - failed to request DMA [ 1.563765] Waiting for root device /dev/mmcblk0p2... [ 1.593518] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ div = 0) [ 1.603275] mmc0: new high speed SDHC card at address 59b4 [ 1.609161] mmcblk0: mmc0:59b4 SD 7.36 GiB [ 1.614500] mmcblk0: p1 p2 p3 [ 1.675735] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities [ 1.699295] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 1.707410] VFS: Mounted root (ext4 filesystem) on device 179:2. [ 1.721690] devtmpfs: mounted [ 1.725069] Freeing unused kernel memory: 520K (c08e2000 - c0964000) [ 1.939763] systemd[1]: Failed to insert module 'autofs4': Function not implemented [ 1.948482] systemd[1]: Failed to insert module 'ip_tables': Function not implemented [ 1.968051] random: systemd urandom read with 8 bits of entropy available [ 1.977552] systemd[1]: systemd 226 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSV) [ 1.995853] systemd[1]: Detected architecture arm. Welcome to The �Ångstr�öm Distribution v2014.12! [ 2.015564] systemd[1]: Set hostname to <socfpga>. [ 2.302710] systemd[1]: bal_car.service: Cannot add dependency job, ignoring: Unit bal_car.service failed to . [ 2.318119] systemd[1]: Listening on networkd rtnetlink socket. [ OK ] Listening on networkd rtnetlink socket. [ 2.345118] systemd[1]: Listening on Journal Socket. [ OK ] Listening on Journal Socket. [ 2.365016] systemd[1]: Listening on udev Kernel Socket. [ OK ] Listening on udev Kernel Socket. [ 2.385100] systemd[1]: Created slice System Slice. [ OK ] Created slice System Slice. [ 2.435111] systemd[1]: Starting (null)... Starting (null)... [ 2.456404] systemd[1]: Mounting Debug File System... Mounting Debug File System... [ 2.486449] systemd[1]: Starting Remount Root and Kernel File Systems... Starting Remount Root and Kernel File Systems... [ 2.514859] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) [ 2.535758] systemd[1]: Created slice User and Session Slice. [ OK ] Created slice User and Session Slice. [ 2.555249] systemd[1]: Started Dispatch Password Requests to Console Directory Watch. [ OK ] Started Dispatch Password Requests to Console Directory Watch. [ 2.575159] systemd[1]: Created slice system-serial\x2dgetty.slice. [ OK ] Created slice system-serial\x2dgetty.slice. [ 2.603891] systemd[1]: Reached target Swap. [ OK ] Reached target Swap. [ 2.625080] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. [ OK ] Listening on /dev/initctl Compatibility Named Pipe. [ 2.645112] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [ OK ] Started Forward Password Requests to Wall Directory Watch. [ 2.665003] systemd[1]: Listening on Syslog Socket. [ OK ] Listening on Syslog Socket. [ 2.684923] systemd[1]: Reached target Paths. [ OK ] Reached target Paths. [ 2.704992] systemd[1]: Listening on Journal Socket (/dev/log). [ OK ] Listening on Journal Socket (/dev/log). [ 2.755246] systemd[1]: Starting Journal Service... Starting Journal Service... [ 2.776328] systemd[1]: Starting Setup Virtual Console... Starting Setup Virtual Console... [ 2.795374] systemd[1]: Created slice system-getty.slice. [ OK ] Created slice system-getty.slice. [ 2.816472] systemd[1]: Starting Apply Kernel Variables... Starting Apply Kernel Variables... [ 2.836659] systemd[1]: Mounting Configuration File System... Mounting Configuration File System... [ 2.855402] systemd[1]: Listening on udev Control Socket. [ OK ] Listening on udev Control Socket. [ 2.875004] systemd[1]: Reached target Slices. [ OK ] Reached target Slices. [ 2.887644] systemd-journald[707]: File /var/log/journal/15c23ce33f2948b3a0b09409f18dc8a2/system.journal corr. [ 2.904311] systemd[1]: Mounted Debug File System. [ OK ] Mounted Debug File System. [ 2.925263] systemd[1]: Mounted Configuration File System. [ OK ] Mounted Configuration File System. [ 2.945429] systemd[1]: Started Journal Service. [ OK ] Started Journal Service. [ OK ] Started (null). [ OK ] Started Remount Root and Kernel File Systems. [ OK ] Started Setup Virtual Console. [ OK ] Started Apply Kernel Variables. Starting udev Coldplug all Devices... Starting Load/Save Random Seed... Starting Create Static Device Nodes in /dev... Starting Flush Journal to Persistent Storage... [ OK ] Started Load/Save Random Seed. [ OK ] Started Create Static Device Nodes in /dev. [ 3.311780] systemd-journald[707]: Received request to flush runtime journal from PID 1 [ OK ] Reached target Local File Systems (Pre). [ 3.404507] random: nonblocking pool is initialized Mounting /tmp... Starting udev Kernel Device Manager... [ OK ] Mounted /tmp. [ OK ] Started Flush Journal to Persistent Storage. [ OK ] Started udev Coldplug all Devices. [ OK ] Started udev Kernel Device Manager. [ OK ] Found device /dev/ttyS0. [ OK ] Reached target Local File Systems. Starting Create Volatile Files and Directories... [ OK ] Started Create Volatile Files and Directories. Starting Update UTMP about System Boot/Shutdown... Starting Network Time Synchronization... [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Started Network Time Synchronization. [ OK ] Reached target System Time Synchronized. [ OK ] Reached target System Initialization. [ OK ] Started Daily Cleanup of Temporary Directories. [ OK ] Reached target Timers. [ OK ] Listening on RPCbind Server Activation Socket. Starting sshd.socket. Starting Restore Sound Card State... [ OK ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket. [ OK ] Listening on D-Bus System Message Bus Socket. [ OK ] Listening on sshd.socket. [ OK ] Started Restore Sound Card State. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. Starting Connection service... Starting Login Service... Starting Avahi mDNS/DNS-SD Stack... [ OK ] Started System Logging Service. [ OK ] Started Kernel Logging Service. [ OK ] Started D-Bus System Message Bus. [ OK ] Started Avahi mDNS/DNS-SD Stack. Starting Network Service... [ OK ] Started Timestamping service. Starting Network Time Service (one-shot ntpdate mode)... [ OK ] Started Login Service. [ OK ] Started Network Service. [ OK ] Started Network Time Service (one-shot ntpdate mode). [ OK ] Reached target Network. Starting Target Communication Framework agent... Starting Network Name Resolution... [ OK ] Started Connection service. [ OK ] Reached target Remote File Systems. Starting Permit User Sessions... [ OK ] Started Network Name Resolution. [ OK ] Started Target Communication Framework agent. [ 5.037457] eth0: device MAC address ee:c0:c8:04:88:52 [ OK ] Started Permit User Sessions. Starting WPA supplicant... [ 5.128624] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ OK ] Started Serial Getty on ttyS0. [ OK ] Started Getty on tty1. [ OK ] Reached target Login Prompts. [ OK ] Reached target Multi-User System. Starting Update UTMP about System Runlevel Changes... [ OK ] Started WPA supplicant. [ OK ] Started Update UTMP about System Runlevel Changes. .---O---. | | .-. o o | | |-----.-----.-----.| | .----..-----.-----. | | | __ | ---'| '--.| .-'| | | | | | | | |--- || --'| | | ' | | | | '---'---'--'--'--. |-----''----''--' '-----'-'-'-' -' | '---' The Angstrom Distribution socfpga ttyS0
uname -a
root@socfpga:~# uname -a Linux socfpga 4.5.0-00198-g6b20a29-dirty #8 SMP Thu Apr 27 23:46:29 PDT 2017 armv7l GNU/Linux
/proc/cpuinfo
root@socfpga:~# cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 0 (v7l) BogoMIPS : 200.00 Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0 processor : 1 model name : ARMv7 Processor rev 0 (v7l) BogoMIPS : 200.00 Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0 Hardware : Altera SOCFPGA Revision : 0000 Serial : 0000000000000000 root@socfpga:~#
benchmarks
memcpy
root@socfpga:~# g++ -O2 -Wall -Wuninitialized memcpy.cc -o memcpy root@socfpga:~# ./memcpy memcpy 1 KiBytes: 999 MB/sec memcpy 2 KiBytes: 1569 MB/sec memcpy 4 KiBytes: 2172 MB/sec memcpy 8 KiBytes: 2728 MB/sec memcpy 16 KiBytes: 3118 MB/sec memcpy 32 KiBytes: 2237 MB/sec memcpy 64 KiBytes: 1503 MB/sec memcpy 128 KiBytes: 1290 MB/sec memcpy 256 KiBytes: 740 MB/sec memcpy 512 KiBytes: 392 MB/sec memcpy 1024 KiBytes: 355 MB/sec memcpy 2048 KiBytes: 331 MB/sec memcpy 4096 KiBytes: 312 MB/sec memcpy 8192 KiBytes: 299 MB/sec memcpy 16384 KiBytes: 298 MB/sec memcpy 32768 KiBytes: 298 MB/sec memcpy 65536 KiBytes: 297 MB/sec memcpy 131072 KiBytes: 297 MB/sec root@socfpga:~#
ttcp
- receive 100 Mbytes/sec
root@socfpga:~# ./ttcp -r -s ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp ttcp-r: socket ttcp-r: accept from 192.168.1.1 ttcp-r: 819200000 bytes in 7.05 real seconds = 113525.45 KB/sec +++ ttcp-r: 106692 I/O calls, msec/call = 0.07, calls/sec = 15140.32 ttcp-r: 0.0user 3.2sys 0:07real 46% 0i+0d 718maxrss 0+2pf 18009+19csw root@socfpga:~#
- transmit 95 Mbytes/sec
root@socfpga:~# ./ttcp -t -s 192.168.1.1 -n 100000 ttcp-t: buflen=8192, nbuf=100000, align=16384/0, port=5001 tcp -> 192.168.1.1 ttcp-t: socket ttcp-t: connect ttcp-t: 819200000 bytes in 8.47 real seconds = 94484.25 KB/sec +++ ttcp-t: 100000 I/O calls, msec/call = 0.09, calls/sec = 11810.53 ttcp-t: 0.0user 1.7sys 0:08real 21% 0i+0d 718maxrss 0+2pf 1346+15csw root@socfpga:~#
example projects
Download DE10-Nano_v.1.3.1_HWrevC_SystemCD.zip, unzip, go into Demonstrations/SoC_FPGA, copy DE10_NANO_SoC_GHRD and HPS_FPGA_LED.
Together, they demonstrate how to flash the LEDs from the ARM CPU through the AXI bridge into the FPGA, into the qsys fabric into the PIO controller into the LEDs.
DE10_NANO_SoC_GHRD
- go to the DE10_NANO_SoC_GHRD
- go to output_files
- copy fpga firmware to the ARM machine: scp DE10_NANO_SoC_GHRD.sof soc_system.rbf root@192.168.1.227:
- this no longer works:
#!/bin/sh echo 0 > /sys/class/fpga-bridge/hps2fpga/enable echo 0 > /sys/class/fpga-bridge/fpga2hps/enable echo 0 > /sys/class/fpga-bridge/lwhps2fpga/enable dd if=/home/root/DE1_SoC_Computer.rbf of=/dev/fpga0 bs=1M echo 1 > /sys/class/fpga-bridge/hps2fpga/enable echo 1 > /sys/class/fpga-bridge/fpga2hps/enable echo 1 > /sys/class/fpga-bridge/lwhps2fpga/enable
- THIS DOES NOT WORK - now we have to do this:
46 mkdir /config 47 mount -t configfs configfs /config 48 mkdir /config/device-tree/overlays/test dtc -O dtb -o load_rbf.dtbo -b0 -I dts < load_rbf.dts cp load_rbf.dtbo /lib/firmware cp soc_system.rbf /lib/firmware/de10_soc.rbf echo load_rbf.dtbo > /config/device-tree/overlays/test/path
root@socfpga:~# cat load_rbf.dts /dts-v1/; /plugin/; / { fragment@0 { target-path = "/soc/base-fpga-region"; #address-cells = <1>; #size-cells = <1>; overlay { firmware-name = "de10_soc.rbf"; #address-cells = <1>; #size-cells = <1>; }; }; }; root@socfpga:~#
- load sof file using usb jtag:
- adjust usb permissions per https://www.triumf.info/wiki/DAQwiki/index.php/SLinstall#Configure_USB_device_permissions
- connect usb jtag cable (need "mini-usb to usb-A" cable)
- run jtagconfig
daq01:~$ LD_LIBRARY_PATH=/daq/daqshare/olchansk/altera/17.1-EDS/qprogrammer/linux64 /daq/daqshare/olchansk/altera/17.1-EDS/qprogrammer/linux64/jtagconfig 1) DE-SoC [1-2] 4BA00477 SOCVHPS 02D020DD 5CSEBA6(.|ES)/5CSEMA6/..
- run jtag programmer
LD_LIBRARY_PATH=/daq/daqshare/olchansk/altera/17.1-EDS/qprogrammer/linux64 /daq/daqshare/olchansk/altera/17.1-EDS/qprogrammer/linux64/quartus_pgm -c 1 -m JTAG -o "p;DE10_NANO_SoC_GHRD.sof@2"
- if sof file loaded correctly, all LEDs will turn on, one LED will flash.
HPS_FPGA_LED
- Download SoCEDSSetup-17.1.0.590-linux.run
- Run it, select installation into /daq/daqshare/olchansk/altera/17.1-EDS
- cd 17.1-EDS/embedded/ds-5_installer, run install.sh
- Run it, select installation into /daq/daqshare/olchansk/altera/DS-5_v5.27.1
- (select "skip steps that require root permissions").
- go to the HPS_FPGA_LED project
- /daq/daqshare/olchansk/altera/DS-5_v5.27.1/bin/suite_exec sh
- make SOCEDS_ROOT=/daq/daqshare/olchansk/altera/17.1-EDS/embedded
- HPS_FPGA_LED will be created
- copy it to the ARM machine: scp HPS_FPGA_LED root@192.168.1.240:
- go to the ARM machine, run it. (ARM machine will freeze, no ping)
- if sof file is loaded, the program will run and flash the LEDs
booting FPGA from EPCS64
Per table 3-2, change the SW10 MSEL pins:
Board orientation is:
- power connector on the left, eth connector on the right
- switch position is "up" is "on"; "down" is "off"
on-off-on-off-on-on -> default -> configure from HPS on-on-on-on-on-on -> configure from HPS on-off-on-on-off-on -> configure from EPCS64
boot Linux from SD flash
- take a new 32 GB flash card
- create 3 partitions: fpga boot partition (contains u-boot), u-boot partition (contains the linux kernel) and the linux userland partition
fdisk -l /dev/sdb [root@armdaq07 ~]# fdisk -l Disk /dev/mmcblk0: 31.9 GB, 31914983424 bytes, 62333952 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xddcde1b7 Device Boot Start End Blocks Id System /dev/mmcblk0p1 2048 4095 1024 a2 Unknown /dev/mmcblk0p2 4096 1681816 838860+ b W95 FAT32 /dev/mmcblk0p3 1683456 62333951 30325248 83 Linux [root@armdaq07 ~]#
- copy the images:
# ls -l /daq/daqstore/olchansk/daq/DE10-Nano/*.img -rw-r--r-- 1 olchansk users 1945317376 Jun 26 2017 /daq/daqshare/olchansk/DE10-Nano/de10_nano_linux_console.img -rw-r--r-- 1 olchansk users 1048576 Aug 8 17:30 /daq/daqshare/olchansk/DE10-Nano/image-1-fpga.img -rw-r--r-- 1 olchansk users 858992640 Aug 8 17:30 /daq/daqshare/olchansk/DE10-Nano/image-2-uboot.img # dd if=/daq/daqstore/olchansk/daq/DE10-Nano/image-1-fpga.img of=/dev/sdX1 bs=1024k # dd if=/daq/daqstore/olchansk/daq/DE10-Nano/image-2-uboot.img of=/dev/sdX2 bs=1024k
- move sdflash card from PC to DE10-Nano
- start the serial console (see above)
- cycle the power or reset the DE10-Nano to boot from sd flash
- on the serial console, you will get the u-boot prompt
- run "saveenv"
SOCFPGA_CYCLONE5 # saveenv Saving Environment to MMC... Writing to MMC(0)... done SOCFPGA_CYCLONE5 #
- change boot partitions:
SOCFPGA_CYCLONE5 # setenv mmcloadpart 2 SOCFPGA_CYCLONE5 # setenv mmcroot /dev/mmcblk0p3 SOCFPGA_CYCLONE5 # setenv callscript 'if fatload mmc 0:2 $fpgadata $scriptfile;then source $fpgadata; else echo Optional boot script not found. Continuing to boot normally; fi;' SOCFPGA_CYCLONE5 # saveenv
- set MAC address (the DE10-Nano board has no MAC address chip, so MAC address has to be assigned manually. Use addresses that start with "02:x:x:x:x:x", see "Locally Administered Address Ranges"
SOCFPGA_CYCLONE5 # setenv ethaddr 02:aa:bb:cc:dd:ee SOCFPGA_CYCLONE5 # saveenv
- examine result, save and reboot
SOCFPGA_CYCLONE5 # printenv ... SOCFPGA_CYCLONE5 # saveenv Saving Environment to MMC... Writing to MMC(0)... done SOCFPGA_CYCLONE5 # SOCFPGA_CYCLONE5 # reset resetting ...
- the linux kernel should boot, fail to find the root filesystem ("VFS: Unable to mount root fs")
- move the SD flash card back to the PC
- create the linux root filesystem
mke2fs -t ext4 -O ^huge_file /dev/sdb3 mount /dev/sdb3 /mnt/tmp #rsync -av /ladd/data0/backup.os/armdaq05/ /mnt/tmp/ rsync -av /daq/daqshare/olchansk/DE10-Nano/image-3-chronobox/ /mnt/tmp/ sync
- set the IP address
cd /mnt/tmp/etc/sysconfig/network-scripts emacs -nw ifcfg-eth0
to read this: (change IPADDR=x.x.x.x as required)
TYPE=Ethernet BOOTPROTO=none DNS1=142.90.100.19 DOMAIN=triumf.ca DEFROUTE=yes IPV4_FAILURE_FATAL=yes #NAME=static #UUID=fba7e7fa-0403-4fd6-965e-778e7af0dd99 ONBOOT=yes #IPADDR=142.90.111.143 IPADDR=142.90.121.107 PREFIX=19 GATEWAY=142.90.100.18
- eject SD flash card, move it to the DE10-Nano
cd / umount /dev/sdb3 eject /dev/sdb
- try to boot
boot Linux from network
uboot version: U-Boot 2013.01.01
- fw_printenv
- remember old bootcmd: bootcmd=run callscript; run mmcload; run mmcboot
- remember old bootargs: bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait
- fw_setenv bootcmd 'run bridge_enable_handoff; run netboot'
- fw_setenv ramboot bootz \${loadaddr} - \${fdtaddr}
- remember to set the MAC address, there is no MAC eeprom!
- fw_setenv ethaddr 02:aa:bb:cc:dd:01 ### see chronobox page about chronobox MAC assignements
- fw_setenv bootargs console=ttyS0,115200 ip=dhcp root=/dev/nfs rw nfsroot=192.168.1.1:/zssd/nfsroot/%s,vers=3 panic=15
an even older old bootargs:
- setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p3 rw rootwait panic=15
update april 2022
root@cb03:~# /home/agdaq/packages/libubootenv/build/src/fw_printenv | grep ^ethaddr ethaddr=02:aa:bb:cc:cb:03 root@cb03:~# /home/agdaq/packages/libubootenv/build/src/fw_printenv | grep ^bootcmd bootcmd=run bridge_enable_handoff; run netboot root@cb03:~# /home/agdaq/packages/libubootenv/build/src/fw_printenv | grep ^netboot netboot=dhcp ${bootimage} ; tftp ${fdtaddr} ${fdtimage} ; run ramboot root@cb03:~# /home/agdaq/packages/libubootenv/build/src/fw_printenv | grep ^ramboot ramboot=bootz ${loadaddr} - ${fdtaddr}
u-boot environment access from linux
- on chronobox cb02 Raspbian-10
- apt install cmake libyaml-dev
- mkdir ~/git; cd ~/git
- git clone https://github.com/sbabic/libubootenv
- cd libubootenv
- mkdir build; cd build; cmake ..; make; ls -l ./src/fw_printenv
use fw_printenv from above
- yum install uboot-tools
- apt install u-boot-tools ### does not work, see https://bugs.centos.org/view.php?id=14151
- comment out everything in /etc/fw_env.config, add this line:
/dev/mmcblk0 0x200 0x1000
- fw_printenv should work (it should NOT print "Warning: Bad CRC, using default environment" as the very first line)
Example: set MAC address from Linux:
fw_setenv ethaddr 02:aa:bb:cc:dd:01 fw_printenv | grep ethaddr= ethaddr=02:aa:bb:cc:dd:01
Install busybox
For reasons unclear the "devmem" command (part of busybox) is missing from the centos7 userland image. To install it, do this:
wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-armv7r file busybox-armv7r chmod a+x ./busybox-armv7r ./busybox-armv7r ./busybox-armv7r devmem
FPGA bridge access magic
special magic may be needed to enabled /dev/mem access to the FPGA bridge, per https://lists.rocketboards.org/pipermail/rfi/2015-August/003259.html
HI, By default the bridges will only allow privileged accesses in Arria 10. At this time i am not aware of any way to adjust this from linux space, but it is entirely configurable from a uboot prompt. In: serial Out: serial Err: serial Model: SOCFPGA Arria10 Dev Kit Net: dwmac.ff800000 Hit any key to stop autoboot: 0 SOCFPGA_ARRIA10 # SOCFPGA_ARRIA10 # SOCFPGA_ARRIA10 # mw.l 0xFFD13500 0x1 SOCFPGA_ARRIA10 # mw.l 0xFFD13504 0x1 SOCFPGA_ARRIA10 # mw.l 0xFFD11004 0xffffffff SOCFPGA_ARRIA10 # md.l 0xFFD0502C 1 ffd0502c: 0000003f ?... SOCFPGA_ARRIA10 # mw.l 0xFFD0502C 0x3C SOCFPGA_ARRIA10 # md.l 0xFFD0502C 1 ffd0502c: 0000003c <... SOCFPGA_ARRIA10 # md.l 0xc0000000 10 c0000000: 00000000 00000000 00000000 00000000 ................ c0000010: 00000000 00000000 00000000 00000000 ................ c0000020: 00000000 00000000 00000000 00000000 ................ c0000030: 00000000 00000000 00000000 00000000 ................ SOCFPGA_ARRIA10 # the above could easily be added to a uboot script and run automatically at boot. In linux, you can then root at arria10:~# devmem --help BusyBox v1.22.1 (2015-05-31 18:07:25 UTC) multi-call binary. Usage: devmem ADDRESS [WIDTH [VALUE]] Read/write from physical address ADDRESS Address to act upon WIDTH Width (8/16/...) VALUE Data to be written root at arria10:~# devmem 0xc0000000 32 0xdeadbeef root at arria10:~# devmem 0xc0000000 32 0xDEADBEEF root at arria10:~# to test unprivileged accesses. --dalon
Load FPGA from Linux
THIS DOES NOT WORK
from here: https://forum.rocketboards.org/t/load-fpga-rbf-from-device-tree-overlay-example/999/16
Finally, I found a working solution: load_rbf.dts: /dts-v1/; /plugin/; / { fragment@0 { target-path = "/soc/base-fpga-region"; #address-cells = <1>; #size-cells = <1>; overlay { firmware-name = "de10_soc.rbf"; #address-cells = <1>; #size-cells = <1>; }; }; }; dtc -O dtb -o load_rbf.dtbo -b 0 -@ load_rbf.dts Copy load_rbf.dtbo and de10_soc.rbf to /lib/firmware mount -t configfs configfs /config rmdir /config/device-tree/overlays/test mkdir /config/device-tree/overlays/test echo load_rbf.dtbo > /config/device-tree/overlays/test/path The magic command is: devmem 0xff800000 32 0x00000019 I really don’t know what this does. However, by looking at how the bridge is enabled in u-boot: #bridge_enable_handoff=mw $fpgaintf ${fpgaintf_handoff}; go $fpga2sdram_apply; mw $fpga2sdram ${fpga2sdram_handoff}; mw $axibridge ${axibridge_handoff}; mw $l3remap ${l3remap_handoff} #mw $fpgaintf ${fpgaintf_handoff}; #fpgaintf=ffd08028 #fpgaintf_handoff=0x00000000 ->devmem 0xffd08028 32 0x00000000 #go $fpga2sdram_apply; ->?? #mw $fpga2sdram ${fpga2sdram_handoff}; #fpga2sdram=ffc25080 #fpga2sdram_handoff=0x00000000 ->devmem 0xffc25080 32 0x00000000 #mw $axibridge ${axibridge_handoff}; #axibridge=ffd0501c #axibridge_handoff=0x00000000 ->devmem 0xffd0501c 32 0x00000000 #mw $l3remap ${l3remap_handoff} #l3remap=ff800000 #l3remap_handoff=0x00000019 ->devmem 0xff800000 32 0x00000019 I found that this register needs to be written to 0x19 and then there is no bus error any more.   How to load RBF file from Linux kernel 4.1 on DE10-Nano SoC 2
THE ABOVE DOES NOT WORK: echo load_rbf.dtbo > /config/device-tree/overlays/test/path BOMBS.
from here: https://forum.rocketboards.org/t/rbf-with-overlay/1800
Hi, this issue is resolved by adding following change in arch/arm/boot/dts/socfpga.dtsi base_fpga_region: base-fpga-region { compatible = “fpga-region”; fpga-mgr = <&fpgamgr0>; fpga-bridges = <&fpga_bridge0>; #address-cells = <0x1>; #size-cells = <0x1>; }; modifying
UPDATED 9feb2024
- https://github.com/zangman/de10-nano/blob/master/docs/Flash-FPGA-from-HPS-running-Linux.md
- blink.dtso
/dts-v1/; /plugin/; /{ fragment@0 { target-path = "/soc/base-fpga-region"; __overlay__ { #address-cells = <1>; #size-cells = <1>; firmware-name = "blink.rbf"; }; }; };
- dtc -O dtb -o blink.dtbo -b 0 -@ blink.dtso
- cp blink.dtbo /lib/firmware
- cp blink.rbf /lib/firmware
- mkdir -p /config
- mount -t configfs configfs /config
- rmdir /config/device-tree/overlays/blink
- mkdir /config/device-tree/overlays/blink
- echo -n "blink.dtbo" > /config/device-tree/overlays/blink/path
- BOMBS: dmesg: overlay: find target, node: /fragment@0, path '/soc/base-fpga-region' not found
- sure enough, there is no /soc/base-fpga-region ni the device tree at /sys/firmware/devicetree
- I think I have a bum socfpga.dtb file that was generated by ??? for which kernel, etc...
- use de0 dtb file:
- cp /home/olchansk/daq/linux/linux-socfpga/arch/arm/boot/dts/socfpga_cyclone5_de0_nano_soc.dtb /tftpboot/socfpga.dtb
- reboot ok
- observe /dev/i2c-1 is gone, only /dev/i2c-0 is there.
- observe /sys/firmware/devicetree/base/soc/base-fpga-region is there, name matches what's in blink.dtso
- mkdir /config/device-tree/overlays/blink
- echo -n "blink.dtbo" > /config/device-tree/overlays/blink/path
- BOMBS: because we did not supply a valid rbf file (and did not set the boot mode switches)
[ 161.764436] fpga_manager fpga0: writing blink.rbf to Altera SOCFPGA FPGA Manager [ 161.765026] fpga_manager fpga0: loading /lib/firmware/blink.rbf failed with error -22 [ 161.765046] fpga_manager fpga0: Direct firmware load for blink.rbf failed with error -22 [ 161.765063] fpga_manager fpga0: Error requesting firmware blink.rbf [ 161.765072] fpga_region region0: failed to load FPGA image [ 161.765085] OF: overlay: overlay changeset pre-apply notifier error -22, target: /soc/base-fpga-region [ 161.765110] create_overlay: Failed to create overlay (err=-22)
- copy correct RBF file to /lib/firmware/blink.rbf
- rmdir /config/device-tree/overlays/blink
- mkdir /config/device-tree/overlays/blink
- echo -n "blink.dtbo" > /config/device-tree/overlays/blink/path
- BOMBS: we did not set the MSEL jumpers!
[ 958.339222] fpga_manager fpga0: writing blink.rbf to Altera SOCFPGA FPGA Manager [ 958.695612] fpga_manager fpga0: Error after writing image data to FPGA [ 958.696835] fpga_region region0: failed to load FPGA image [ 958.696853] OF: overlay: overlay changeset pre-apply notifier error -110, target: /soc/base-fpga-region [ 958.696888] create_overlay: Failed to create overlay (err=-110)
- set MSEL to "all on", power up, boot ok
- echo -n "blink.dtbo" > /config/device-tree/overlays/blink/path
- light blink, then it goes into a reset cycle...
- sure enough bad power supply, no 5VDC, see 4.2..3.5V, find a proper DE10 power supply, boot okey, try again!
- success
[ 108.122978] fpga_manager fpga0: writing blink.rbf to Altera SOCFPGA FPGA Manager [ 108.735916] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /soc/base-fpga-region/firmware-name
add missing i2c-1
copy snippet from here: https://github.com/intel/de10-nano-hardware/blob/master/devicetrees/de10-nano-base.dtsi
i2c1.dtso
/plugin/; /{ fragment@0 { target-path = "/soc/i2c@ffc05000"; __overlay__ { status = "okay"; clock-frequency = <100000>; i2c-sda-hold-time-ns = <500>; }; }; };
emacs -nw i2c1.dtso dtc -O dtb -o i2c1.dtbo -b 0 -@ i2c1.dtso cp i2c1.dtbo /lib/firmware/ mkdir /config/device-tree/overlays/i2c1 echo -n "i2c1.dtbo" > /config/device-tree/overlays/i2c1/path [ 836.451323] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /soc/i2c@ffc05000/status root@dltdc:~# ls -l /dev/i2c* crw-rw-rw- 1 root i2c 89, 0 Feb 9 21:51 /dev/i2c-0 crw-rw---- 1 root i2c 89, 1 Feb 9 22:15 /dev/i2c-1 root@dltdc:~# i2cdetect -y -r 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- root@dltdc:~#
after setting correct i2c hold time, connected to DLDB board:
root@dltdc:~# i2cdetect -y -r 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- 47 48 49 4a 4b -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- root@dltdc:~#
after running dldb script, 0x21 and 0x26 also show up:
root@dltdc:~# i2cdetect -y -r 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- 21 -- -- -- -- 26 -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- 47 48 49 4a 4b -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- root@dltdc:~#
Build Linux kernel
- git clone https://github.com/altera-opensource/linux-socfpga.git
- git clone https://github.com/altera-opensource/u-boot-socfpga.git
- cd linux-socfpga
- git checkout socfpga-6.1.55-lts
- export ARCH=arm
- make socfpga_defconfig
- make menuconfig # configure the kernel, ha, ha, ha!
- make ### bombs, need to know how to cross-compile!
- Ubuntu 22.04
- apt install gcc-arm-linux-gnueabihf
- export CROSS_COMPILE=arm-linux-gnueabihf-
- make -j
- ls -l arch/arm/boot/zImage
-rwxr-xr-x 1 olchansk users 5112608 Feb 3 18:31 arch/arm/boot/zImage
- try to boot it?
new boot messages
2024 feb 26
resetting ... U-Boot SPL 2013.01.01 (Mar 06 2019 - 19:53:19) BOARD : Altera SOCFPGA Cyclone V Board CLOCK: EOSC1 clock 25000 KHz CLOCK: EOSC2 clock 25000 KHz CLOCK: F2S_SDR_REF clock 0 KHz CLOCK: F2S_PER_REF clock 0 KHz CLOCK: MPU clock 800 MHz CLOCK: DDR clock 400 MHz CLOCK: UART clock 100000 KHz CLOCK: MMC clock 50000 KHz CLOCK: QSPI clock 3125 KHz RESET: WARM INFO : Watchdog enabled SDRAM: Initializing MMR registers SDRAM: Calibrating PHY SEQ.C: Preparing to start memory calibration SEQ.C: CALIBRATION PASSED SDRAM: 1024 MiB ALTERA DWMMC: 0 U-Boot 2013.01.01-g0c9a3bd-dirty (Feb 28 2019 - 16:03:30) CPU : Altera SOCFPGA Platform BOARD : Altera SOCFPGA Cyclone V Board I2C: ready DRAM: 1 GiB MMC: ALTERA DWMMC: 0 In: serial Out: serial Err: serial Net: mii0 Hit any key to stop autoboot: 0 ## Starting application at 0x3FF785A8 ... ## Application terminated, rc = 0x0 Waiting for PHY auto negotiation to complete... done ENET Speed is 1000 Mbps - FULL duplex connection BOOTP broadcast 1 BOOTP broadcast 2 DHCP client bound to address 192.168.0.2 Using mii0 device TFTP from server 192.168.0.1; our IP address is 192.168.0.2 Filename 'zImage'. Load address: 0x8000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# #################### 3.5 MiB/s done Bytes transferred = 5056104 (4d2668 hex) Using mii0 device TFTP from server 192.168.0.1; our IP address is 192.168.0.2 Filename 'socfpga.dtb'. Load address: 0x100 Loading: ## 3.2 MiB/s done Bytes transferred = 26458 (675a hex) ## Flattened Device Tree blob at 00000100 Booting using the fdt blob at 0x00000100 reserving fdt memory region: addr=0 size=1000 Loading Device Tree to 03ff6000, end 03fff759 ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 6.1.55-246590-g57cf7f3b7f73 (olchansk@daq00.triumf.ca) (arm-linux-gnueabihf-gcc (Ubuntu 11.4.0-1ubuntu1~224 [ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: Terasic DE-0(Atlas) [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x000000002fffffff] [ 0.000000] HighMem [mem 0x0000000030000000-0x000000003fffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x000000003fffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003fffffff] [ 0.000000] percpu: Embedded 15 pages/cpu s30228 r8192 d23020 u61440 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 260608 [ 0.000000] Kernel command line: console=ttyS0,115200 ip=dhcp root=/dev/nfs rw nfsroot=192.168.0.1:/nfsroot/%s,vers=3 panic=15 [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 1027064K/1048576K available (8192K kernel code, 850K rwdata, 1756K rodata, 1024K init, 154K bss, 21512K reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] ftrace: allocating 26007 entries in 77 pages [ 0.000000] ftrace: allocated 77 pages with 4 groups [ 0.000000] trace event string verifier disabled [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] Rude variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] L2C: DT/platform modifies aux control register: 0x02060000 -> 0x32460000 [ 0.000000] L2C-310 erratum 769419 enabled [ 0.000000] L2C-310 enabling early BRESP for Cortex-A9 [ 0.000000] L2C-310 full line of zeros enabled for Cortex-A9 [ 0.000000] L2C-310 ID prefetch enabled, offset 8 lines [ 0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled [ 0.000000] L2C-310 cache controller enabled, 8 ways, 512 kB [ 0.000000] L2C-310: CACHE_ID 0x410030c9, AUX_CTRL 0x76460001 [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 0.000000] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns [ 0.000001] sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 21474836475ns [ 0.000016] Switching to timer-based delay loop, resolution 10ns [ 0.000388] Console: colour dummy device 80x30 [ 0.000433] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=1000000) [ 0.000447] CPU: Testing write buffer coherency: ok [ 0.000486] Spectre V2: workarounds disabled by configuration [ 0.000491] pid_max: default: 32768 minimum: 301 [ 0.000671] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear) [ 0.000692] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear) [ 0.001573] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.002598] cblist_init_generic: Setting adjustable number of callback queues. [ 0.002607] cblist_init_generic: Setting shift to 1 and lim to 1. [ 0.002758] Setting up static identity map for 0x100000 - 0x100060 [ 0.002931] rcu: Hierarchical SRCU implementation. [ 0.002938] rcu: Max phase no-delay instances is 1000. [ 0.003657] smp: Bringing up secondary CPUs ... [ 0.004484] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.004611] smp: Brought up 1 node, 2 CPUs [ 0.004623] SMP: Total of 2 processors activated (400.00 BogoMIPS). [ 0.004632] CPU: All CPU(s) started in SVC mode. [ 0.005260] devtmpfs: initialized [ 0.009770] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 [ 0.010033] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.010053] futex hash table entries: 512 (order: 3, 32768 bytes, linear) [ 0.010281] [ 0.010286] ************************************************************* [ 0.010290] ** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE ** [ 0.010294] ** ** [ 0.010297] ** IOMMU DebugFS SUPPORT HAS BEEN ENABLED IN THIS KERNEL ** [ 0.010300] ** ** [ 0.010303] ** This means that this kernel is built to expose internal ** [ 0.010306] ** IOMMU data structures, which may compromise security on ** [ 0.010309] ** your system. ** [ 0.010312] ** ** [ 0.010315] ** If you see this message and you are not debugging the ** [ 0.010318] ** kernel, report this immediately to your vendor! ** [ 0.010321] ** ** [ 0.010323] ** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE ** [ 0.010326] ************************************************************* [ 0.010915] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.012196] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.013095] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. [ 0.013107] hw-breakpoint: maximum watchpoint size is 4 bytes. [ 0.035354] iommu: Default domain type: Translated [ 0.035365] iommu: DMA domain TLB invalidation policy: strict mode [ 0.035789] FPGA manager framework [ 1.191732] clocksource: Switched to clocksource timer1 [ 1.202145] NET: Registered PF_INET protocol family [ 1.202415] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 1.204370] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) [ 1.204415] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 1.204431] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 1.204510] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear) [ 1.204749] TCP: Hash tables configured (established 8192 bind 8192) [ 1.204913] UDP hash table entries: 512 (order: 2, 16384 bytes, linear) [ 1.204964] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear) [ 1.205205] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 1.206139] RPC: Registered named UNIX socket transport module. [ 1.206154] RPC: Registered udp transport module. [ 1.206159] RPC: Registered tcp transport module. [ 1.206163] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.218948] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available [ 1.220332] workingset: timestamp_bits=30 max_order=18 bucket_order=0 [ 1.225256] DLM installed [ 1.226923] NFS: Registering the id_resolver key type [ 1.226962] Key type id_resolver registered [ 1.226969] Key type id_legacy registered [ 1.227061] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 1.227070] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... [ 1.227640] bounce: pool size: 64 pages [ 1.227733] io scheduler mq-deadline registered [ 1.227742] io scheduler kyber registered [ 1.232392] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled [ 1.233407] printk: console [ttyS0] disabled [ 1.233436] ffc02000.serial0: ttyS0 at MMIO 0xffc02000 (irq = 30, base_baud = 6250000) is a 16550A [ 1.943525] printk: console [ttyS0] enabled [ 1.948402] ffc03000.serial1: ttyS1 at MMIO 0xffc03000 (irq = 31, base_baud = 6250000) is a 16550A [ 1.959088] socfpga-dwmac ff702000.ethernet: error -ENXIO: IRQ macirq_rx0 not found [ 1.966755] socfpga-dwmac ff702000.ethernet: error -ENXIO: IRQ macirq_tx0 not found [ 1.974410] socfpga-dwmac ff702000.ethernet: IRQ eth_wake_irq not found [ 1.981003] socfpga-dwmac ff702000.ethernet: IRQ eth_lpi not found [ 1.987287] socfpga-dwmac ff702000.ethernet: PTP uses main clock [ 1.993520] socfpga-dwmac ff702000.ethernet: Version ID not available [ 1.999948] socfpga-dwmac ff702000.ethernet: DWMAC1000 [ 2.005182] socfpga-dwmac ff702000.ethernet: DMA HW capability register supported [ 2.012657] socfpga-dwmac ff702000.ethernet: RX Checksum Offload Engine supported [ 2.020111] socfpga-dwmac ff702000.ethernet: COE Type 2 [ 2.025327] socfpga-dwmac ff702000.ethernet: TX Checksum insertion supported [ 2.032365] socfpga-dwmac ff702000.ethernet: Enhanced/Alternate descriptors [ 2.039301] socfpga-dwmac ff702000.ethernet: Extended descriptors not supported [ 2.046589] socfpga-dwmac ff702000.ethernet: Ring mode enabled [ 2.052408] socfpga-dwmac ff702000.ethernet: TX COE limited to 0 tx queues [ 2.068051] Micrel KSZ9031 Gigabit PHY stmmac-0:01: attached PHY driver (mii_bus:phy_addr=stmmac-0:01, irq=POLL) [ 2.079723] i2c_dev: i2c /dev entries driver [ 2.084211] Synopsys Designware Multimedia Card Interface Driver [ 2.091185] fpga_manager fpga0: Altera SOCFPGA FPGA Manager registered [ 2.098288] NET: Registered PF_PACKET protocol family [ 2.103359] NET: Registered PF_KEY protocol family [ 2.108246] sctp: Hash tables configured (bind 512/512) [ 2.113697] Key type dns_resolver registered [ 2.118024] ThumbEE CPU extension supported. [ 2.122313] Registering SWP/SWPB emulation handler [ 2.132510] of-fpga-region soc:base-fpga-region: FPGA Region probed [ 2.138956] of_cfs_init [ 2.141429] of_cfs_init: OK [ 2.144978] socfpga-dwmac ff702000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0 [ 2.239826] socfpga-dwmac ff702000.ethernet eth0: PHY [stmmac-0:01] driver [Micrel KSZ9031 Gigabit PHY] (irq=POLL) [ 2.260183] dwmac1000: Master AXI performs any burst length [ 2.265757] socfpga-dwmac ff702000.ethernet eth0: No Safety Features support found [ 2.283960] socfpga-dwmac ff702000.ethernet eth0: configuring for phy/rgmii link mode [ 5.433280] socfpga-dwmac ff702000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 5.471699] Sending DHCP requests ., OK [ 5.535557] IP-Config: Got DHCP answer from 192.168.0.1, my address is 192.168.0.2 [ 5.543120] IP-Config: Complete: [ 5.546336] device=eth0, hwaddr=02:aa:bb:cc:dd:aa, ipaddr=192.168.0.2, mask=255.255.255.0, gw=192.168.0.1 [ 5.556313] host=dltdc, domain=, nis-domain=(none) [ 5.561520] bootserver=192.168.0.1, rootserver=192.168.0.1, rootpath=/nfsroot/%s,vers=3,tcp [ 5.561529] nameserver0=192.168.0.1 [ 5.574646] dw-apb-uart ffc02000.serial0: forbid DMA for kernel console [ 5.612231] VFS: Mounted root (nfs filesystem) on device 0:15. [ 5.618429] devtmpfs: mounted [ 5.624790] Freeing unused kernel image (initmem) memory: 1024K [ 5.651982] Run /sbin/init as init process [ 6.017202] systemd[1]: System time before build time, advancing clock. [ 6.065983] systemd[1]: systemd 252.17-1~deb12u1+rpi1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +G) [ 6.099280] systemd[1]: Detected architecture arm. Welcome to Raspbian GNU/Linux 12 (bookworm)! [ 7.552976] systemd[1]: Queued start job for default target graphical.target. [ 7.566651] systemd[1]: Created slice system-getty.slice - Slice /system/getty. [ OK ] Created slice system-getty.slice - Slice /system/getty. [ 7.613726] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe. [ OK ] Created slice system-modpr…lice - Slice /system/modprobe. [ 7.663722] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty. [ OK ] Created slice system-seria… - Slice /system/serial-getty. [ 7.712896] systemd[1]: Created slice user.slice - User and Session Slice. [ OK ] Created slice user.slice - User and Session Slice. [ 7.742346] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch. [ OK ] Started systemd-ask-passwo…quests to Console Directory Watch. [ 7.782280] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch. [ OK ] Started systemd-ask-passwo… Requests to Wall Directory Watch. [ 7.832956] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount. [ OK ] Set up automount proc-sys-…rmats File System Automount Point. [ 7.872213] systemd[1]: Reached target cryptsetup.target - Local Encrypted Volumes. [ OK ] Reached target cryptsetup.…get - Local Encrypted Volumes. [ 7.902149] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes. [ OK ] Reached target integrityse…Local Integrity Protected Volumes. [ 7.932298] systemd[1]: Reached target paths.target - Path Units. [ OK ] Reached target paths.target - Path Units. [ 7.972257] systemd[1]: Reached target slices.target - Slice Units. [ OK ] Reached target slices.target - Slice Units. [ 8.002188] systemd[1]: Reached target swap.target - Swaps. [ OK ] Reached target swap.target - Swaps. [ 8.032131] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes. [ OK ] Reached target veritysetup… - Local Verity Protected Volumes. [ 8.073573] systemd[1]: Listening on syslog.socket - Syslog Socket. [ OK ] Listening on syslog.socket - Syslog Socket. [ 8.112499] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe. [ OK ] Listening on systemd-initc… initctl Compatibility Named Pipe. [ 8.169649] systemd[1]: systemd-journald-audit.socket - Journal Audit Socket was skipped because of an unmet condition check (Condit. [ 8.184670] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log). [ OK ] Listening on systemd-journ…t - Journal Socket (/dev/log). [ 8.222929] systemd[1]: Listening on systemd-journald.socket - Journal Socket. [ OK ] Listening on systemd-journald.socket - Journal Socket. [ 8.254492] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket. [ OK ] Listening on systemd-udevd….socket - udev Control Socket. [ 8.302768] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket. [ OK ] Listening on systemd-udevd…l.socket - udev Kernel Socket. [ 8.342659] systemd[1]: dev-hugepages.mount - Huge Pages File System was skipped because of an unmet condition check (ConditionPathE. [ 8.402235] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System... Mounting dev-mqueue.mount��POSIX Message Queue File System... [ 8.438176] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System... Mounting sys-kernel-debug.… - Kernel Debug File System... [ 8.475957] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System... Mounting sys-kernel-tracin… - Kernel Trace File System... [ 8.522462] systemd[1]: auth-rpcgss-module.service - Kernel Module supporting RPCSEC_GSS was skipped because of an unmet condition c. [ 8.545330] systemd[1]: Starting fake-hwclock.service - Restore / save the current clock... Starting fake-hwclock.serv…estore / save the current clock... [ 8.587796] systemd[1]: Starting keyboard-setup.service - Set the console keyboard layout... Starting keyboard-setup.se…Set the console keyboard layout... [ 8.622164] systemd[1]: kmod-static-nodes.service - Create List of Static Device Nodes was skipped because of an unmet condition che. [ 8.682591] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs... Starting modprobe@configfs…m - Load Kernel Module configfs... [ 8.718106] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod... Starting modprobe@dm_mod.s…[0m - Load Kernel Module dm_mod... [ 8.767301] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm... Starting modprobe@drm.service - Load Kernel Module drm... [ 8.807471] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore... Starting modprobe@efi_psto…- Load Kernel Module efi_pstore... [ 8.847142] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse... Starting modprobe@fuse.ser…e - Load Kernel Module fuse... [ 8.887359] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop... Starting modprobe@loop.ser…e - Load Kernel Module loop... [ 8.934417] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup f. [ 8.947421] systemd[1]: (This warning is only shown for the first unit using IP firewalling.) [ 8.992616] systemd[1]: Starting systemd-journald.service - Journal Service... Starting systemd-journald.service - Journal Service... [ 9.031231] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules... Starting systemd-modules-l…rvice - Load Kernel Modules... [ 9.086842] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems... Starting systemd-remount-f…nt Root and Kernel File Systems... [ 9.146808] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices... Starting systemd-udev-trig…[0m - Coldplug All udev Devices... [ 9.201902] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System. [ OK ] Mounted dev-mqueue.mount- POSIX Message Queue File System. [ 9.244473] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System. [ OK ] Mounted sys-kernel-debug.m…nt - Kernel Debug File System. [ 9.283469] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System. [ OK ] Mounted sys-kernel-tracing…nt - Kernel Trace File System. [ 9.323240] systemd[1]: Finished fake-hwclock.service - Restore / save the current clock. [ OK ] Finished fake-hwclock.serv… Restore / save the current clock. [ 9.396923] systemd[1]: Started systemd-journald.service - Journal Service. [ OK ] Started systemd-journald.service - Journal Service. [ OK ] Finished keyboard-setup.se…- Set the console keyboard layout. [ OK ] Finished modprobe@configfs…[0m - Load Kernel Module configfs. [ OK ] Finished modprobe@dm_mod.s…e - Load Kernel Module dm_mod. [ OK ] Finished modprobe@drm.service - Load Kernel Module drm. [ OK ] Finished modprobe@efi_psto…m - Load Kernel Module efi_pstore. [ OK ] Finished modprobe@fuse.service - Load Kernel Module fuse. [ OK ] Finished modprobe@loop.service - Load Kernel Module loop. [ OK ] Finished systemd-modules-l…service - Load Kernel Modules. [ OK ] Finished systemd-remount-f…ount Root and Kernel File Systems. [ OK ] Finished systemd-udev-trig…e - Coldplug All udev Devices. Mounting sys-kernel-config…ernel Configuration File System... Starting ifupdown-pre.serv…ynchronize boot up for ifupdown... Starting systemd-journal-f…h Journal to Persistent Storage... Starting systemd-random-se…ice - Load/Save Random Seed... [ 9.925670] systemd-journald[92]: Received client request to flush runtime journal. [ 9.948264] systemd-journald[92]: File /var/log/journal/ffb6cc161fe042069f9d95266bfc1324/system.journal corrupted or uncleanly shut . Starting systemd-sysctl.se…ce - Apply Kernel Variables... Starting systemd-sysusers.…rvice - Create System Users... [ OK ] Mounted sys-kernel-config.… Kernel Configuration File System. [ OK ] Finished ifupdown-pre.serv… synchronize boot up for ifupdown. [ OK ] Finished systemd-sysctl.service - Apply Kernel Variables. [ OK ] Finished systemd-sysusers.service - Create System Users. Starting systemd-tmpfiles-…ate Static Device Nodes in /dev... [ OK ] Finished systemd-journal-f…ush Journal to Persistent Storage. [ OK ] Finished systemd-tmpfiles-…reate Static Device Nodes in /dev. [ OK ] Reached target local-fs-pr…reparation for Local File Systems. [ OK ] Reached target local-fs.target - Local File Systems. Starting console-setup.ser…m - Set console font and keymap... Starting networking.service - Raise network interfaces... Starting systemd-binfmt.se…et Up Additional Binary Formats... Starting systemd-tmpfiles-… Volatile Files and Directories... Starting systemd-udevd.ser…ger for Device Events and Files... [ OK ] Finished console-setup.ser…[0m - Set console font and keymap. Mounting proc-sys-fs-binfm…utable File Formats File System... [ OK ] Mounted proc-sys-fs-binfmt…ecutable File Formats File System. [ OK ] Finished systemd-random-se…rvice - Load/Save Random Seed. [ OK ] Finished systemd-binfmt.se… Set Up Additional Binary Formats. [ OK ] Started systemd-udevd.serv…nager for Device Events and Files. [ OK ] Finished systemd-tmpfiles-…te Volatile Files and Directories. Mounting run-rpc_pipefs.mount - RPC Pipe File System... [ OK ] Started haveged.servicemon based on the HAVEGE algorithm. Starting systemd-timesyncd… - Network Time Synchronization... Starting systemd-update-ut…rd System Boot/Shutdown in UTMP... [ OK ] Mounted run-rpc_pipefs.mount - RPC Pipe File System. [ OK ] Found device dev-ttyS0.device - /dev/ttyS0. [ OK ] Finished systemd-update-ut…cord System Boot/Shutdown in UTMP. [ OK ] Reached target rpc_pipefs.target. [ OK ] Reached target nfs-client.target - NFS client services. [ OK ] Reached target remote-fs-p…eparation for Remote File Systems. [ OK ] Reached target remote-fs.target - Remote File Systems. [ OK ] Started systemd-timesyncd.…0m - Network Time Synchronization. [ OK ] Reached target sysinit.target - System Initialization. [ OK ] Started systemd-tmpfiles-c… Cleanup of Temporary Directories. [ OK ] Reached target time-set.target - System Time Set. [ OK ] Started dpkg-db-backup.tim… Daily dpkg database backup timer. [ OK ] Started e2scrub_all.timeretadata Check for All Filesystems. [ OK ] Started exim4-base.timer - Daily exim4-base housekeeping. [ OK ] Started logrotate.timer - Daily rotation of log files. [ OK ] Started man-db.timer - Daily man-db regeneration. [ OK ] Reached target timers.target - Timer Units. [ OK ] Listening on dbus.socket- D-Bus System Message Bus Socket. [ OK ] Listening on triggerhappy.socket. [ OK ] Reached target sockets.target - Socket Units. [ OK ] Reached target basic.target - Basic System. [ OK ] Started cron.service -…kground program processing daemon. Starting dbus.service - D-Bus System Message Bus... Starting e2scrub_reap.serv…e ext4 Metadata Check Snapshots... Starting raspi-config.serv…r (unless shift key is pressed)... Starting rng-tools-debian.…LSB: rng-tools (Debian variant)... Starting rpi-eeprom-update…for Raspberry Pi EEPROM updates... Starting rsyslog.service - System Logging Service... Starting systemd-logind.se…ice - User Login Management... [ OK ] Finished networking.service - Raise network interfaces. [ OK ] Started rsyslog.service - System Logging Service. [ OK ] Started dbus.service - D-Bus System Message Bus. [ OK ] Finished rpi-eeprom-update…k for Raspberry Pi EEPROM updates. [ OK ] Started systemd-logind.service - User Login Management. [ OK ] Started raspi-config.servi…nor (unless shift key is pressed). [ OK ] Reached target network.target - Network. [ OK ] Reached target network-online.target - Network is Online. Starting exim4.service… LSB: exim Mail Transport Agent... Starting rc-local.servicem - /etc/rc.local Compatibility... Starting rpc-statd-notify.…- Notify NFS peers of a restart... Starting ssh.service - OpenBSD Secure Shell server... My IP address is 192.168.0.2 Starting systemd-user-sess…vice - Permit User Sessions... [ OK ] Finished e2scrub_reap.serv…ine ext4 Metadata Check Snapshots. [ OK ] Started rng-tools-debian.s…- LSB: rng-tools (Debian variant). Loading FPGA! [ OK ] Started rpc-statd-notify.s…m - Notify NFS peers of a restart. [ 15.392296] rc.local[253]: rmdir: failed to remove '/config/device-tree/overlays/blink': No such file or directory [ OK ] Finished systemd-user-sess…ervice - Permit User Sessions. Loading /dev/i2c-1! [ 16.261972] rc.local[274]: rmdir: failed to remove '/config/device-tree/overlays/i2c1': No such file or directory [ OK ] Started ssh.service - OpenBSD Secure Shell server. [ OK ] Started exim4.service - LSB: exim Mail Transport Agent. Mounting home directories! Done! [ OK ] Started rc-local.service - /etc/rc.local Compatibility. [ OK ] Started getty@tty1.service - Getty on tty1. [ OK ] Started serial-getty@ttyS0…rvice - Serial Getty on ttyS0. [ OK ] Reached target getty.target - Login Prompts. [ OK ] Reached target multi-user.target - Multi-User System. [ OK ] Reached target graphical.target - Graphical Interface. Starting systemd-update-ut… Record Runlevel Change in UTMP... [ OK ] Finished systemd-update-ut… - Record Runlevel Change in UTMP. Raspbian GNU/Linux 12 dltdc ttyS0 dltdc login: