DoubangoTelecom / ultimateALPR-SDK

World's fastest ANPR / ALPR implementation for CPUs, GPUs, VPUs and NPUs using deep learning (Tensorflow, Tensorflow lite, TensorRT, OpenVX, OpenVINO). Multi-Charset (Latin, Korean, Chinese) & Multi-OS (Jetson, Android, Raspberry Pi, Linux, Windows) & Multi-Arch (ARM, x86).
https://www.doubango.org/webapps/alpr/
Other
625 stars 160 forks source link

Raspberry QEMU arm emulator benchmark application error #35

Closed brunoaduarte closed 4 years ago

brunoaduarte commented 4 years ago

I'm trying to run the Raspberry version on a QEMU Raspberry emulator, using latest image (2020-02-13-raspbian-buster-lite.img) and kernel (kernel-qemu-4.19.50-buster) l but i get this Illegal instruction error.

pi@raspberrypi:~/ultimateALPR-SDK/samples/c++/benchmark $ g++ benchmark.cxx -O3 -I../../../c++ -L../../../binaries/raspbian/armv7l -lultimate_alpr-sdk -o benchmark

pi@raspberrypi:~/ultimateALPR-SDK/samples/c++/benchmark $ LD_LIBRARY_PATH=../../../binaries/raspbian/armv7l:$LD_LIBRARY_PATH ./benchmark \
>     --positive ../../../assets/images/lic_us_1280x720.jpg \
>     --negative ../../../assets/images/london_traffic.jpg \
>     --assets ../../../assets \
>     --loops 100 \
>     --rate 0.2 \
>     --parallel true \
>     --rectify false
Illegal instruction
pi@raspberrypi:~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 1099.36
Features        : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : ARM-Versatile (Device Tree Support)
Revision        : 0000
Serial          : 0000000000000000

Is this problem expected on a emulator (it will only work on real RPis) or am i doing something wrong here?

Thanks

DoubangoTelecom commented 4 years ago

First, always shared full logs. At startup we have device CPU info and it's useful to understand what's going on.

Haven't tested on emulator but should work if it's ARM arch. We heavily use hand-written assembler maybe we're using unsupported NEON instructions. 1/ Disable both intrintrics and hand-written assembler: change the json config (https://github.com/DoubangoTelecom/ultimateALPR-SDK/blob/master/samples/c%2B%2B/benchmark/benchmark.cxx#L49) and add

"\"asm_enabled\": false,"
"\"intrin_enabled\": false,"

2/ Rebuild benchmark and try again

brunoaduarte commented 4 years ago

I tried rebuilding it with the 2 extra lines in json config but problem Illegal instruction persists...

image

Here's the full initialization log as requested

