Jump to content

    

std

Участник
  • Content Count

    40
  • Joined

  • Last visited

Everything posted by std


  1. Умеют KEIL и IAR. В STM32CubeIDE не нашел, View/Консоли не умеют. P.S. Предположение о том что "лень" неверно, вопрос я задавал в рабочей командировке. Отдал JetLink Flasher Pro, решив что удастся за полчаса перейти на запасной ST-Link. Естественно, я предпринял усилия, но ничего не добившись, посчитал что на форуме помогут. Ну-ну... Каждый раз, стоит только обратиться на форум за помощью, подтверждается закономерность, наблюдаемая с 95-го, еще когда был FIDO-поинтом: Лучше либо а) Решить вопрос самому б) Задать вопрос англоговорящим, так как они отвечают по существу. И только у нас просьба о помощи заканчивается чем угодно. Гипотезами о тебе, предположениями что тебе надо было сделать, неуместной иронией, стебом или высокомерием. До сих пор не знаю точно, что тому причиной, но это повторяется из раза в раз. Вместо технической конкретики вектор неизменно переносится на человека. Итог общения с соплеменниками в том что ты и помощи не получаешь и всякий раз выслушиваешь о себе бред.
  2. Проблема довольно дурацкая, поэтому пишу ее в раздел "для начинающих". Возникла необходимость получить используя STLink/v2, ITM/SWO ( ITM_ReceiveChar(void) ) ввод командных строк, который ранее успешно работал через UART или используя Segger RTT. С выводом проблем нет, логгинг работает. Не могу найти где вводить строку в популярных IDE, например Atollic True Studio или STM32CubeIDE или какой инструментарий предназначен для этого.
  3. Спасибо! Буду знать. Правда если я буду подсчитывать импульсы в прерывании (я же правильно понял что каждый импульс STEP - прерывание?), то прерывания в режиме микростеппинга 1/32...1/256 идут очень часто и будут все равно грузить процессор. А я хотел этого избежать, целиком полагаясь на аппаратуру таймера. Подсчитывать импульсы необходимо, поскольку в новом конструктиве хоть и будет угловой энкодер, часть старых конструкций в начале калибруется по оптическому датчику и затем поддерживает положение ротора ШД, полагаясь только на количество шагов.
  4. Ну, в общем, всё перебором закончилось А вот это интересно. С таймерами STM32 я доселе дело имел поверхностно, сигнал генерировал, но без тщания. Количество импульсов сигнала STEP и управление "полками" было реализовано программно. Прерывание по таймеру, все остальное программно. ISR всегда приводило уровень на выходном порте в гарантированно известное состояние, так как недопустимо потерять пол-импульса (полку), а также необходимо останавливать двигатель строго в определенных фазах микростеппинга и на определенной полке. Хочется выдавать STEP полностью аппаратно. Иной кандидатуры кроме как аппаратный вывод таймера пока не усматриваю. В связи с чем и вопрос. Таймеры STM32 это целая вселенная. Тщательная вычитка документации, изучение либ типа Marlin сама по себе задача не на один день. Мне бы для экономии времени получить бы добрый совет, на каком именно типе таймера сосредоточиться, какие есть методы управления и подводные камни? Может быть на что-то глянуть, короче, нужна какая-то отправная точка с таймерами и предсказуемым управлением выходом таймера для того чтобы получать строго определенное колчество импульсов STEP ШД и приводить вывод в известное состояние.
  5. У меня есть мно-о-о-ого что сказать насчет Ali :) © "Оставь надежды всяк сюда входящий". Это не "адекватный продавец" (все-таки мы очень наивные). Это их хитрая схема работы. Они высылают брак или подделку cознательно подмешивая на десяток нормальных 1-2 бракованных/поддельных позиции. Надежда у китайца на то, что покупатель по статистике не обратится. Доказательство - выше. Если обратится - то китаец вежливо извинится и заменит брак. Обращаются в арбитраж по статистике небольшой процент, поэтому бизнес цветет. Поразвлекаться можно тем что скармливать поиску image.google.com запросы "поддельные радиодетали али" или "поддельные конденсаторы", "поддельные <впишите сюда радиодеталь>". Вплоть до резисторов. После изучения в течении минут 20-30 придет полное понимание. Я долго ржал, наткнувшись (в картинках) на поддельные "керамические" конденсаторы с али. Если разломить - внутри SMD !!!
  6. Цена в ST MCU Finder за 10 000 штук. За 1шт обычно в 2-3 раза дороже. Т.е. нормальная цена должна быть в пределах $6...
  7. TICK_INT_PRIORITY с 0 на 15.

    Да, есть такой. Только таймер пол-дела. Его тики нужно еще собрать, переслать и как-то отобразить на хосте.
  8. TICK_INT_PRIORITY с 0 на 15.

    Я, кстати, как в воду глядел. Смешно! У меня, похоже, образовалась проблема с прерываниями и именно с приоритетом, но для этого я создам другую тему. SysTick к этому вряд ли имеет отношение. Какие тут интересные люди собрались. Все со своей RTOS Было бы интересно поучиться у профов, хотя бы парой вопросов. А) Какие IDE/либы предпочитаете в RTOS и системном уровне? Меня тут затащили на Atollic (Eclipse), а потом на STM32CubeIDE. Что-то говно какое-то, плююсь. До этого использовал связку IAR + CLion. Слабо щупаю KEIL, тоже такая "система в себе". Что вы юзаете, на чем пишете RTOS и прочую? Интересует прежде всего, развитая отладка. Б) Мне надо отладить прерывания. Ситуация типчиная, скорее всего мой цикл опроса BiSS с SPI DMA дубасит так, что вытесняет прерывания двух UART'ов (я это еще пока не проверил, гипотеза). Чем можно исследовать время наступления прерываний, очередность и их продолжительность в системе? Segger SystemView? Пока отлаживался, поставил data watchpoint на RingBuffer, но указал не так как в обычном ARM компараторе, [read + adrress], а еще размер ячейки в байтах и с чем ее сравнивать. В процессе исполнения программы с этим брекпоинтом CRC-ошибки приема стали валить валом. Пока что гипотеза что для брекпоинта задействовано прерывание, которое еще больше вытесняет и без того вытесненные прерывания двух UART'ов. Так вот, чем можно сесть вообще на ВСЕ прерывания в системе чтобы понять, какое из них дубасит столь часто? Нет, конечно можно начать спектрумовские методы отладки, запустить таймер. В каждом прерывании (это на них еще надо сесть) крутить счетчики. Но может быть есть что-то посовременнее?
  9. К чему это сводится, как это написать известно. В том числе что простые тут ни причем, а причем целые. И что задача называется факторизация. И что она решается не столь примитивно (перебором, "подобрать"), что это типичная задача минимизации. Спасибо, но вопрос (если внимательно прочесть) был о готовой C функции. Дело во времени. Теплилась слабая надежда что хоть в интернете днем с огнем не найти, но может быть у кого-то из професисоналов завалялась...
  10. Требуется subj для пересчета в run-time. STM32
  11. TICK_INT_PRIORITY с 0 на 15.

    "Глупо" это несколько размытое понятие. В общем, преследуется цель - исключить дополнительное время в прерываниях. Оно может возникнуть потому что некое прерывание будет прервано более приоритетным SysTick. Все очень сильно зависит от того, какой конкретный объем кода исполняется в SysTick. Хммм.. Интересно, может ли что-то объемное и медленное в приоритетных прерываниях (вытесняющих обработчики HAL) серьезно нарушить работу ST HAL/LL ? (Да, документация на временнЫе параметры системы это большая редкость...)
  12. TICK_INT_PRIORITY с 0 на 15.

    Пока проблем нет. Я исправил у себя приоритет снова на 0. Но хотелось бы не наступить на проблемы в будущем, когда без какого-либо предупреждения обнаруживается что приоритет системного таймера стал вдруг наинизший в системе. Коллекция HAL драйверов огромна и мутабельна от системы к системе, и как она использует SysTick бог его знает. К этому есть и другие Middleware и проч. Было: TICK_INT_PRIORITY=0 — короткий SysTick_Handler всегда прерывал любые другие прерывания. Стало: TICK_INT_PRIORITY=15 — любые другие прерывания всегда прерывают короткий SysTick_Handler (и он не может перебивать другие прерывания). P.S. Это называется не причесали быдлокод, а сломали. Тихо и никому не говоря это происходить не должно.
  13. Предпосылки: пришлось заново создать .ioc файл и перегенерить код проекта заново, т.к. CubeMX ver 6.4.0 стал виснуть при генерации кода после того как я руками понизил на единицу в .ioc файле FirmwarePackage, MxCube.Version, MxDb.Version. В проекте ничего нет, кроме ETH и LwIp. Сравнивая код "что было и что стало" заметил, что в stm32f4xx_hal_conf.h:151 изменился приоритет TICK_INT_PRIORITY, было 0, стало почему-то 15. Что такое приоритет прерываний известно. Но зачем бы это понадобилось System Tick сделать наименне приоритетным? В чем смысл, чем они руководствовались?
  14. Попробую перезадать вопрос в теме непосредственно отладчиков. Кто-нибудь работал через Ethernet? Как добиться одновременного соединения под разные задачи. Например одновременная отладка под дебаггером и segger RTT (передача данных)? Под USB проблем нет. Искал-искал и не преуспел. Проще спросить. Каков протокол общения отладчиков JLink, ST-Link с камнями? Имеется в виду и аппаратный, "физическое кодирование" (USART?) и логический протокол. Где это расписано? Вопрос не праздный, требуется организовать отладочный разъем и вынос проводников суммарно будет сантиметров 30, а то и все 40. Надо понимать все грабли, что и как "аукнется".
  15. Вопрос всё еще актуален. Говоря проще, можно ли одновременно использовать RTT и отлаживаться в дебаггере при подключении через ethernet? Причем, спросить на форуме SEGGER не могу. Логинится, но кнопок создать тему или ответить нет. Несмотря на то что у меня их фирменный EDU и я указал его Serial.
  16. Печаль. Плата уже разведена и запаяна.
  17. STM32F407 (427), внешний ТГ на пин OSC_IN. Желание: сигнал ТГ завести на PH0/OSC_IN и при этом PH1/OSC_OUT использовать как порт. Конфигурю в STM32CubeMX 6.3.0 + FW_F4 1.26.2: "Pinout&Configuration" -> RCC -> High Speed Clock (HSE) -> BYPASS Clock Source. Проблема: STM32CubeMX разрешает либо оба pin'а вместе: PH0/OSC_IN + PH1/OSC_OUT, либо при попытке перевести пин в GPIO отключает "BYPASS Clock Source". Читал RM0090 rev19: 6.2.1 HSE clock (стр. 154), 8.3.14 Using the OSC_IN/OSC_OUT pins as GPIO PH0/PH1 port pins (стр. 278). Похоже на то, что если включен HSE + HSE BYPASS (биты HSEON и HSEBYP в RCC_CR) то OSC_IN и OSC_OUT по-отдельности использоваться не могут? То есть при внешнем ТГ (HSE BYPASS) использовать OSC_OUT как порт не удастся? Подтвердите или опровергните, пожалуйста.
  18. Смотрел фото корпусов J-Link в интернет, вроде держится только на защелках. Как/чем аккуратно открыть корпус фирменного J-LINK EDU, чтобы не оставить некрасивых следов?
  19. Как при подключении к J-link по локальной сети одновременно подключаться дебаггером и RTT-viewer? Jetlink flasher pro, stm32f407vg. По USB нет проблем. По локальной сети цепляется или дебаггер, или RTT viewer, видимо поскольку TCP коннект с Jetlink по локалке может быть только один.
  20. Когда отсоединяюсь дебаггером Atollic true Studio, target находится видимо в reset или halt. Как это устранить? Приходится заходить в J-Link Commander и давать команду r. Камень запускается когда выйду из J-link Commander. То же самое с RTT Viewer. Или Segger GDB server. Как устранить необходимость выдачи команды r и запуска jet-link коммандера (запуска таргета)? JetLink Flasher Pro, STM32F407VG. коннект по локальной сети
  21. Слетает поди только часть прошивки, основная? Бутлоадер остается? А после того как слетела прошивка, вы их обратно оживляте? Обратно оживить девайс насколько муторно? Или в слетевший девайс 6.12f шьется? А то в принципе есть JLink 10.1 EDU и STlink чтоб реанимировать успошего. Чем я рискую, короче, каким геморроем :)))
  22. Имеем Jetlink Flasher Pro (не J-link, а JETLink отсюда https://jet-link.ru/shop/9-jetlink-flasher-pro.html), собираюсь использовать его для отладки STM32F427 по сети (флэшевание кнопкой и проч не интересно). Качнул и поставил https://www.segger.com/downloads/flasher/ глядь, а утилит сильно меньше. Чет засомневался. Нет времени исследовать методом тыка или окирпичить девайс. Что-то еще надо ставить чтобы в Keil/IAR/Atollic им дебажить? Он будет видеться как J-Link? Как JetLink работает со свежим сеггеровским софтом?
  23. Возможно подключение JLink / STLink без сброса микроконтроллера.
  24. AN4904 Application note Migration of microcontroller applications from STM32F1 Series to STM32F4 Access lines https://www.st.com/resource/en/application_note/dm00325582-migration-of-microcontroller-applications-from-stm32f1-series-to-stm32f4-access-lines-stmicroelectronics.pdf
  25. Читая STM32F4 Reference Manual (RM0090), p150 Low-power management reset There are two ways of generating a low-power management reset: 1. Reset generated when entering the Standby mode: This type of reset is enabled by resetting the nRST_STDBY bit in the user option bytes. In this case, whenever a Standby mode entry sequence is successfully executed, the device is reset instead of entering the Standby mode. 2. Reset when entering the Stop mode: This type of reset is enabled by resetting the nRST_STOP bit in the user option bytes. In this case, whenever a Stop mode entry sequence is successfully executed, the device is reset instead of entering the Stop mode. Вопрос: Для чего используется сброс вместо вхождения в Standby или Stop?