mirror of
https://github.com/apache/nuttx.git
synced 2026-05-31 14:27:37 +08:00
Remove duplicated Documentation of the bl602evb
This commit is contained in:
committed by
Brennan Ashton
parent
6c2c70c61e
commit
b9ec0063bc
@@ -1,197 +0,0 @@
|
|||||||
# 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 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
|
|
||||||
|
|
||||||
b. Bouffalo Lab flash tools (official)
|
|
||||||
https://github.com/bouffalolab/flash_tools.git
|
|
||||||
|
|
||||||
3. Configure and build NuttX
|
|
||||||
|
|
||||||
$ mkdir ./nuttx; cd ./nuttx
|
|
||||||
$ git clone https://github.com/apache/incubator-nuttx.git nuttx
|
|
||||||
$ git clone https://github.com/apache/incubator-nuttx-apps.git apps
|
|
||||||
$ cd nuttx
|
|
||||||
$ make distclean
|
|
||||||
$ ./tools/configure.sh bl602evb:nsh
|
|
||||||
$ make -j
|
|
||||||
|
|
||||||
4. Connect bl602 and computer via USB
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
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
|
|
||||||
Reference in New Issue
Block a user