vpb_sic_write: Bad register offset 0x2c
Booting Linux on physical CPU 0x0
Linux version 4.19.50+ (niklas@ubuntu) (gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2)) #1 Tue Nov 26 01:49:16 CET 2019
CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
CPU: VIPT aliasing data cache, unknown instruction cache
OF: fdt: Machine model: ARM Versatile PB
Memory policy: Data cache writeback
random: get_random_bytes called from start_kernel+0x88/0x414 with crng_init=0
Built 1 zonelists, mobility grouping on.  Total pages: 64960
Kernel command line: root=/dev/sda2 panic=1
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 252040K/262144K available (5406K kernel code, 211K rwdata, 1360K rodata, 196K init, 142K bss, 10104K reserved, 0K cma-reserved)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xd0800000 - 0xff800000   ( 752 MB)
    lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
    modules : 0xbf000000 - 0xc0000000   (  16 MB)
      .text : 0x(ptrval) - 0x(ptrval)   (5408 kB)
      .init : 0x(ptrval) - 0x(ptrval)   ( 196 kB)
      .data : 0x(ptrval) - 0x(ptrval)   ( 212 kB)
       .bss : 0x(ptrval) - 0x(ptrval)   ( 143 kB)
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
VIC @(ptrval): id 0x00041190, vendor 0x41
FPGA IRQ chip 0 "intc" @ (ptrval), 20 irqs, parent IRQ: 47
clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483647500ns
Failed to initialize '/amba/timer@101e3000': -22
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
Console: colour dummy device 80x30
console [tty0] enabled
Calibrating delay loop... 1128.03 BogoMIPS (lpj=5640192)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x8220 - 0x827c
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 256 (order: -1, 3072 bytes)
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
OF: amba_device_add() failed (-19) for /amba/smc@10100000
OF: amba_device_add() failed (-19) for /amba/mpmc@10110000
OF: amba_device_add() failed (-19) for /amba/sctl@101e0000
OF: amba_device_add() failed (-19) for /amba/watchdog@101e1000
OF: amba_device_add() failed (-19) for /amba/sci@101f0000
OF: amba_device_add() failed (-19) for /amba/ssp@101f4000
OF: amba_device_add() failed (-19) for /amba/fpga/sci@a000
Serial: AMBA PL011 UART driver
101f1000.uart: ttyAMA0 at MMIO 0x101f1000 (irq = 28, base_baud = 0) is a PL011 rev1
console [ttyAMA0] enabled
101f2000.uart: ttyAMA1 at MMIO 0x101f2000 (irq = 29, base_baud = 0) is a PL011 rev1
101f3000.uart: ttyAMA2 at MMIO 0x101f3000 (irq = 30, base_baud = 0) is a PL011 rev1
10009000.uart: ttyAMA3 at MMIO 0x10009000 (irq = 54, base_baud = 0) is a PL011 rev1
vgaarb: loaded
SCSI subsystem initialized
clocksource: Switched to clocksource arm,sp804
NET: Registered protocol family 2
tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NetWinder Floating Point Emulator V0.97 (double precision)
workingset: timestamp_bits=14 max_order=16 bucket_order=2
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
romfs: ROMFS MTD (C) 2007 Red Hat, Inc.
9p: Installing v9fs 9p2000 file system support
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
pl061_gpio 101e4000.gpio: PL061 GPIO chip @0x101e4000 registered
pl061_gpio 101e5000.gpio: PL061 GPIO chip @0x101e5000 registered
pl061_gpio 101e6000.gpio: PL061 GPIO chip @0x101e6000 registered
pl061_gpio 101e7000.gpio: PL061 GPIO chip @0x101e7000 registered
versatile-pci 10001000.pci: host bridge /amba/pci@10001000 ranges:
versatile-pci 10001000.pci:    IO 0x43000000..0x4300ffff -> 0x00000000
versatile-pci 10001000.pci:   MEM 0x50000000..0x5fffffff -> 0x50000000
versatile-pci 10001000.pci:   MEM 0x60000000..0x6fffffff -> 0x60000000
versatile-pci 10001000.pci: PCI core found (slot 11)
versatile-pci 10001000.pci: PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [bus 00-ff]
pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff]
pci_bus 0000:00: root bus resource [mem 0x60000000-0x6fffffff pref]
PCI: bus0: Fast back to back transfers disabled
pci 0000:00:0c.0: BAR 6: assigned [mem 0x60000000-0x6003ffff pref]
pci 0000:00:0d.0: BAR 2: assigned [mem 0x50000000-0x50001fff]
pci 0000:00:0d.0: BAR 1: assigned [mem 0x50002000-0x500023ff]
pci 0000:00:0c.0: BAR 0: assigned [io  0x1000-0x10ff]
pci 0000:00:0c.0: BAR 1: assigned [mem 0x50002400-0x500024ff]
pci 0000:00:0d.0: BAR 0: assigned [io  0x1400-0x14ff]
drm-clcd-pl111 dev:20: no max memory bandwidth specified, assume unlimited
drm-clcd-pl111 dev:20: set up callbacks for Versatile PL110
OF: graph: no port node found in /amba/display@10120000
drm-clcd-pl111 dev:20: No bridge, exiting
brd: module loaded
loop: module loaded
sym53c8xx 0000:00:0d.0: enabling device (0100 -> 0103)
sym0: <895a> rev 0x0 at pci 0000:00:0d.0 irq 67
sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking
sym0: SCSI BUS has been reset.
scsi host0: sym-2.2.3
scsi 0:0:0:0: Direct-Access     QEMU     QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
scsi target0:0:0: tagged command queuing enabled, command queue depth 16.
scsi target0:0:0: Beginning Domain Validation
scsi target0:0:0: Domain Validation skipping write tests
scsi target0:0:0: Ending Domain Validation
scsi 0:0:2:0: CD-ROM            QEMU     QEMU CD-ROM      2.5+ PQ: 0 ANSI: 5
scsi target0:0:2: tagged command queuing enabled, command queue depth 16.
scsi target0:0:2: Beginning Domain Validation
scsi target0:0:2: Domain Validation skipping write tests
scsi target0:0:2: Ending Domain Validation
random: fast init done
sr 0:0:2:0: Power-on or device reset occurred
sr 0:0:2:0: [sr0] scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
cdrom: Uniform CD-ROM driver Revision: 3.20
sd 0:0:0:0: Power-on or device reset occurred
sd 0:0:0:0: [sda] 16195584 512-byte logical blocks: (8.29 GB/7.72 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
of-flash 34000000.flash: versatile/realview flash protection
34000000.flash: Found 1 x32 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
 sda: sda1 sda2
sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
smc91x 10010000.net eth0: SMC91C11xFD (rev 1) at (ptrval) IRQ 41
smc91x 10010000.net eth0: Ethernet addr: 52:54:00:12:34:56
rtc-ds1307 0-0068: registered as rtc0
versatile reboot driver registered
device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com
mmci-pl18x fpga:05: /aliases ID not available
mmci-pl18x fpga:05: mmc0: PL181 manf 41 rev0 at 0x10005000 irq 59,60 (pio)
mmci-pl18x fpga:05: DMA channels RX none, TX none
mmci-pl18x fpga:0b: /aliases ID not available
mmci-pl18x fpga:0b: mmc1: PL181 manf 41 rev0 at 0x1000b000 irq 49,50 (pio)
mmci-pl18x fpga:0b: DMA channels RX none, TX none
leds-syscon 10000000.core-module:led@08.0: registered LED versatile:0
leds-syscon 10000000.core-module:led@08.1: registered LED versatile:1
leds-syscon 10000000.core-module:led@08.2: registered LED versatile:2
leds-syscon 10000000.core-module:led@08.3: registered LED versatile:3
leds-syscon 10000000.core-module:led@08.4: registered LED versatile:4
leds-syscon 10000000.core-module:led@08.5: registered LED versatile:5
leds-syscon 10000000.core-module:led@08.6: registered LED versatile:6
leds-syscon 10000000.core-module:led@08.7: registered LED versatile:7
ledtrig-cpu: registered to indicate activity on CPUs
NET: Registered protocol family 17
Bridge firewalling registered
9pnet: Installing 9P2000 support
rtc-ds1307 0-0068: setting system clock to 2020-02-21 20:35:45 UTC (1582317345)
uart-pl011 101f1000.uart: no DMA platform data
input: AT Raw Set 2 keyboard as /devices/platform/amba/amba:fpga/10006000.kmi/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/amba/amba:fpga/10007000.kmi/serio1/input/input2
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) readonly on device 8:2.
devtmpfs: mounted
Freeing unused kernel memory: 196K
This architecture does not have kernel memory protection.
Run /sbin/init as init process
systemd[1]: Failed to lookup module alias 'autofs4': Function not implemented
systemd[1]: systemd 241 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
systemd[1]: Detected architecture arm.

