-
Hello world :-) I am wondering how / what would be the best way to dump/upload large chunks of memory and what would be the speed limit? gdb remote protocol? some dedicated binary channel? Use case: Upload big OS (not RTOS) image directly into a bare metal or bricked hardware (i.e. no bootloader yet) RAM/Flash memory.. or dump kernel memory from RAM for analysis. That would be some MB/GB of data. I know Flash will require a dedicated driver and will be far slower than RAM. Flash driver may require a on-chip peripheral control over the system bus peripherals (slow) or uploading and executing FlashAlgo by CPU from RAM (ARM has much faster flash write that way) all that specific to a given target. So lets assume only RAM read/write are of interest as best benchmark. BMP v2.3 has the USB-C connector.. does it support USB 3.x SuperSpeed(+).. or the High-Speed and the connector is only for cable convenience? :-) |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
So to answer things a little out of order: BMP uses a USB-C receptacle because of the reversibility, but it's a USB 2.0 mode connector being used at FS speeds (the STM32F103/GD32F103 can only do LS/FS). On the read side of things the primary limiting factors are the speed at which we can bitbang the transport protocol (JTAG/SWD), and the efficiency of the requests so we can best optimise the ADIv5 overheads (doing the largest possible requests for bulk reads on aligned addresses in 32-bit mode will give the best throughput up to 2^10 bytes per request). The firmware is nowhere near saturating the FS link at this time - though this would, with faster transport implementation, become the next limiting factor there. Presently the best that can be done is somewhere around 130KiB/s for reads, competitive with other adaptors using protocols like CMSIS-DAP. For writes, it matters if we're talking to RAM or Flash, and what kind of controller on what micro. for RAM, most of the same limitations as reading apply and the performance is very similar. For Flash, it can range hugely but generally somewhere around 10-30KiB/s is generally what we manage to hit with targets that have somewhat sensible Flash controllers. For targets with entirely silly ones, it can be as bad as 52B/s. |
Beta Was this translation helpful? Give feedback.
So to answer things a little out of order: BMP uses a USB-C receptacle because of the reversibility, but it's a USB 2.0 mode connector being used at FS speeds (the STM32F103/GD32F103 can only do LS/FS).
On the read side of things the primary limiting factors are the speed at which we can bitbang the transport protocol (JTAG/SWD), and the efficiency of the requests so we can best optimise the ADIv5 overheads (doing the largest possible requests for bulk reads on aligned addresses in 32-bit mode will give the best throughput up to 2^10 bytes per request). The firmware is nowhere near saturating the FS link at this time - though this would, with faster transport implementation, become the ne…