pine64 / blisp

ISP tool & library for Bouffalo Labs RISC-V Microcontrollers and SoCs
MIT License
149 stars 20 forks source link

Compile & run blisp on Raspberry Pi 4B #15

Closed jonesuki closed 1 year ago

jonesuki commented 1 year ago

I tried compile and run blisp to update the firmware on my Pinecil. The result is inconsistent.

Firstly, on a freshly installed Raspberry Pi 4B (4GB), I install the latest cmake with snap

$ sudo snap install core
2022-12-17T04:09:45Z INFO Waiting for automatic snapd restart...
core 16-2.57.6 from Canonical✓ installed
 $ sudo snap install cmake --classic
cmake 3.25.1 from Crascit✓ installed

Then, I download the source of blisp and compile it:

$ cmake -DBLISP_BUILD_CLI=ON ..
-- The C compiler identification is GNU 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/Downloads/blisp/build
$ cmake --build .
[  1%] Building C object CMakeFiles/libblisp_obj.dir/lib/blisp.c.o
[  2%] Building C object CMakeFiles/libblisp_obj.dir/lib/chip/blisp_chip_bl60x.c.o
[  3%] Building C object CMakeFiles/libblisp_obj.dir/lib/chip/blisp_chip_bl70x.c.o
[  4%] Building C object CMakeFiles/libblisp_obj.dir/vendor/libserialport/serialport.c.o
[  5%] Building C object CMakeFiles/libblisp_obj.dir/vendor/libserialport/timing.c.o
[  6%] Building C object CMakeFiles/libblisp_obj.dir/vendor/libserialport/linux.c.o
[  7%] Building C object CMakeFiles/libblisp_obj.dir/vendor/libserialport/linux_termios.c.o
[  7%] Built target libblisp_obj
[  8%] Linking C shared library shared/libblisp.so
[  8%] Built target libblisp
[  9%] Linking C static library static/libblisp.a
[  9%] Built target libblisp_static
[ 10%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_cmd.c.o
[ 11%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_date.c.o
[ 12%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_dbl.c.o
[ 13%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_dstr.c.o
[ 14%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_end.c.o
[ 15%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_file.c.o
[ 16%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_hashtable.c.o
[ 17%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_int.c.o
[ 18%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_lit.c.o
[ 19%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_rem.c.o
[ 20%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_rex.c.o
[ 21%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_str.c.o
[ 22%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_utils.c.o
[ 23%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/argtable3.c.o
[ 24%] Building C object tools/blisp/argtable3/src/CMakeFiles/argtable3.dir/arg_getopt_long.c.o
[ 25%] Linking C static library libargtable3_static.a
[ 25%] Built target argtable3
[ 26%] Building C object tools/blisp/CMakeFiles/blisp.dir/src/main.c.o
[ 27%] Building C object tools/blisp/CMakeFiles/blisp.dir/src/cmd/write.c.o
[ 28%] Linking C executable blisp
[ 28%] Built target blisp
[ 29%] Building C object tools/blisp/argtable3/examples/CMakeFiles/echo.dir/echo.c.o
[ 30%] Linking C executable echo
[ 30%] Built target echo
[ 31%] Building C object tools/blisp/argtable3/examples/CMakeFiles/ls.dir/ls.c.o
[ 32%] Linking C executable ls
[ 32%] Built target ls
[ 33%] Building C object tools/blisp/argtable3/examples/CMakeFiles/multisyntax.dir/multisyntax.c.o
[ 34%] Linking C executable multisyntax
[ 34%] Built target multisyntax
[ 35%] Building C object tools/blisp/argtable3/examples/CMakeFiles/mv.dir/mv.c.o
[ 36%] Linking C executable mv
[ 36%] Built target mv
[ 37%] Building C object tools/blisp/argtable3/examples/CMakeFiles/myprog.dir/myprog.c.o
[ 38%] Linking C executable myprog
[ 38%] Built target myprog
[ 39%] Building C object tools/blisp/argtable3/examples/CMakeFiles/myprog_C89.dir/myprog_C89.c.o
[ 40%] Linking C executable myprog_C89
[ 40%] Built target myprog_C89
[ 41%] Building C object tools/blisp/argtable3/examples/CMakeFiles/testargtable3.dir/testargtable3.c.o
[ 42%] Linking C executable testargtable3
[ 42%] Built target testargtable3
[ 43%] Building C object tools/blisp/argtable3/examples/CMakeFiles/uname.dir/uname.c.o
[ 44%] Linking C executable uname
[ 44%] Built target uname
[ 45%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testall.c.o
[ 46%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testarglit.c.o
[ 47%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargstr.c.o
[ 48%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargint.c.o
[ 49%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargdate.c.o
[ 50%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargdbl.c.o
[ 51%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargfile.c.o
[ 52%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargrex.c.o
[ 53%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargdstr.c.o
[ 54%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testargcmd.c.o
[ 55%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/CuTest.c.o
[ 56%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_static.dir/testarghashtable.c.o
[ 57%] Linking C executable test_static
[ 57%] Built target test_static
[ 58%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testall.c.o
[ 59%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testarglit.c.o
[ 60%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargstr.c.o
[ 61%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargint.c.o
[ 62%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargdate.c.o
[ 63%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargdbl.c.o
[ 64%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargfile.c.o
[ 65%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargrex.c.o
[ 66%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargdstr.c.o
[ 67%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testargcmd.c.o
[ 68%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/CuTest.c.o
[ 69%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/testarghashtable.c.o
[ 70%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_cmd.c.o
[ 71%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_date.c.o
[ 72%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_dbl.c.o
[ 73%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_dstr.c.o
[ 74%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_end.c.o
[ 75%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_file.c.o
[ 76%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_hashtable.c.o
[ 77%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_int.c.o
[ 78%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_lit.c.o
[ 79%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_rem.c.o
[ 80%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_rex.c.o
[ 81%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_str.c.o
[ 82%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_utils.c.o
[ 83%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/argtable3.c.o
[ 84%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_src.dir/__/src/arg_getopt_long.c.o
[ 85%] Linking C executable test_src
[ 85%] Built target test_src
[ 86%] Generating /home/pi/Downloads/blisp/vendor/argtable3/dist/argtable3.c
dos2unix: Skipping ../dist, not a regular file.
dos2unix: converting file ../dist/LICENSE to Unix format...
dos2unix: Skipping ../dist/tests, not a regular file.
dos2unix: converting file ../dist/tests/testargstr.c to Unix format...
dos2unix: converting file ../dist/tests/testarglit.c to Unix format...
dos2unix: converting file ../dist/tests/testargrex.c to Unix format...
dos2unix: converting file ../dist/tests/testarghashtable.c to Unix format...
dos2unix: converting file ../dist/tests/testargdstr.c to Unix format...
dos2unix: converting file ../dist/tests/testargint.c to Unix format...
dos2unix: converting file ../dist/tests/testargdbl.c to Unix format...
dos2unix: converting file ../dist/tests/CuTest.h to Unix format...
dos2unix: converting file ../dist/tests/testargcmd.c to Unix format...
dos2unix: converting file ../dist/tests/CuTest.c to Unix format...
dos2unix: converting file ../dist/tests/CMakeLists.txt to Unix format...
dos2unix: converting file ../dist/tests/testargdate.c to Unix format...
dos2unix: converting file ../dist/tests/argtable3_private.h to Unix format...
dos2unix: converting file ../dist/tests/testall.c to Unix format...
dos2unix: converting file ../dist/tests/testargfile.c to Unix format...
dos2unix: converting file ../dist/README.md to Unix format...
dos2unix: Skipping ../dist/examples, not a regular file.
dos2unix: converting file ../dist/examples/myprog.c to Unix format...
dos2unix: converting file ../dist/examples/myprog_C89.c to Unix format...
dos2unix: converting file ../dist/examples/ls.c to Unix format...
dos2unix: converting file ../dist/examples/multisyntax.c to Unix format...
dos2unix: converting file ../dist/examples/mv.c to Unix format...
dos2unix: converting file ../dist/examples/echo.c to Unix format...
dos2unix: converting file ../dist/examples/testargtable3.c to Unix format...
dos2unix: converting file ../dist/examples/CMakeLists.txt to Unix format...
dos2unix: converting file ../dist/examples/uname.c to Unix format...
dos2unix: converting file ../dist/argtable3.c to Unix format...
dos2unix: converting file ../dist/argtable3.h to Unix format...
[ 87%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testall.c.o
[ 88%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testarglit.c.o
[ 89%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargstr.c.o
[ 90%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargint.c.o
[ 91%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargdate.c.o
[ 92%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargdbl.c.o
[ 93%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargfile.c.o
[ 94%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargrex.c.o
[ 95%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargdstr.c.o
[ 96%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testargcmd.c.o
[ 97%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/CuTest.c.o
[ 98%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/testarghashtable.c.o
[ 99%] Building C object tools/blisp/argtable3/tests/CMakeFiles/test_amalgamation.dir/__/dist/argtable3.c.o
[100%] Linking C executable test_amalgamation
dos2unix: Skipping ../dist, not a regular file.
dos2unix: converting file ../dist/LICENSE to Unix format...
dos2unix: Skipping ../dist/tests, not a regular file.
dos2unix: converting file ../dist/tests/testargstr.c to Unix format...
dos2unix: converting file ../dist/tests/testarglit.c to Unix format...
dos2unix: converting file ../dist/tests/testargrex.c to Unix format...
dos2unix: converting file ../dist/tests/testarghashtable.c to Unix format...
dos2unix: converting file ../dist/tests/testargdstr.c to Unix format...
dos2unix: converting file ../dist/tests/testargint.c to Unix format...
dos2unix: converting file ../dist/tests/testargdbl.c to Unix format...
dos2unix: converting file ../dist/tests/CuTest.h to Unix format...
dos2unix: converting file ../dist/tests/testargcmd.c to Unix format...
dos2unix: converting file ../dist/tests/CuTest.c to Unix format...
dos2unix: converting file ../dist/tests/CMakeLists.txt to Unix format...
dos2unix: converting file ../dist/tests/testargdate.c to Unix format...
dos2unix: converting file ../dist/tests/argtable3_private.h to Unix format...
dos2unix: converting file ../dist/tests/testall.c to Unix format...
dos2unix: converting file ../dist/tests/testargfile.c to Unix format...
dos2unix: converting file ../dist/README.md to Unix format...
dos2unix: Skipping ../dist/examples, not a regular file.
dos2unix: converting file ../dist/examples/myprog.c to Unix format...
dos2unix: converting file ../dist/examples/myprog_C89.c to Unix format...
dos2unix: converting file ../dist/examples/ls.c to Unix format...
dos2unix: converting file ../dist/examples/multisyntax.c to Unix format...
dos2unix: converting file ../dist/examples/mv.c to Unix format...
dos2unix: converting file ../dist/examples/echo.c to Unix format...
dos2unix: converting file ../dist/examples/testargtable3.c to Unix format...
dos2unix: converting file ../dist/examples/CMakeLists.txt to Unix format...
dos2unix: converting file ../dist/examples/uname.c to Unix format...
dos2unix: converting file ../dist/argtable3.c to Unix format...
dos2unix: converting file ../dist/argtable3.h to Unix format...
[100%] Built target test_amalgamation

No error or warning in the process.

I plug in my pinecil while holding the "-" button. It was connected successfully

[  772.204326] usb 1-1.1: new full-speed USB device number 4 using xhci_hcd
[  772.341951] usb 1-1.1: New USB device found, idVendor=ffff, idProduct=ffff, bcdDevice= 2.00
[  772.341980] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  772.342001] usb 1-1.1: Product: CDC Virtual ComPort
[  772.342018] usb 1-1.1: Manufacturer: BLIOT
[  772.342034] usb 1-1.1: SerialNumber: 000000020000
[  772.443702] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
[  772.444597] usbcore: registered new interface driver cdc_acm
[  772.444607] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

I run blisp after copying the firmware files (flash_loader_32m.bin & Pinecilv2_EN.bin) accordingly First run:

$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 
Sending a handshake... OK
Getting chip info... BootROM version 1.0.2.7, ChipID: 000005AA41CF0EB4
Loading the eflash loader file from disk
Loading eflash_loader...
Failed to load boot header.

syslog showing the device is not a n MTP device (not sure if this is relavant:

Dec 17 04:29:30 raspberrypi kernel: [  772.204326] usb 1-1.1: new full-speed USB device number 4 using xhci_hcd
Dec 17 04:29:30 raspberrypi kernel: [  772.341951] usb 1-1.1: New USB device found, idVendor=ffff, idProduct=ffff, bcdDevice= 2.00
Dec 17 04:29:30 raspberrypi kernel: [  772.341980] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Dec 17 04:29:30 raspberrypi kernel: [  772.342001] usb 1-1.1: Product: CDC Virtual ComPort
Dec 17 04:29:30 raspberrypi kernel: [  772.342018] usb 1-1.1: Manufacturer: BLIOT
Dec 17 04:29:30 raspberrypi kernel: [  772.342034] usb 1-1.1: SerialNumber: 000000020000
Dec 17 04:29:30 raspberrypi mtp-probe: checking bus 1, device 4: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1"
Dec 17 04:29:30 raspberrypi mtp-probe: bus: 1, device: 4 was not an MTP device
Dec 17 04:29:30 raspberrypi kernel: [  772.443702] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
Dec 17 04:29:30 raspberrypi kernel: [  772.444597] usbcore: registered new interface driver cdc_acm
Dec 17 04:29:30 raspberrypi kernel: [  772.444607] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Dec 17 04:29:30 raspberrypi mtp-probe: checking bus 1, device 4: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1"
Dec 17 04:29:30 raspberrypi mtp-probe: bus: 1, device: 4 was not an MTP device
Dec 17 04:29:30 raspberrypi snapd[430]: hotplug.go:200: hotplug device add event ignored, enable experimental.hotplug
Dec 17 04:29:33 raspberrypi ModemManager[568]: <info>  [base-manager] couldn't check support for device '/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1': not supported by any plugin
Dec 17 04:31:52 raspberrypi systemd[1]: Starting Cleanup of Temporary Directories...
Dec 17 04:31:52 raspberrypi systemd[1]: systemd-tmpfiles-clean.service: Succeeded.
Dec 17 04:31:52 raspberrypi systemd[1]: Finished Cleanup of Temporary Directories.

Then, I tried keep pressing the "-" button while running blisp. The result is very inconsistent:

$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 
Sending a handshake... OK
Getting chip info... BootROM version 1.0.2.7, ChipID: 000005AA41CF0EB4
Loading the eflash loader file from disk
Loading eflash_loader...
Failed to load boot header.
$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 
Sending a handshake... OK
Getting chip info... BootROM version 1.0.2.7, ChipID: 000005AA41CF0EB4
Loading the eflash loader file from disk
Loading eflash_loader...
Failed to load segment header.
$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 
Sending a handshake... OK
Getting chip info... BootROM version 1.0.2.7, ChipID: 000005AA41CF0EB4
Loading the eflash loader file from disk
Loading eflash_loader...
Failed to load boot header.
$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 
Sending a handshake... OK
Getting chip info... BootROM version 1.0.2.7, ChipID: 000005AA41CF0EB4
Loading the eflash loader file from disk
Loading eflash_loader...
Flashing 1. segment
0b / 59200b (0.00%)
4092b / 59200b (6.91%)
Failed to load segment data. (ret -4)
$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 
Sending a handshake... OK
Getting chip info... BootROM version 1.0.2.7, ChipID: 000005AA41CF0EB4
Loading the eflash loader file from disk
Loading eflash_loader...
Failed to load boot header.
$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 
Sending a handshake... OK
Getting chip info... BootROM version 1.0.2.7, ChipID: 000005AA41CF0EB4
Loading the eflash loader file from disk
Loading eflash_loader...
Flashing 1. segment
0b / 59200b (0.00%)
4092b / 59200b (6.91%)
Failed to load segment data. (ret -4)
^C

^ I have to press Ctrl-C to stop the program after it did not response at the "Failed to..." message.

$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 

Failed to handshake with device.
^[[A^C

^ At that moment, the program even failed to handshake with the device...

$ sudo ./blisp write -c bl70x --reset Pinecilv2_EN.bin 

Failed to handshake with device.
Sending a handshake...

^ At final attempt, no handshake. In order to avoid possible bricking the pinecil, I quit here. Luckily, the pinecil seems to be find after these attempts.

jonesuki commented 1 year ago

The OS is Raspbian 5.15. I tried all 4 USB-A ports on the RPi and the result are the same.

gamelaster commented 1 year ago

Please, can you try it again with latest source? I will close the issue, if it will happen again, feel free to re-open it. Thanks