Welcome to Raspbian GNU/Linux 10 (buster)!

systemd[1]: Set hostname to <raspberrypi>.
systemd[1]: File /lib/systemd/system/systemd-journald.service:12 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
random: systemd: uninitialized urandom read (16 bytes read)
random: systemd: uninitialized urandom read (16 bytes read)
systemd[1]: Created slice system-getty.slice.
[  OK  ] Created slice system-getty.slice.
systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
random: systemd: uninitialized urandom read (16 bytes read)
systemd[1]: Reached target Swap.
[  OK  ] Reached target Swap.
systemd[1]: Created slice User and Session Slice.
[  OK  ] Created slice User and Session Slice.
systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Journal Socket.
         Starting Load Kernel Modules...
         Mounting RPC Pipe File System...
         Mounting Kernel Debug File System...
[  OK  ] Listening on Syslog Socket.
[  OK  ] Listening on udev Control Socket.
[  OK  ] Created slice system-serial\x2dgetty.slice.
[  OK  ] Listening on fsck to fsckd communication Socket.
[  OK  ] Created slice system-systemd\x2dfsck.slice.
[  OK  ] Listening on udev Kernel Socket.
         Starting udev Coldplug all Devices...
[  OK  ] Started Forward Password R…uests to Wall Directory Watch.
[  OK  ] Listening on Journal Socket (/dev/log).
         Starting Journal Service...
         Mounting POSIX Message Queue File System...
         Starting Restore / save the current clock...
