DE10-Nano: Difference between revisions

From DaqWiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1,716: Line 1,716:
googleAI figured out what is wrong with my new kernel builds.
googleAI figured out what is wrong with my new kernel builds.


osc1 frequency on the DE10 should be 50 MHz, instead, the DTB file has it as 25 MHz.
osc1 frequency on the DE10 should be 50 MHz, instead, the DTB file has it as 25 MHz (from the DE0 board)


<pre>
<pre>
Line 1,818: Line 1,818:
           mpu_periph_clk              1        1        0  200000000          0    0  50000        Y
           mpu_periph_clk              1        1        0  200000000          0    0  50000        Y
root@dltdc-daq13:~#  
root@dltdc-daq13:~#  
</pre>
also in /sys, osc1 is 25 MHz,
<pre>
root@dltdc-daq13:~# od -x /sys/firmware/devicetree/base/soc/clkmgr@ffd04000/clocks/osc1/clock-frequency
0000000 7d01 4078
</pre>
</pre>


Line 1,858: Line 1,865:
};
};
...
...
</pre>
also links to dead repositories:
<pre>
https://github.com/intel/de10-nano-hardware/blob/master/devicetrees/de10-nano-base.dtsi
https://github.com/intel/de10-nano-hardware/tree/master
https://github.com/intel/meta-de10-nano
</pre>
</pre>


= zzz =
= zzz =

Latest revision as of 00:15, 13 November 2026

DE10-Nano

Links

Additional info

DE10-Nano specs

    Intel Cyclone® V SE 5CSEBA6U23I7  device (110K LEs)
    Serial configuration device  – EPCS64 (revision B2 or later)
    USB-Blaster II onboard for programming; JTAG Mode
    HDMI TX, compatible with DVI 1.0 and HDCP v1.4
    2 push-buttons
    4 slide switches
    8 green user LEDs
    Three 50MHz clock sources from the clock generator
    Two 40-pin expansion headers
    One Arduino expansion header (Uno R3 compatibility), can be connected with Arduino shields
    One 10-pin Analog input expansion header (shared with Arduino Analog input)
    A/D converter, 4-pin SPI interface with FPGA

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
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:~# 
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:/nfsroot/%s,vers=3,nolock,proto=tcp 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

/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

/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

-rwxr-xr-x 1 olchansk users 5112608 Feb 3 18:31 arch/arm/boot/zImage

  • try to boot it?

linux 6.1.55 2024 feb 26

boot messages

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: 

memcpy

root@dltdc:~# uname -a
Linux dltdc 6.1.55-246590-g57cf7f3b7f73 #31 SMP Mon Feb 26 17:06:13 PST 2024 armv7l GNU/Linux
root@dltdc:~# g++ -O2 -static -Wall -Wuninitialized memcpy.cc -o memcpy
root@dltdc:~# ./memcpy
memcpy       1 KiBytes:    700 MB/sec
memcpy       2 KiBytes:   1126 MB/sec
memcpy       4 KiBytes:   1604 MB/sec
memcpy       8 KiBytes:   2044 MB/sec
memcpy      16 KiBytes:   2341 MB/sec
memcpy      32 KiBytes:   2241 MB/sec
memcpy      64 KiBytes:   1769 MB/sec
memcpy     128 KiBytes:   1605 MB/sec
memcpy     256 KiBytes:   2778 MB/sec
memcpy     512 KiBytes:   2602 MB/sec
memcpy    1024 KiBytes:   1950 MB/sec
memcpy    2048 KiBytes:   1782 MB/sec
memcpy    4096 KiBytes:   1722 MB/sec
memcpy    8192 KiBytes:   1675 MB/sec
memcpy   16384 KiBytes:   1599 MB/sec
memcpy   32768 KiBytes:   1449 MB/sec
memcpy   65536 KiBytes:   1168 MB/sec
memcpy  131072 KiBytes:    702 MB/sec

ttcp

transmit: 50 Mbytes/sec receive: ???

