09.01.2017, 04:15
|
|
Прописка
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
|
stm8s103f3 прошивка с помощью usbasp
Заказал на Али демоплатки на stm32, но китаец прислал stm8 вместо stm32. Диспут выиграл, платки остались.
Хочу по быстрому попробовать, как оно в деле.
ST-Link отсутствует.
Заказывать клон ST-Link из Китая - еще ~2 месяца ожидания с неясным результатом.
Есть компы под linux и программатор на атмеге по мотивам usbasp (но не usbasp).
Кто-нибудь прошивал stm8 с помощью usbasp или подобных программаторов? Если успешно, отпишитесь, у кого получилось, каким образом / скиньте ссылки на гитхаб/проекты/предложите способы.
А я пока беру документацию и приступаю. Если ничего не получится, попробую варианты, предложенные уважаемыми форумчанами.
Последний раз редактировалось vladisslav1; 09.01.2017 в 04:26.
|
|
|
|
09.01.2017, 09:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
У STM8 даже UART'овского бутлоадера нет! Какой, нафиг, USB? На конкретной платке разъем USB только для питания. Так что, покупай st-link, либо бери какую-нибудь STM32-discovery (там есть встроенный st-link, который можно по SWD подключить к другому МК).
А вот насчет софтового USB — кто-то заморачивался, надо поискать на гитхабе. Но это извращение на мой взгляд.
__________________
Смерть бандеровской мразоте!
|
|
|
|
09.01.2017, 10:49
|
|
Прописка
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
Я видимо неточно выразился. Я не собираюсь подключать stm8 к USB. Я хочу прошить его с помощью atmega8 ( atmega88 ), подключенного к компу по USB (софтовый, V-USB).
Пока получилось инициализировать SWIM, загрузить команду, поймать ACK, загрузить аргументы команды и поймать от них ACK, но не получается поймать ответ. Видимо придется писать обработчик прерывания на ассемблере или ловить биты поллингом...
Upd:
Победил полностью.
При реализации SWIM Master на AVR (C + reti/nop на ассемблере) возникли следующие проблемы:
1. Короткие 250nS импульсы и относительно высокий битрейт доже в медленном режиме (~2.75uS период) + работа от не слишком стабильного внутреннего RC-генератора.
Решение: ловим каждый фронт традиционным для простых AVRок способом - sleep + пустой обработчик прерывания, на выходе из прерывания захватываем уровень на шине для определения длительности импульса примерно как в 1-wire.
2. При чтении регистров SWIM задержка от подтверждения приема младшего бита адреса до стартового бита первого читаемого байта недостаточна (для простой реализации "в лоб" на C).
Решение: просто пропускаем первый байт, готовимся к приему и посылаем NAK по готовности, вызывая повторную отправку байта.
3. Программная реализация протокола USB отбирает слишком много времени и не допускает формирование точных временных интервалов с отключением прерываний.
Решение: разнести работу с USB и SWIM по времени. Принимаем данные по USB, после получения даем небольшую задержку, чтобы отправились все подтверждения и начинаем работу со SWIM. Программа на ПК соответственно делает небольшую паузу, чтобы не на нарушать работу SWIM, а затем запрашивает результат.
Достоинства такого странного решения:
Не нужно никаких ST-Link и софта под венду. Достаточно ATMEGA8 (Возможно хватит даже ATTINY85), кварца, 1117-3.3 и нескольких резисторов/конденсаторов. Однозначно дешевле, чем stm8/32 discovery. Можно делать все то же, что и с помощью ST-Link: останавливать/запускать ядро, писать читать память/регистры периферии, работать с отладчиком. Прошивать также можно как путем загрузки в оперативку загрузчика с последующим его запуском, так и напрямую, работая с контроллером Flash.
Недостатки:
Невысокая скорость, ограниченная низкоскоростным USB и полудуплексом. Софт для ПК тоже нужно написать (в какой-то мере это достоинство). Пришлось пару вечеров почитать документацию с ошибками, поэкспериментировать и разобраться, как работает SWIM.
Итог: начать работу/изучение stm8 тем способом, каким начинал когда-то с AVR (atmega8 за 300 руб в местном радиомагазине и 5 проводков в LPT), увы не получится. Потребуется некоторый опыт, хотя бы простой USB программатор для AVR типа USBASP и немного свободного времени.
Последний раз редактировалось vladisslav1; 10.01.2017 в 06:21.
Причина: смайлы, чтоб их...
|
|
|
|
11.01.2017, 10:07
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 674
Сказал спасибо: 360
Сказали Спасибо 753 раз(а) в 358 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
Теперь вам осталось всего и делов-то:
когда добудете ст-линк, научить его программировать Отмеги и иже с ними
|
|
|
|
11.01.2017, 13:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
vladisslav1, st-link стоит 150-200 рублей. Ну и к чему с отмегой заморачиваться?
__________________
Смерть бандеровской мразоте!
|
|
|
|
08.04.2019, 16:15
|
|
Прописка
Регистрация: 24.02.2007
Адрес: Вольногорск, Украина
Сообщений: 59
Сказал спасибо: 0
Сказали Спасибо 33 раз(а) в 18 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
В принципе идея не плохая, но вот Atmega не лучший вариант. Вот было хорошо сделать stlink swim программер на железе pickit2 с функцией автономного программатора, очень надо. Хотя появилось приложение ZFlasher STM32 для андройд, жду поддержки и для STM8.
|
|
|
|
08.04.2019, 17:43
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
vladisslav1, как изучение протокола годится, но у STLink ещё и отладка имеется, а так Вы к самому камню непонятно когда доберётесь. Некоторые вещи надо делать не столь плавно - переходить и все. Цена - один бизнес-ланч эконом класса.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
08.04.2019, 23:55
|
|
Прописка
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
Сообщение от t_ruslan_w
|
Вот было хорошо сделать stlink swim программер на железе pickit2 с функцией автономного программатора
|
Мне оказалось достаточно прочитать datasheet на проц, RM0013 и PM0054. Там есть абсолютно все, что требуется для создания отладчика и, соответственно, программатора. Пробуйте. Если что-то пойдет не так, выкладывайте сюда свой код, попробую помочь.
Сообщение от mike-y-k
|
STLink ещё и отладка имеется, а так Вы к самому камню непонятно когда доберётесь.
|
STM8 это вообще-то не AVR. Он как раз через отладку и зашивается. Сначала через отладочный интерфейс нужно остановить ядро, потом нужно разлочить память, и только потом читать/стирать/писать... Все это делается абсолютно так же, как если бы это делало ядро, но через интерфейс отладки...
Последний раз редактировалось vladisslav1; 09.04.2019 в 00:18.
|
|
|
|
07.03.2020, 10:19
|
|
Прохожий
Регистрация: 05.01.2011
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
Сообщение от vladisslav1
|
Я видимо неточно выразился. Я не собираюсь подключать stm8 к USB. Я хочу прошить его с помощью atmega8 ( atmega88 ), подключенного к компу по USB (софтовый, V-USB).
Пока получилось инициализировать SWIM, загрузить команду, поймать ACK, загрузить аргументы команды и поймать от них ACK, но не получается поймать ответ. Видимо придется писать обработчик прерывания на ассемблере или ловить биты поллингом...
Upd:
Победил полностью.
При реализации SWIM Master на AVR (C + reti/nop на ассемблере) возникли следующие проблемы:
1. Короткие 250nS импульсы и относительно высокий битрейт доже в медленном режиме (~2.75uS период) + работа от не слишком стабильного внутреннего RC-генератора.
Решение: ловим каждый фронт традиционным для простых AVRок способом - sleep + пустой обработчик прерывания, на выходе из прерывания захватываем уровень на шине для определения длительности импульса примерно как в 1-wire.
2. При чтении регистров SWIM задержка от подтверждения приема младшего бита адреса до стартового бита первого читаемого байта недостаточна (для простой реализации "в лоб" на C).
Решение: просто пропускаем первый байт, готовимся к приему и посылаем NAK по готовности, вызывая повторную отправку байта.
3. Программная реализация протокола USB отбирает слишком много времени и не допускает формирование точных временных интервалов с отключением прерываний.
Решение: разнести работу с USB и SWIM по времени. Принимаем данные по USB, после получения даем небольшую задержку, чтобы отправились все подтверждения и начинаем работу со SWIM. Программа на ПК соответственно делает небольшую паузу, чтобы не на нарушать работу SWIM, а затем запрашивает результат.
Достоинства такого странного решения:
Не нужно никаких ST-Link и софта под венду. Достаточно ATMEGA8 (Возможно хватит даже ATTINY85), кварца, 1117-3.3 и нескольких резисторов/конденсаторов. Однозначно дешевле, чем stm8/32 discovery. Можно делать все то же, что и с помощью ST-Link: останавливать/запускать ядро, писать читать память/регистры периферии, работать с отладчиком. Прошивать также можно как путем загрузки в оперативку загрузчика с последующим его запуском, так и напрямую, работая с контроллером Flash.
Недостатки:
Невысокая скорость, ограниченная низкоскоростным USB и полудуплексом. Софт для ПК тоже нужно написать (в какой-то мере это достоинство). Пришлось пару вечеров почитать документацию с ошибками, поэкспериментировать и разобраться, как работает SWIM.
Итог: начать работу/изучение stm8 тем способом, каким начинал когда-то с AVR (atmega8 за 300 руб в местном радиомагазине и 5 проводков в LPT), увы не получится. Потребуется некоторый опыт, хотя бы простой USB программатор для AVR типа USBASP и немного свободного времени.
|
Сообщение от vladisslav1
|
Победил полностью.
|
Не могли бы вы выложить исходный код? Тоже возникла необходимость срочно прошить STM32, а программатор только USBASP.
К сожалению опыта и времени совсем нет чтобы разобраться во всём самому...
|
|
|
|
08.03.2020, 18:40
|
|
Прописка
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
|
Re: stm8s103f3 прошивка usbasp
Сообщение от rabbitator
|
Не могли бы вы выложить исходный код?
|
Могу конечно. Там нет ничего секретного. Только его нужно еще найти и причесать. Писал по принципу "результат как можно быстрее", так что там все не очень красиво.
Сообщение от rabbitator
|
прошить STM32
|
Не получится. Читайте заголовок темы.
STM32 можно прошить загрузчиком через UART/USB/CAN. Через USB, если загрузчик в ROM поддерживает, проще всего: нужно dfu-tool или dfu-util и больше ничего.
Через UART потребуется USB-UART (pl2303/cp2102/ft232/etc) или MAX232, если есть аппаратный RS-232...
Но если хочется разобраться с SWD/JTAG, то можно и заморочиться, но там ничего интересного по сравнению со SWIM: все делается через сдвиговые регистры с тактированием от хоста. Для SWD нужно по минимуму реализовать 1 двунаправленный запрос (IN/OUT): чтение/запись N bit. Для JTAG дополнительно нужно реализовать установку TMS/TRST/SRST например через поле wIndex control transfer, а при чтении просто отдавать буфер, заполненный при записи.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:56.
|
|