[  OK  ] Started Dispatch Password …ts to Console Directory Watch.
[  OK  ] Reached target Local Encrypted Volumes.
[  OK  ] Reached target Paths.
         Starting Set the console keyboard layout...
[  OK  ] Listening on initctl Compatibility Named Pipe.
[  OK  ] Reached target Slices.
[  OK  ] Started Load Kernel Modules.
systemd[1]: Mounted RPC Pipe File System.
[  OK  ] Mounted RPC Pipe File System.
systemd[1]: Mounted Kernel Debug File System.
[  OK  ] Mounted Kernel Debug File System.
systemd[1]: Mounted POSIX Message Queue File System.
[  OK  ] Mounted POSIX Message Queue File System.
systemd[1]: Starting Apply Kernel Variables...
         Starting Apply Kernel Variables...
systemd[1]: Condition check resulted in Kernel Configuration File System being skipped.
systemd[1]: Condition check resulted in FUSE Control File System being skipped.
systemd[1]: Started Restore / save the current clock.
[  OK  ] Started Restore / save the current clock.
systemd[1]: Starting File System Check on Root Device...
         Starting File System Check on Root Device...
[  OK  ] Started Apply Kernel Variables.
[  OK  ] Started File System Check Daemon to report status.
[  OK  ] Started Journal Service.
[  OK  ] Started File System Check on Root Device.
         Starting Remount Root and Kernel File Systems...
[  OK  ] Started Set the console keyboard layout.
[  OK  ] Started Remount Root and Kernel File Systems.
         Starting Create System Users...
         Starting Flush Journal to Persistent Storage...
         Starting Load/Save Random Seed...
[  OK  ] Started udev Coldplug all Devices.
         Starting Helper to synchronize boot up for ifupdown...
[  OK  ] Started Helper to synchronize boot up for ifupdown.
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Started Create System Users.
         Starting Create Static Device Nodes in /dev...
[  OK  ] Started Flush Journal to Persistent Storage.
[  OK  ] Started Create Static Device Nodes in /dev.
         Starting udev Kernel Device Manager...
[  OK  ] Reached target Local File Systems (Pre).
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Found device /dev/ttyAMA0.
[  OK  ] Found device QEMU_HARDDISK boot.
         Starting File System Check…isk/by-partuuid/738a4d67-01...
[  OK  ] Started File System Check …/disk/by-partuuid/738a4d67-01.
         Mounting /boot...
[  OK  ] Mounted /boot.
[  OK  ] Reached target Local File Systems.
         Starting Create Volatile Files and Directories...
         Starting Preprocess NFS configuration...
         Starting Set console font and keymap...
         Starting Raise network interfaces...
[  OK  ] Started Preprocess NFS configuration.
[  OK  ] Reached target NFS client services.
[  OK  ] Reached target Remote File Systems (Pre).
[  OK  ] Reached target Remote File Systems.
[  OK  ] Started Set console font and keymap.
[  OK  ] Started Create Volatile Files and Directories.
         Starting Network Time Synchronization...
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Initialization.
[  OK  ] Listening on triggerhappy.socket.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Reached target Basic System.
         Starting triggerhappy global hotkey daemon...
         Starting LSB: Switch to on…nless shift key is pressed)...
         Starting dphys-swapfile - …unt, and delete a swap file...
[  OK  ] Started D-Bus System Message Bus.
         Starting System Logging Service...
         Starting Login Service...
[  OK  ] Started Regular background program processing daemon.
         Starting rng-tools.service...
         Starting Avahi mDNS/DNS-SD Stack...
         Starting dhcpcd on all interfaces...
         Starting WPA supplicant...
[  OK  ] Started Daily Cleanup of Temporary Directories.
         Starting Check for Raspberry Pi EEPROM updates...