root@dltdc:~# uname -a
Linux dltdc 6.1.55-246590-g57cf7f3b7f73 #31 SMP Mon Feb 26 17:06:13 PST 2024 armv7l GNU/Linux
root@dltdc:~# ./ttcp -t -s -n 100000 10.0.0.1
ttcp-t: buflen=8192, nbuf=100000, align=16384/0, port=5001  tcp  -> 10.0.0.1
ttcp-t: socket
ttcp-t: connect
ttcp-t: 819200000 bytes in 15.86 real seconds = 50431.04 KB/sec +++
ttcp-t: 100000 I/O calls, msec/call = 0.16, calls/sec = 6303.88
ttcp-t: 0.1user 15.6sys 0:15real 99% 0i+0d 980maxrss 0+2pf 3+348csw

daq17:~$ ttcp -r -s
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001  tcp
ttcp-r: socket
ttcp-r: accept from 10.0.0.2
ttcp-r: 819200000 bytes in 15.86 real seconds = 50426.58 KB/sec +++
ttcp-r: 142184 I/O calls, msec/call = 0.11, calls/sec = 8962.32
ttcp-r: 0.0user 0.8sys 0:15real 5% 0i+0d 666maxrss 0+2pf 85784+377csw

Incorrect base clock

googleAI figured out what is wrong with my new kernel builds.

osc1 frequency on the DE10 should be 50 MHz, instead, the DTB file has it as 25 MHz (from the DE0 board)

more /home/olchansk/daq/linux/linux-socfpga/arch/arm/boot/dts/socfpga_cyclone5.dtsi
// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2012 Altera Corporation <www.altera.com>
 */

/dts-v1/;
/* First 4KB has trampoline code for secondary cores. */
/memreserve/ 0x00000000 0x0001000;
#include "socfpga.dtsi"

/ {
	soc {
		clkmgr@ffd04000 {
			clocks {
				osc1 {
					clock-frequency = <25000000>;
				};
			};
		};

		mmc0: dwmmc0@ff704000 {
			broken-cd;
			bus-width = <4>;
			cap-mmc-highspeed;
			cap-sd-highspeed;
		};

		sysmgr@ffd08000 {
			cpu1-start-addr = <0xffd080c4>;
		};
	};
};

&watchdog0 {
	status = "okay";
};

also

root@dltdc-daq13:~# cat /sys/kernel/debug/clk/clk_summary
                                 enable  prepare  protect                                duty  hardware
   clock                          count    count    count        rate   accuracy phase  cycle    enable
