Несмотря на то, что не все детали имеют отношение к этому вопросу, я все же перечислю свои настройки:
- Плата микроконтроллера NUCLEO_F746ZG (https://os.mbed.com/platforms/ST-Nucleo-F746ZG/).
- Я запускаю mbed CLI (https://os.mbed.com/docs/v5.7/tools/arm-mbed-cli.html), чтобы запрограммировать чип.
- Моя ОС - Windows 10, 64-разрядная.
Чтобы скомпилировать мой код и прошить двоичный файл на чип, я ввожу следующую команду в свой терминал cmd:
> mbed compile -t GCC_ARM -m NUCLEO_F746ZG --flash
Получаю следующий результат:
...
+------------------+-------+-------+-------+
| Module | .text | .data | .bss |
+------------------+-------+-------+-------+
| [fill] | 130 | 4 | 10 |
| [lib]\c.a | 24965 | 2472 | 89 |
| [lib]\gcc.a | 3120 | 0 | 0 |
| [lib]\misc | 252 | 16 | 28 |
| mbed-os\drivers | 658 | 4 | 100 |
| mbed-os\features | 74 | 0 | 12556 |
| mbed-os\hal | 2634 | 4 | 66 |
| mbed-os\platform | 2977 | 4 | 270 |
| mbed-os\rtos | 15887 | 168 | 5989 |
| mbed-os\targets | 16013 | 4 | 1052 |
| source\main.o | 244 | 4 | 84 |
| Subtotals | 66954 | 2680 | 20244 |
+------------------+-------+-------+-------+
Total Static RAM memory (data + bss): 22924 bytes
Total Flash memory (text + data): 69634 bytes
Image: .\BUILD\NUCLEO_F746ZG\GCC_ARM\nucleo_f746zg_demo.bin
[mbed] Detected "NUCLEO_F746ZG" connected to "E:" and using com port "COM10"
1 file(s) copied.
Меня особенно интересуют последние строки, где происходит собственно мигание чипа:
Image: .\BUILD\NUCLEO_F746ZG\GCC_ARM\nucleo_f746zg_demo.bin
[mbed] Detected "NUCLEO_F746ZG" connected to "E:" and using com port "COM10"
1 file(s) copied.
Я знаю из предыдущего опыта (до того, как появился mbed CLI), что для прошивки двоичного файла на чип происходит много всего. Например, мне пришлось запустить openocd, передать ему файл конфигурации программатора (например, stlink-v2-1.cfg
) и файл конфигурации целевой платы (например, nucleo_f746zg.cfg
). Наконец, мне пришлось передать двоичный файл openocd через Telnet-сессию или GDB-сессию. Здесь все подробно описано: Как использовать GDB (Gnu Debugger) и OpenOCD для отладки микроконтроллера - из терминала?
Глядя на mbed CLI, перепрошивающий чип, я запутался. Что происходит на заднем плане? Использует ли mbed CLI тайно openocd для подключения к чипу? Или, возможно, pyOCD? Или как-нибудь иначе?