Comments 21
При этом, кто-то все равно на начальном этапе должен произвести прошивку данного загрузчка, на который тратится 25% флэша + другие ограничения.
Касательно причины ограничений. Приоритеты прерываний доступны в диапазоне 0x40-0xF0. Это связано с тем, что обработчик прерывания отладочного интерфейса (USB), должен уметь прерывать обработчик DebugMon, а DebugMon — любые прерывания в прошивке. Еще задействован SysTick, который отсчитывает системное время в миллисекундах и SVC, который позволяет делать системные вызовы «printf», intEnable/intDisable, millis.
«Нижний уровень GDB-сервера выполнен с использованием библиотеки WinUSB.» — а что работает на кристалле? Вот за этим наверняка стоит куча всего интересного, что стоило бы рассмотреть. Тогда каждый смог бы по такому туториалу написать себе remote debugger хоть на AVR. Я бы хотел прочитать такой туториал!
На процессорах с архитектурой ARM используется отдельный отладочный модуль, который доступен программно. Он поддерживат точки останова, пошаговый режим. Для каждого из этих событий вызывается прерывание. С AVR будет несколько сложнее. Но, если поискать в интернете, имеются статьи на эту тему. Читал, как специалисты использовали прерывание таймера, настроив его таким образом, чтобы оно вызывалось через каждую команду процессора и таким образом эмулировали step-режим. Насколько я помню, для AVR, это один такт для команд не связанных с переходами. Команды ветвления вызывают нарушение работы конвейра, что приводит к выполнению команды за два такта.
Ксательно статей. У меня имеется желание разработать цикл статей по обучению программированию и радиоэлектронике в целом. Начиная от того как работает транзистор, и заканчивая циклом статей по клмпьютерным сетям информационной безопасности и.т.д. Я потратил всю свою сознательную жизнь на изучение такого обьема инфомации. Постараюсь изложить все в сжатом виде. Но это по наличию свободного времени.
Типа semihosting получился?
Видео по ссылке "Видео работы с платой в среде STM32CubeIDE"
не доступно.
Converting an STM32F103 board to a Black Magic Probe
Using the $2 (Blue Pill) STM32 board we can have a debugger that supports breakpoints. No need of OpenOCD server, as it runs a GDB server on chip directly.
paramaggarwal.medium.com/converting-an-stm32f103-board-to-a-black-magic-probe-c013cf2cc38c
blog.linuxbits.io/2016/02/15/cheap-chinese-st-link-v-2-programmer-converted-to-black-magic-probe-debugger
Я давно занимаюсь разработкой радиоэлектроники и программированием встраиваемых систем. Раньше, бывали случаи, когда ради экономии, код прошивок переписывался на ассемблере для того, чтобы поставить контроллер подешевле. Не говоря уже об установке дополнительного контроллера в продукции. А для отладки можно использовать обычный ST-Link, J-Link, BlackMagic, WindRiver ICE или что то еще. В любом случае, это небольшой вклад в стоимость конечной продукции.
К примеру, появилась у меня мысль внести свой вклад в развитие отечественной электроники. Что я могу сделать как разработчик электроники (но не чипов)? Если посмотреть на Миландр, у них есть решения на базе ядра ARM. Как поднять отечественную электронику? Насколько мне известно (поправьте меня, если я не прав), сфера производства чипов является дотационной в большинстве стран мира. Но нужно сделать так, чтобы государство профинансировало не создание миконтроллеров, а создание продукции на базе этих микроконтроллеров. Например Arduino на базе ARM от Миландр. Нужно только чтобы это был не распил-проект, а действительно то, что пойдет в массы. Процесс запуститься от вложения государственных денег в «МиландрДуинки», а после популяризации, они уже будут испольоваться наравне с Arduino. Это создаст рынок для Миландра и запустит процесс. Не все нужно делать, только на оборонку и для того чтобы доказать что мы тоже можем, но в пять-пядесят раз дороже. Сделать конкурентноспособной плату на более дорогом контроллере нельзя. А вот если отказаться от второго чипа на элементной базе «уже не за 2$», то она станет дешевле. Буду рад, если кто то возьмет идею на вооружение.
В последнее время, когда я вбиваю в поисковике браузера что-то вроде «LPCWSTR что это», передо мной всё чаще одними из первых ссылок появляются ссылки на статьи хабра. И каждый раз я открываю эти ссылки, читаю всё написанное на одном дыхании, не моргая, и выношу для себя потрясное количество полезной информации. И также много потрясной информации в комментариях.
Сегодня прочитал про кодировки. Это стало последней каплей. Я зарегался на хабре. Потом увидел Вашу статью.
Пока что это мой первый комментарий на хабре. Всё написанное Вами я постарался намотать на ус, мб пригодится когда-нибудь — в какой-то ситуации вспомню, что была такая статья на хабре, вернусь, перечитаю и смогу таки доделать своё великое дело.
Вопрос такого характера: планируется ли использование драйвера libusb вместо WinUSB для обеспечения совместимости с Linux и Android, например?
В Android же, если мне не изменяет память, возможны два варианта работы с USB. Либо LibUSB, собранный при помощи NDK, либо API предоставляемое ОС. Если потратить некоторое количество времени и реализовать GDB сервер на Java, можно вообще обойтись без Native-кода.
Автор, что-то тебя заклевали. Делаю прошивки уже 7 лет, и то что ты сделал офигенно круто!
Полноценная GDB отладка через USB на плате BluePill (STM32F103С8T)