-------------------------------------------------------------------------------------------------------
 osc1                                 4        4        0    25000000          0     0  50000         Y
    sdram_pll                         0        0        0   800000000          0     0  50000         Y
       h2f_usr2_clk                   0        0        0   160000000          0     0  50000         Y
          h2f_user2_clk               0        0        0   160000000          0     0  50000         ?
       ddr_dq_clk                     0        0        0   400000000          0     0  50000         Y
          ddr_dq_clk_gate             0        0        0   400000000          0     0  50000         ?
       ddr_2x_dqs_clk                 0        0        0   800000000          0     0  50000         Y
          ddr_2x_dqs_clk_gate         0        0        0   800000000          0     0  50000         ?
       ddr_dqs_clk                    0        0        0   400000000          0     0  50000         Y
          ddr_dqs_clk_gate            0        0        0   400000000          0     0  50000         ?
    periph_pll                        3        3        0  1000000000          0     0  50000         Y
       h2f_usr1_clk                   0        0        0     1953125          0     0  50000         Y
          h2f_user1_clk               0        0        0     1953125          0     0  50000         ?
       per_base_clk                   2        2        0   200000000          0     0  50000         Y
          gpio_db_clk                 0        0        0       32000          0     0  50000         ?
          can1_clk                    0        0        0    40000000          0     0  50000         ?
          can0_clk                    0        0        0    40000000          0     0  50000         ?
          spi_m_clk                   0        0        0   200000000          0     0  50000         ?
          usb_mp_clk                  0        0        0   200000000          0     0  50000         ?
          l4_sp_clk                   3        3        0   100000000          0     0  50000         ?
          l4_mp_clk                   1        1        0   100000000          0     0  50000         ?
       per_nand_mmc_clk               1        1        0   200000000          0     0  50000         Y
          nand_x_clk                  0        0        0   200000000          0     0  50000         ?
             nand_clk                 0        0        0    50000000          0     0  50000         ?
             nand_ecc_clk             0        0        0   200000000          0     0  50000         ?
          sdmmc_clk                   1        1        0   200000000          0     0  50000         ?
             sdmmc_clk_divided        1        1        0    50000000          0     0  50000         ?
       per_qsi_clk                    0        0        0     1953125          0     0  50000         Y
       emac1_clk                      1        1        0   250000000          0     0  50000         Y
          emac_1_clk                  1        1        0   250000000          0     0  50000         ?
       emac0_clk                      0        0        0     1953125          0     0  50000         Y
          emac_0_clk                  0        0        0     1953125          0     0  50000         ?
    dbg_base_clk                      0        0        0     6250000          0     0  50000         Y
       dbg_timer_clk                  0        0        0     6250000          0     0  50000         ?
       dbg_trace_clk                  0        0        0     6250000          0     0  50000         ?
       dbg_at_clk                     0        0        0     6250000          0     0  50000         ?
          dbg_clk                     0        0        0     3125000          0     0  50000         ?
    main_pll                          1        1        0  1600000000          0     0  50000         Y
       cfg_h2f_usr0_clk               0        0        0   100000000          0     0  50000         Y
          h2f_user0_clk               0        0        0   100000000          0     0  50000         ?
          cfg_clk                     0        0        0   100000000          0     0  50000         ?
       main_nand_sdmmc_clk            0        0        0     3125000          0     0  50000         Y
       main_qspi_clk                  0        0        0     3125000          0     0  50000         Y
          qspi_clk                    0        0        0     3125000          0     0  50000         ?
       mainclk                        0        0        0   400000000          0     0  50000         Y
          l3_mp_clk                   0        0        0   200000000          0     0  50000         ?
             l3_sp_clk                0        0        0   100000000          0     0  50000         Y
          l3_main_clk                 0        0        0   400000000          0     0  50000         Y
          l4_main_clk                 0        0        0   400000000          0     0  50000         ?
       mpuclk                         1        1        0   800000000          0     0  50000         Y
          mpu_l2_ram_clk              0        0        0   400000000          0     0  50000         Y
          mpu_periph_clk              1        1        0   200000000          0     0  50000         Y
root@dltdc-daq13:~# 

also in /sys, osc1 is 25 MHz,

root@dltdc-daq13:~# od -x /sys/firmware/devicetree/base/soc/clkmgr@ffd04000/clocks/osc1/clock-frequency 
0000000 7d01 4078

if I read the old DTB file:

cd /tftpboot
dtc -I dtb -O dts -o ~/output_file.dts socfpga.dtb-GHRD
more ~/output_file.dts
...
clocks {
		#address-cells = <0x01>;
		#size-cells = <0x01>;

		clk_0 {
			compatible = "fixed-clock";
			#clock-cells = <0x00>;
			clock-frequency = <0x2faf080>;
			clock-output-names = "clk_0-clk";
			linux,phandle = <0x02>;
			phandle = <0x02>;
		};

		hps_0_eosc1 {
			compatible = "fixed-clock";
			#clock-cells = <0x00>;
			clock-frequency = <0x17d7840>;
			clock-output-names = "hps_0_eosc1-clk";
			linux,phandle = <0x05>;
			phandle = <0x05>;
		};

		hps_0_eosc2 {
			compatible = "fixed-clock";
			#clock-cells = <0x00>;
			clock-frequency = <0x17d7840>;
			clock-output-names = "hps_0_eosc2-clk";
			linux,phandle = <0x06>;
			phandle = <0x06>;
		};
...

also links to dead repositories:

https://github.com/intel/de10-nano-hardware/blob/master/devicetrees/de10-nano-base.dtsi
https://github.com/intel/de10-nano-hardware/tree/master
https://github.com/intel/meta-de10-nano

zzz