[  OK  ] Reached target System Time Synchronized.
[  OK  ] Started Daily apt download activities.
[  OK  ] Started Daily apt upgrade and clean activities.
[  OK  ] Started Daily man-db regeneration.
[  OK  ] Started Daily rotation of log files.
[  OK  ] Reached target Timers.
[  OK  ] Started triggerhappy global hotkey daemon.
[  OK  ] Started System Logging Service.
[FAILED] Failed to start rng-tools.service.
See 'systemctl status rng-tools.service' for details.
[  OK  ] Started Check for Raspberry Pi EEPROM updates.
[  OK  ] Started Avahi mDNS/DNS-SD Stack.
[  OK  ] Started WPA supplicant.
[  OK  ] Started Raise network interfaces.
[  OK  ] Started Login Service.
[  OK  ] Started LSB: Switch to ond…(unless shift key is pressed).
[  OK  ] Started dphys-swapfile - s…mount, and delete a swap file.
[  OK  ] Started dhcpcd on all interfaces.
[  OK  ] Reached target Network.
         Starting Permit User Sessions...
         Starting /etc/rc.local Compatibility...
         Starting OpenBSD Secure Shell server...
My IP address is 10.0.2.15 
[  OK  ] Started /etc/rc.local Compatibility.
[  OK  ] Started Permit User Sessions.
[  OK  ] Started Serial Getty on ttyAMA0.
[  OK  ] Started Getty on tty1.
[  OK  ] Reached target Login Prompts.
[  OK  ] Started OpenBSD Secure Shell server.

Raspbian GNU/Linux 10 raspberrypi ttyAMA0

raspberrypi login: 
DoubangoTelecom commented 4 years ago

Without logs at startup we have no idea which version, platform, cpu features... are used. Please share them as previously asked

brunoaduarte commented 4 years ago

Without logs at startup we have no idea which version, platform, cpu features... are used. Please share them as previously asked

I pasted the startup logs on the previous message... i thought that was what you're asking for.

Here's the kernel logs (dmesg)

