We are facing some issues with slow download rates on our custom board based on RT1051 uC. Downloading ~1,6Mbytes of data into ext SDRAM can take as long as ~45s.
Current hardware configuration:
- Manjaro Linux
- NXP RT1051
- exe code and data are mostly located in ext SDRAM
- some data is located in internal RAM
Memory region Used Size Region Size %age Used
SRAM_OC: 0 GB 64 KB 0.00%
SRAM_DTC_TEXT: 0 GB 24 KB 0.00%
SRAM_DTC: 380436 B 424 KB 87.62%
BOARD_SDRAM_TEXT: 1589652 B 4 MB 37.90%
BOARD_SDRAM_HEAP: 10629762 B 13 MB 77.98%
Below is log from Jlink/GDB server confiuration:
SEGGER J-Link GDB Server V6.44d Command Line Version
JLinkARM.dll V6.44d (DLL compiled Mar 27 2019 17:11:41)
Command line: -if SWD -device MCIMXRT1051 -speed 4000 -jlinkscriptfile evkbimxrt1050_sdram_init.jlinkscript
-----GDB Server start settings-----
GDBInit file: none
GDB Server Listening port: 2331
SWO raw output listening port: 2332
Terminal I/O port: 2333
Accept remote connection: yes
Generate logfile: off
Verify download: off
Init regs on start: off
Silent mode: off
Single run mode: off
Target connection timeout: 0 ms
------J-Link related settings------
J-Link Host interface: USB
J-Link script: evkbimxrt1050_sdram_init.jlinkscript
J-Link settings file: none
------Target related settings------
Target device: MCIMXRT1051
Target interface: SWD
Target interface speed: 4000kHz
Target endian: little
Connecting to J-Link...
J-Link is connected.
Firmware: J-Link V10 compiled Mar 21 2019 15:43:57
Hardware: V10.10
"evkbimxrt1050_sdram_init.jlinkscript" contains init procedure for external SDRAM.
We've noticed that jlink is downloading firmware in very small pieces i.e:
Downloading 30 bytes @ address 0x80022798
Downloading 22 bytes @ address 0x800227B6
Downloading 22 bytes @ address 0x800227CC
Downloading 28 bytes @ address 0x800227E2
Downloading 38 bytes @ address 0x800227FE
Downloading 40 bytes @ address 0x80022824
I wonder if there are any conf options which will force jlink to download bigger chunks of firmware as I believe it will speed up downloading process. I also don't understand why firmware is splitted like this ? As you can see programming process is linear i.e jlink doesn't have to jump to different memory addresses. Maybe this has something to do with linker script ?
I'd be very grateful for any tips or info.
Thanks in advance
Mateusz Piesta
Current hardware configuration:
- Manjaro Linux
- NXP RT1051
- exe code and data are mostly located in ext SDRAM
- some data is located in internal RAM
Memory region Used Size Region Size %age Used
SRAM_OC: 0 GB 64 KB 0.00%
SRAM_DTC_TEXT: 0 GB 24 KB 0.00%
SRAM_DTC: 380436 B 424 KB 87.62%
BOARD_SDRAM_TEXT: 1589652 B 4 MB 37.90%
BOARD_SDRAM_HEAP: 10629762 B 13 MB 77.98%
Below is log from Jlink/GDB server confiuration:
SEGGER J-Link GDB Server V6.44d Command Line Version
JLinkARM.dll V6.44d (DLL compiled Mar 27 2019 17:11:41)
Command line: -if SWD -device MCIMXRT1051 -speed 4000 -jlinkscriptfile evkbimxrt1050_sdram_init.jlinkscript
-----GDB Server start settings-----
GDBInit file: none
GDB Server Listening port: 2331
SWO raw output listening port: 2332
Terminal I/O port: 2333
Accept remote connection: yes
Generate logfile: off
Verify download: off
Init regs on start: off
Silent mode: off
Single run mode: off
Target connection timeout: 0 ms
------J-Link related settings------
J-Link Host interface: USB
J-Link script: evkbimxrt1050_sdram_init.jlinkscript
J-Link settings file: none
------Target related settings------
Target device: MCIMXRT1051
Target interface: SWD
Target interface speed: 4000kHz
Target endian: little
Connecting to J-Link...
J-Link is connected.
Firmware: J-Link V10 compiled Mar 21 2019 15:43:57
Hardware: V10.10
"evkbimxrt1050_sdram_init.jlinkscript" contains init procedure for external SDRAM.
We've noticed that jlink is downloading firmware in very small pieces i.e:
Downloading 30 bytes @ address 0x80022798
Downloading 22 bytes @ address 0x800227B6
Downloading 22 bytes @ address 0x800227CC
Downloading 28 bytes @ address 0x800227E2
Downloading 38 bytes @ address 0x800227FE
Downloading 40 bytes @ address 0x80022824
I wonder if there are any conf options which will force jlink to download bigger chunks of firmware as I believe it will speed up downloading process. I also don't understand why firmware is splitted like this ? As you can see programming process is linear i.e jlink doesn't have to jump to different memory addresses. Maybe this has something to do with linker script ?
I'd be very grateful for any tips or info.
Thanks in advance
Mateusz Piesta