boards: bl602evb flash and debug notes
This commit is contained in:
parent
8706db6f48
commit
a42260a1ef
@ -1,10 +1,16 @@
|
||||
# Getting Started with nsh configuration
|
||||
1. Download and install toolchain
|
||||
|
||||
$ curl https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz
|
||||
|
||||
2. Download Bouffalo lab flash tools
|
||||
2. Download flash tools
|
||||
There are multiple tools that can be used, but option (a) is recommended.
|
||||
a. blflash -- cross platform open-source (recommended)
|
||||
curl -L -o blflash https://github.com/spacemeowx2/blflash/releases/download/v0.3.0/blflash-linux-amd64
|
||||
chmod +x ./blflash
|
||||
|
||||
$ git clone https://github.com/bouffalolab/flash_tools.git
|
||||
b. Bouffalo Lab flash tools (official)
|
||||
https://github.com/bouffalolab/flash_tools.git
|
||||
|
||||
3. Configure and build NuttX
|
||||
|
||||
@ -18,11 +24,174 @@
|
||||
|
||||
4. Connect bl602 and computer via USB
|
||||
|
||||
5. Run flash tools, select the nuttx.bin generated in the previous step in the
|
||||
Firmware bin field, and refer to the document for the settings of the remaining fields.
|
||||
Click the download button to download bin to bl602.
|
||||
5. Flash
|
||||
Use option (a) or (b) based on tool selection in section 2.
|
||||
a. Using blflash
|
||||
Place the board in bootloader mode
|
||||
bl602evb: Jumper IO8 to HI and press reset
|
||||
DT-BL10: Press and hold D8, press and release EN, release D8
|
||||
|
||||
$ blflash flash nuttx.bin --port /dev/ttyUSB0
|
||||
[INFO blflash::flasher] Start connection...
|
||||
[TRACE blflash::flasher] 5ms send count 55
|
||||
[TRACE blflash::flasher] handshake sent elapsed 159.674µs
|
||||
[INFO blflash::flasher] Connection Succeed
|
||||
[INFO blflash] Bootrom version: 1
|
||||
[TRACE blflash] Boot info: BootInfo { len: 14, bootrom_version: 1, otp_info: [0, 0, 0, 0, 3, 0, 0, 0, a4, 9b, 2, 42, e8, b4, 1d, 0] }
|
||||
[INFO blflash::flasher] Sending eflash_loader...
|
||||
[INFO blflash::flasher] Finished 2.563450723s 11.15KB/s
|
||||
[TRACE blflash::flasher] 5ms send count 500
|
||||
[TRACE blflash::flasher] handshake sent elapsed 5.065786ms
|
||||
[INFO blflash::flasher] Entered eflash_loader
|
||||
[INFO blflash::flasher] Skip segment addr: 0 size: 47504 sha256 matches
|
||||
[INFO blflash::flasher] Skip segment addr: e000 size: 272 sha256 matches
|
||||
[INFO blflash::flasher] Skip segment addr: f000 size: 272 sha256 matches
|
||||
[INFO blflash::flasher] Skip segment addr: 10000 size: 351584 sha256 matches
|
||||
[INFO blflash::flasher] Skip segment addr: 1f8000 size: 5671 sha256 matches
|
||||
[INFO blflash] Success
|
||||
|
||||
6. Run $ picocom -b 115200 /dev/ttyUSB0 (If you see garbled characters at the begining, it is because
|
||||
boot2 outputs some log at 2M baud rate), then you will see "nuttx>" prompt.
|
||||
b Using BL flash_tools
|
||||
Run flash tools, select the nuttx.bin generated in the previous step in the
|
||||
Firmware bin field, and refer to the document for the settings of the remaining fields.
|
||||
|
||||
How to download to bl602 can refer to the docs in the https://github.com/bouffalolab/bl_iot_sdk repository.
|
||||
6. Run connect terminal to UART (default baudrate 2000000)
|
||||
$ screen /dev/ttyUSB0 2000000
|
||||
7. Reset Device
|
||||
bl602evb: Press reset
|
||||
DT-BL10: Press and release EN
|
||||
8. NSH should appear on console
|
||||
|
||||
|
||||
# Using openocd and gdb:
|
||||
This guide is focused on the bl602evb board. See the reference manual for
|
||||
how to connect to the JTAG interface for other boards.
|
||||
|
||||
1. Make sure you are running a recently built version of openocd. The packaged
|
||||
versions are very old, and will likely not work. https://github.com/ntfreak/openocd
|
||||
|
||||
|
||||
2. Create a openocd-bl602.cfg file
|
||||
##############################################################################
|
||||
adapter driver ftdi
|
||||
ftdi_vid_pid 0x0403 0x6010
|
||||
ftdi_channel 1
|
||||
|
||||
transport select jtag
|
||||
adapter speed 2000
|
||||
|
||||
ftdi_layout_init 0x00f8 0x00fb
|
||||
set _CHIPNAME riscv
|
||||
jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x20000c05
|
||||
|
||||
set _TARGETNAME $_CHIPNAME.cpu
|
||||
target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME
|
||||
$_TARGETNAME.0 configure -work-area-phys 0x22020000 -work-area-size 0x10000 -work-area-backup 1
|
||||
|
||||
echo "Ready for Remote Connections"
|
||||
|
||||
$_TARGETNAME.0 configure -event reset-assert-pre {
|
||||
echo "reset-assert-pre"
|
||||
adapter speed 100
|
||||
}
|
||||
|
||||
$_TARGETNAME.0 configure -event reset-deassert-post {
|
||||
echo "reset-deassert-post"
|
||||
adapter speed 4000
|
||||
reg mstatus 0x80000000
|
||||
reg pc 0x21000000
|
||||
}
|
||||
|
||||
$_TARGETNAME.0 configure -event reset-init {
|
||||
echo "reset-init"
|
||||
adapter speed 4000
|
||||
}
|
||||
|
||||
gdb_memory_map enable
|
||||
gdb_flash_program disable
|
||||
|
||||
riscv set_prefer_sba on
|
||||
riscv set_command_timeout_sec 1
|
||||
|
||||
init
|
||||
reset init
|
||||
##############################################################################
|
||||
|
||||
3. Create a openocd.gdb configuration
|
||||
##############################################################################
|
||||
target extended-remote :3333
|
||||
|
||||
set print asm-demangle on
|
||||
set backtrace limit 32
|
||||
|
||||
mem 0x22008000 0x22014000 rw
|
||||
mem 0x42008000 0x42014000 rw
|
||||
mem 0x22014000 0x22020000 rw
|
||||
mem 0x42014000 0x42020000 rw
|
||||
mem 0x22020000 0x22030000 rw
|
||||
mem 0x42020000 0x42030000 rw
|
||||
mem 0x22030000 0x2204C000 rw
|
||||
mem 0x42030000 0x4204C000 rw
|
||||
mem 0x23000000 0x23400000 ro
|
||||
mem 0x40000000 0x40010000 rw
|
||||
|
||||
break __start
|
||||
stepi
|
||||
|
||||
##############################################################################
|
||||
|
||||
3. Connect openocd
|
||||
$ openocd -f openocd-bl602.cfg
|
||||
Open On-Chip Debugger 0.10.0+dev-01514-ga8edbd020-dirty (2020-11-19-20:11)
|
||||
Licensed under GNU GPL v2
|
||||
For bug reports, read
|
||||
http://openocd.org/doc/doxygen/bugs.html
|
||||
Ready for Remote Connections
|
||||
Info : clock speed 2000 kHz
|
||||
Info : JTAG tap: riscv.cpu tap/device found: 0x20000c05 (mfg: 0x602 (<unknown>), part: 0x0000, ver: 0x2)
|
||||
Info : datacount=1 progbufsize=2
|
||||
Info : Disabling abstract command reads from CSRs.
|
||||
Info : Examined RISC-V core; found 1 harts
|
||||
Info : hart 0: XLEN=32, misa=0x40801125
|
||||
Info : starting gdb server for riscv.cpu.0 on 3333
|
||||
Info : Listening on port 3333 for gdb connections
|
||||
Info : JTAG tap: riscv.cpu tap/device found: 0x20000c05 (mfg: 0x602 (<unknown>), part: 0x0000, ver: 0x2)
|
||||
reset-assert-pre
|
||||
reset-deassert-post
|
||||
Info : Disabling abstract command writes to CSRs.
|
||||
reset-init
|
||||
Info : Listening on port 6666 for tcl connections
|
||||
Info : Listening on port 4444 for telnet connections
|
||||
|
||||
4. Connect gdb
|
||||
This is a short demo placing a breakpoint at the entry to nsh.
|
||||
NOTE: openocd+gdb cannot be used at this time to flash the device.
|
||||
|
||||
$ riscv64-unknown-elf-gdb nuttx -x openocd-bl602.gdb
|
||||
Reading symbols from nuttx...
|
||||
0x21000000 in ?? ()
|
||||
Breakpoint 1 at 0x2300000a: file chip/bl602_entry.S, line 41.
|
||||
Note: automatically using hardware breakpoints for read-only addresses.
|
||||
0x21000004 in ?? ()
|
||||
(gdb) b nsh_main
|
||||
Breakpoint 2 at 0x23003f32: file nsh_main.c, line 123.
|
||||
(gdb) mon reset halt
|
||||
JTAG tap: riscv.cpu tap/device found: 0x20000c05 (mfg: 0x602 (<unknown>), part: 0x0000, ver: 0x2)
|
||||
reset-assert-pre
|
||||
reset-deassert-post
|
||||
(gdb) c
|
||||
Continuing.
|
||||
|
||||
Breakpoint 1, bl602_start () at chip/bl602_entry.S:41
|
||||
41 li t0, MSTATUS_MIE
|
||||
(gdb) c
|
||||
Continuing.
|
||||
|
||||
Breakpoint 2, nsh_main (argc=1, argc@entry=<error reading variable: value has been optimized out>, argv=0x420134c0, argv@entry=<error reading variable: value has been optimized out>)
|
||||
at nsh_main.c:123
|
||||
123 sched_getparam(0, ¶m);
|
||||
(gdb) bt
|
||||
#0 nsh_main (argc=1, argc@entry=<error reading variable: value has been optimized out>, argv=0x420134c0, argv@entry=<error reading variable: value has been optimized out>) at nsh_main.c:123
|
||||
#1 0x230030f0 in nxtask_startup (entrypt=<optimized out>, argc=<optimized out>, argv=<optimized out>) at sched/task_startup.c:165
|
||||
#2 0x23001362 in nxtask_start () at task/task_start.c:144
|
||||
#3 0x00000000 in ?? ()
|
||||
Backtrace stopped: frame did not save the PC
|
Loading…
Reference in New Issue
Block a user