pi@raspberrypi:~/ultimateALPR-SDK/samples/c++/benchmark $ dmesg
[    0.241680] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.251402] CPU: Testing write buffer coherency: ok
[    0.260360] Setting up static identity map for 0x8220 - 0x827c
[    0.292796] devtmpfs: initialized
[    0.299951] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
[    0.314022] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.314489] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.324578] NET: Registered protocol family 16
[    0.327915] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.343025] OF: amba_device_add() failed (-19) for /amba/smc@10100000
[    0.343400] OF: amba_device_add() failed (-19) for /amba/mpmc@10110000
[    0.343738] OF: amba_device_add() failed (-19) for /amba/sctl@101e0000
[    0.343867] OF: amba_device_add() failed (-19) for /amba/watchdog@101e1000
[    0.344943] OF: amba_device_add() failed (-19) for /amba/sci@101f0000
[    0.345082] OF: amba_device_add() failed (-19) for /amba/ssp@101f4000
[    0.346685] OF: amba_device_add() failed (-19) for /amba/fpga/sci@a000
[    0.347985] Serial: AMBA PL011 UART driver
[    0.350818] 101f1000.uart: ttyAMA0 at MMIO 0x101f1000 (irq = 28, base_baud = 0) is a PL011 rev1
[    0.364603] console [ttyAMA0] enabled
[    0.369177] 101f2000.uart: ttyAMA1 at MMIO 0x101f2000 (irq = 29, base_baud = 0) is a PL011 rev1
[    0.369789] 101f3000.uart: ttyAMA2 at MMIO 0x101f3000 (irq = 30, base_baud = 0) is a PL011 rev1
[    0.370328] 10009000.uart: ttyAMA3 at MMIO 0x10009000 (irq = 54, base_baud = 0) is a PL011 rev1
[    0.387460] vgaarb: loaded
[    0.388870] SCSI subsystem initialized
[    0.398573] clocksource: Switched to clocksource arm,sp804
[    0.412783] NET: Registered protocol family 2
[    0.417701] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
[    0.418001] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[    0.418244] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
[    0.418512] TCP: Hash tables configured (established 2048 bind 2048)
[    0.420159] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.420438] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.421648] NET: Registered protocol family 1
[    0.423964] RPC: Registered named UNIX socket transport module.
[    0.424152] RPC: Registered udp transport module.
[    0.424267] RPC: Registered tcp transport module.
[    0.424380] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.424639] PCI: CLS 0 bytes, default 32
[    0.428880] NetWinder Floating Point Emulator V0.97 (double precision)
[    0.431594] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[    0.435059] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[    0.436748] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    0.437314] romfs: ROMFS MTD (C) 2007 Red Hat, Inc.
[    0.437530] 9p: Installing v9fs 9p2000 file system support
[    0.443279] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.443642] io scheduler noop registered
[    0.443769] io scheduler deadline registered
[    0.443980] io scheduler cfq registered (default)
[    0.444121] io scheduler mq-deadline registered
[    0.444231] io scheduler kyber registered
[    0.446844] pl061_gpio 101e4000.gpio: PL061 GPIO chip @0x101e4000 registered
[    0.447427] pl061_gpio 101e5000.gpio: PL061 GPIO chip @0x101e5000 registered
[    0.447857] pl061_gpio 101e6000.gpio: PL061 GPIO chip @0x101e6000 registered
[    0.450407] pl061_gpio 101e7000.gpio: PL061 GPIO chip @0x101e7000 registered
[    0.451152] versatile-pci 10001000.pci: host bridge /amba/pci@10001000 ranges:
[    0.451760] versatile-pci 10001000.pci:    IO 0x43000000..0x4300ffff -> 0x00000000
[    0.452333] versatile-pci 10001000.pci:   MEM 0x50000000..0x5fffffff -> 0x50000000
[    0.452567] versatile-pci 10001000.pci:   MEM 0x60000000..0x6fffffff -> 0x60000000
[    0.453240] versatile-pci 10001000.pci: PCI core found (slot 11)
[    0.454213] versatile-pci 10001000.pci: PCI host bridge to bus 0000:00
[    0.454728] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.454960] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.455133] pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff]
[    0.455380] pci_bus 0000:00: root bus resource [mem 0x60000000-0x6fffffff pref]
[    0.456758] pci 0000:00:0c.0: [10ec:8139] type 00 class 0x020000
[    0.457565] pci 0000:00:0c.0: reg 0x10: [io  0x0000-0x00ff]
[    0.457654] pci 0000:00:0c.0: reg 0x14: [mem 0x00000000-0x000000ff]
[    0.457729] pci 0000:00:0c.0: reg 0x30: [mem 0x00000000-0x0003ffff pref]
[    0.459174] pci 0000:00:0d.0: [1000:0012] type 00 class 0x010000
[    0.459199] pci 0000:00:0d.0: reg 0x10: [io  0x0000-0x00ff]
[    0.459211] pci 0000:00:0d.0: reg 0x14: [mem 0x00000000-0x000003ff]
[    0.459223] pci 0000:00:0d.0: reg 0x18: [mem 0x00000000-0x00001fff]
[    0.460107] PCI: bus0: Fast back to back transfers disabled
[    0.461371] pci 0000:00:0c.0: BAR 6: assigned [mem 0x60000000-0x6003ffff pref]
[    0.462220] pci 0000:00:0d.0: BAR 2: assigned [mem 0x50000000-0x50001fff]
[    0.462741] pci 0000:00:0d.0: BAR 1: assigned [mem 0x50002000-0x500023ff]
[    0.462949] pci 0000:00:0c.0: BAR 0: assigned [io  0x1000-0x10ff]
[    0.463158] pci 0000:00:0c.0: BAR 1: assigned [mem 0x50002400-0x500024ff]
[    0.463344] pci 0000:00:0d.0: BAR 0: assigned [io  0x1400-0x14ff]
[    0.471872] drm-clcd-pl111 dev:20: no max memory bandwidth specified, assume unlimited
[    0.473185] drm-clcd-pl111 dev:20: set up callbacks for Versatile PL110
[    0.475063] OF: graph: no port node found in /amba/display@10120000
[    0.475269] drm-clcd-pl111 dev:20: No bridge, exiting
[    0.503107] brd: module loaded
[    0.512863] loop: module loaded
[    0.514525] sym53c8xx 0000:00:0d.0: enabling device (0100 -> 0103)
[    0.516757] sym0: <895a> rev 0x0 at pci 0000:00:0d.0 irq 67
[    0.521378] sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking
[    0.529553] sym0: SCSI BUS has been reset.
[    0.529976] scsi host0: sym-2.2.3
[    3.603516] scsi 0:0:0:0: Direct-Access     QEMU     QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
[    3.604386] scsi target0:0:0: tagged command queuing enabled, command queue depth 16.
[    3.605207] scsi target0:0:0: Beginning Domain Validation
[    3.607382] scsi target0:0:0: Domain Validation skipping write tests
[    3.607570] scsi target0:0:0: Ending Domain Validation
[    3.616370] scsi 0:0:2:0: CD-ROM            QEMU     QEMU CD-ROM      2.5+ PQ: 0 ANSI: 5
[    3.616640] scsi target0:0:2: tagged command queuing enabled, command queue depth 16.
[    3.616874] scsi target0:0:2: Beginning Domain Validation
[    3.618028] scsi target0:0:2: Domain Validation skipping write tests
[    3.618203] scsi target0:0:2: Ending Domain Validation
[    3.628848] random: fast init done
[    3.632208] sr 0:0:2:0: Power-on or device reset occurred
[    3.633265] sr 0:0:2:0: [sr0] scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
[    3.633612] cdrom: Uniform CD-ROM driver Revision: 3.20
[    3.635391] sd 0:0:0:0: Power-on or device reset occurred
[    3.637874] sd 0:0:0:0: [sda] 16195584 512-byte logical blocks: (8.29 GB/7.72 GiB)
[    3.638388] sd 0:0:0:0: [sda] Write Protect is off
[    3.638642] sd 0:0:0:0: [sda] Mode Sense: 63 00 00 08
[    3.639187] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.647022] sr 0:0:2:0: Attached scsi CD-ROM sr0
[    3.648321] of-flash 34000000.flash: versatile/realview flash protection
[    3.655899] 34000000.flash: Found 1 x32 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
[    3.656563] Intel/Sharp Extended Query Table at 0x0031
[    3.657133] Using buffer write method
[    3.657564] erase region 0: offset=0x0,size=0x40000,blocks=256
[    3.658787]  sda: sda1 sda2
[    3.663277] sd 0:0:0:0: [sda] Attached SCSI disk
[    3.671810] smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
[    3.675097] smc91x 10010000.net eth0: SMC91C11xFD (rev 1) at (ptrval) IRQ 41
[    3.675489] smc91x 10010000.net eth0: Ethernet addr: 52:54:00:12:34:56
[    3.695002] rtc-ds1307 0-0068: registered as rtc0
[    3.695823] versatile reboot driver registered
[    3.696554] device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com
[    3.697342] mmci-pl18x fpga:05: /aliases ID not available
[    3.698678] mmci-pl18x fpga:05: mmc0: PL181 manf 41 rev0 at 0x10005000 irq 59,60 (pio)
[    3.699126] mmci-pl18x fpga:05: DMA channels RX none, TX none
[    3.727374] mmci-pl18x fpga:0b: /aliases ID not available
[    3.727749] mmci-pl18x fpga:0b: mmc1: PL181 manf 41 rev0 at 0x1000b000 irq 49,50 (pio)
[    3.727965] mmci-pl18x fpga:0b: DMA channels RX none, TX none
[    3.756066] leds-syscon 10000000.core-module:led@08.0: registered LED versatile:0
[    3.756732] leds-syscon 10000000.core-module:led@08.1: registered LED versatile:1
[    3.757115] leds-syscon 10000000.core-module:led@08.2: registered LED versatile:2
[    3.757469] leds-syscon 10000000.core-module:led@08.3: registered LED versatile:3
[    3.757835] leds-syscon 10000000.core-module:led@08.4: registered LED versatile:4
[    3.758204] leds-syscon 10000000.core-module:led@08.5: registered LED versatile:5
[    3.758586] leds-syscon 10000000.core-module:led@08.6: registered LED versatile:6
[    3.759292] leds-syscon 10000000.core-module:led@08.7: registered LED versatile:7
[    3.760118] ledtrig-cpu: registered to indicate activity on CPUs
[    3.768149] NET: Registered protocol family 17
[    3.768863] Bridge firewalling registered
[    3.769610] 9pnet: Installing 9P2000 support
[    3.781832] rtc-ds1307 0-0068: setting system clock to 2020-02-21 20:35:45 UTC (1582317345)
[    3.785568] uart-pl011 101f1000.uart: no DMA platform data
[    3.802078] input: AT Raw Set 2 keyboard as /devices/platform/amba/amba:fpga/10006000.kmi/serio0/input/input0
[    4.439732] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/amba/amba:fpga/10007000.kmi/serio1/input/input2
[    4.494169] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    4.495655] VFS: Mounted root (ext4 filesystem) readonly on device 8:2.
[    4.499942] devtmpfs: mounted
[    4.512921] Freeing unused kernel memory: 196K
[    4.513094] This architecture does not have kernel memory protection.
[    4.513347] Run /sbin/init as init process
[    4.910899] systemd[1]: Failed to lookup module alias 'autofs4': Function not implemented
[    5.179797] systemd[1]: systemd 241 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[    5.184625] systemd[1]: Detected architecture arm.
[    5.328820] systemd[1]: Set hostname to <raspberrypi>.
[    7.737937] systemd[1]: File /lib/systemd/system/systemd-journald.service:12 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
[    7.740441] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
[    8.456192] random: systemd: uninitialized urandom read (16 bytes read)
[    8.492798] random: systemd: uninitialized urandom read (16 bytes read)
[    8.515728] systemd[1]: Created slice system-getty.slice.
[    8.616177] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
[    8.616913] random: systemd: uninitialized urandom read (16 bytes read)
[    8.617471] systemd[1]: Reached target Swap.
[    8.624086] systemd[1]: Created slice User and Session Slice.
[    8.631219] systemd[1]: Listening on Journal Socket.
[   10.454797] systemd[1]: Mounted RPC Pipe File System.
[   10.513663] systemd[1]: Mounted Kernel Debug File System.
[   10.532057] systemd[1]: Mounted POSIX Message Queue File System.
[   10.814112] systemd[1]: Starting Apply Kernel Variables...
[   10.857392] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped.
[   10.859851] systemd[1]: Condition check resulted in FUSE Control File System being skipped.
[   11.129997] systemd[1]: Started Restore / save the current clock.
[   11.211860] systemd[1]: Starting File System Check on Root Device...
[   11.750276] systemd[1]: Started Apply Kernel Variables.
[   12.068069] systemd[1]: Started File System Check Daemon to report status.
[   14.969338] random: crng init done
[   14.969724] random: 7 urandom warning(s) missed due to ratelimiting
[   15.335042] EXT4-fs (sda2): re-mounted. Opts: (null)
[   16.355608] systemd-journald[55]: Received request to flush runtime journal from PID 1
[   42.969181] Adding 102396k swap on /var/swap.  Priority:-2 extents:1 across:102396k
[   43.501904] smc91x 10010000.net eth0: PHY reset timed out

