Перейти к содержанию
    

TOG

Свой
  • Постов

    559
  • Зарегистрирован

  • Посещение

Весь контент TOG


  1. Кажись победил. Стек программы я отслеживал, а вот переполнение FreeRTOS'ного стека прошляпил. Я тупо смотрел на галочку CHECK_FOR_STACK_OVERFLOW = Option1 думая, что если будет переполнение, то она там в ловушке застрянет. Однако обработчик переполнения стека оказался без "while(1) {}": void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName) { } и программа просто выходила из него и продолжала работать разрушая стек и разнося все в хлам. Есть ли в Keil MDK-ARM функции для отслеживания FreeRTOS задач и прочий функционал для отладки под ОС ? У меня меню Debug / OS Support / System and thread viewer выдает пустое окошко.
  2. Спасибо всем за советы. Был совершенно рабочий проект, потом добавил еще одну очередь(Queue) размером 19 байт и всё посыпалось. То HardFault, то разрушение стека. Может проработать несколько минут или несколько секунд и глюкануть. Причем это разрушение стека больше напоминает полную порчу всей оперативки, там огромные области забиты 0xFF, а в других областях полный хаос(как после сброса питания). У меня есть подозрение, что закончилась память выделенная FreeRTOS: TOTAL_HEAP_SIZE = 32768 байт. Потому-что если я отключаю в программе совершенно безобидные функции, то глюки изчезают. Есть ли способ понять, сколько там в куче свободного места ? Проект сделан на: Keil ARM-MDK, CubeMX, TouchGFX.
  3. Товарищи, есть проект на STM32H743 под FreeRTOS 2.0. Стал периодически улетать в HardFault. Где посмотреть по какому адресу возникло исключение ? Перебрал все адреса, что находятся в стеке, они все ведут куда-то в дебри FreeRTOS'a. Но исключение же вызывает мой код. Как до него-то добраться ?
  4. Круто придумано. А какова физика этого целебного эффекта ? Куда делось КЗ ?
  5. Если оторвать наклейку с корпуса их МК, то под наклейкой GigaDevice. Уже проверили.
  6. Хороший калькулятор. Посмотрел, что прибавка чувствительности 13 дБм это примерно 2,5 раза по расстоянию.
  7. Товарищи, купили радиомодули LoRa на чипе STM32WLE5xx на 868 Мгц. В документации для разных настроек указана чувствительность приема(RXS_LB). Например для полосы(PBW) = 125 кГц: Spreading_Factor = 12 (250 бит/с), чувствительность (RXS_LB) = -138 дБм, Spreading_Factor = 10 (980 бит/с), чувствительность (RXS_LB) = -132 дБм, Spreading_Factor = 7 (5470 бит/с), чувствительность (RXS_LB) = -125 дБм. Как бы понять вот эта разница в чувствительности приемника в 13 дБм, сколько это в метрах или в процентах ? Может формула есть ? Мощность передатчика 100 мВт (20 дБм). Еще подскажите кто-нибудь как "Spreading Factor" будет по русски.
  8. Товарищи, имеется STM32H743 к которому подключен дисплей(MIPI DSI 1280x720) через MIPI DSI мост. Имеется проект на TouchGFX с кучей экранов. Вся графика грузится в QSPI-флэшку. Для видеобуфера используется внешняя SDRAM на 16 Мбайт. В МК включен кэш данных и кэш инструкций. Все работает. Но иногда после перепрошивки проекта в память МК может начать дергаться изображение всегда на одном и том-же экране. На всех других экранах изображение всегда стабильное. Перезагрузка не устраняет проблему, кабели тоже ни при чём. Меняю в программе что-то совершенно незначительное, можно например добавить какую-нибудь переменную, пересобираю проект, заливаю в память МК(QSPI-флэшку не прошиваю) и все начинает работать нормально, ничто нигде не дергается. Уже год вся эта шляпа длится, не могу найти причину.
  9. Теперь уже нет проблем с закупками.
  10. Знаете какие-нибудь эффективные способы ? Концентрированная азотка и серная (44%) у нас есть.
  11. Была такая мысль. Только обратно его припаивать я не могу, т.к плата была сильно повреждена, кучи элементов просто нет. А кз по шине питания меньше 1 Ом было на плате. Как выяснилось оно было именно в МК.
  12. Электронных микроскопов у нас нету. А как подача питания могла снести прошивку ? Или я не так понял ?
  13. Так и сделал, подключил питание к обычному 3-х вольтовому GPIO, ток 300 мА, признаков жизни не подает. Видимо все его кремниевые потроха выгорели наглухо.
  14. Товарищи, имеется МК STM32F100RB у которого внутри КЗ на шине питания VDD-VSS. Я его выпаял с платы и мультиметр показывает сопротивление между VDD и VSS меньше 1 Ом. Можно ли его как-то запитать по другому, через VDDA-VSSA или через VBAT или через какой-нибудь GPIO ? КЗ только между VDD-VSS. Больше нигде не коротит. Мне его нужно обязательно запустить, хотя-бы ненадолго.
  15. А почему в магазинах этой "первой партии" нет ?
  16. Кто-нибудь знает, уже купить "mik32 Амур" где-то можно ?
  17. Товарищи, странная фигня приключилась - Был рабочий проект на МК STM32H743ZG, потом мне захотелось обновить TouchGFX до последней версии. После этого пришлось обновлять CubeMX, CMSIS-RTOS и еще что-то. И когда все эти манипуляции были закончены я перекомпилировал проект и зашил его в МК. Все прошилось успешно, но плата не заработала. И когда я попытался подключиться отладчиком, то ничего не вышло. Отладчики пробовал J-Link, ST-Link - толку ноль. Подумал, если там программа так сильно зависла, то можно BOOT0 притянуть к 1 и будет стартовать встроенный бутлоадер. Нифига, все равно ни через SWD, ни через UART1 подключиться не могу. Посмотрел анализатором протокола, что происходит на шине SWD: Видно, что обмен есть, STM DebugPort выдает свой IDCODE=0x6BA02477, DESIGNER=0x477, PARTNO=0xBA02, VERSION=0x06, но когда доходит до чтения CPUID (0xE000ED00), то обмен прекращается. Под резетом тоже пробовал, толку ноль. Никаких функций по установке защиты от чтения в проекте не было. Что это может быть ? Менять проц ?
  18. Так и сделал. Размещаю начало программы по адресу 0x200001E0 и все в общем работает.
  19. Явно про этот косяк ничего не нашел. Есть правда вот такое упоминание. Не знаю относится ли это к моей проблеме. Проверил на другом МК (STM32F100RE), такая-же ерунда- при загрузке из SRAM регистр PC=0x200001E0 всегда не зависимо от значений в таблице векторов. Проверил на STM32F072RB, там все работает как надо, PC загружается из таблицы векторов. Видимо с STM32F10x какой-то косяк не указанный в Errata
  20. Содержимое памяти совпадает. И если вручную поставить PC=0x20006000 и запустить, то программа работает и под отладчиком и при выходе из отладчика. Но если теперь сделать резет, то программа не работает, т.к при перезагрузке PC опять становится 0x200001E0. Я на этом адресе уже ловушку поставил(цикл бесконечный) и при подключении отладчика видно, что программа сидит в этой ловушке.
  21. У него 64кБ (0x10000) SRAM. Пробовал ставить разные MSP и даже пробовал разные МК(STM32F103) на разных отладочных платах и всегда почему-то при загрузке из SRAM, PC=0x200001E0. Капец.
  22. Товарищи, пытаюсь разобраться с возможностью загрузки МК со встроенной SRAM. Под отладчиком в оперативке по адресу 0x20000000 размещаю таблицу векторов (MSP, RESETVECTOR, NMI, HARDFAULT ...) 00 50 00 20 01 60 00 20 01 70 00 20 01 70 00 20 ... По адресу 20006000(RESETVECTOR) размещаю несколько инструкций в бесконечном цикле(дергает ножкой). Выставляю пины BOOT0=1 и BOOT1=1, что должно соответствовать загрузке МК из встроенной SRAM, далее делаю RESET и по идее программа по адресу 0x20006000 должна начать выполняться. Однако программа выполняться не хочет. Подключаюсь опять отладчиком, вижу, что программа в памяти, MSP = 0x20005000, а вот PC почему-то всегда 0x2000001E0 и никак при резете PC не хочет стать 0x20006000 От самой программы это вообще не зависит. Если вообще стереть все содержимое SRAM, тоже при резете PC=0x2000001E0 (Когда загружаюсь из встроенной флэш памяти, то при резете MSP и PC автоматически заполняются правильными значениями из таблицы векторов как и должно быть.) Кто-нибудь знает, что за чертовщина при загрузке из встроенной SRAM ?
×
×
  • Создать...