If these are not the logs you need please tell me how to acquire them.

Thanks!

DoubangoTelecom commented 4 years ago

I don't see logs from the application. It should at least print copyright info. If none is printed it means the app crashes at load before execution

brunoaduarte commented 4 years ago

Yes, it seems there are no outputs from benchkmark anywhere else

pi@raspberrypi:~/ultimateALPR-SDK/samples/c++/benchmark $ ./benchmark -v
./benchmark: error while loading shared libraries: libultimate_alpr-sdk.so: cannot open shared object file: No such file or directory

pi@raspberrypi:~/ultimateALPR-SDK/samples/c++/benchmark $ LD_LIBRARY_PATH=../../../binaries/raspbian/armv7l:$LD_LIBRARY_PATH ./benchmark
Illegal instruction

./benchmark

is properly executed, the problem occurs after it loads the library

libultimate_alpr-sdk.so

DoubangoTelecom commented 4 years ago

Let's explain what's going on: Our Computer Vision library and Deep Learning code heavily use SIMD and GPGPU code to speedup the execution. At startup we automatically detect the CPU and GPU supported features. You can see in the logs at startup which features are detected.

On Windows, Linux, Android... we build the libraries with all CPU extra-features (e.g. NEON, FMA, VFP...) disabled to make sure it'll work on all devices. When the application loads we detect the extra-features (see https://github.com/DoubangoTelecom/compv/blob/master/base/compv_cpu.cxx#L311) and hook the assembler and intrinsic functions.

On Raspberry Pi, it's different. We already know which CPU features are supported (half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32). We still detect the extra-features at startup BUT the shared libraries are built with these SIMD features enabled. See https://github.com/DoubangoTelecom/compv/blob/master/common.cmake#L76. You can see that vfpv4 is enabled. From your logs, your device doesn't support this feature. This is why Raspberry Pi binaries are on their own folder instead of linux/arm32. Rebuilding our binaries without vfpv4 is easy but we've to do the same for Tensorflow which is not easy and time consuming.

There may be other issues but you'll need to debug the code (gdb) on the device itself.

brunoaduarte commented 4 years ago

Ok. Thank you very much for your explanation! I've ordered a Rpi4 and it should arrive by the end of this week. Then i'll finally be able to test the software properly.