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

TOG

Свой
  • Постов

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

  • Посещение

Сообщения, опубликованные TOG


  1. Спасибо всем за советы.

    Был совершенно рабочий проект, потом добавил еще одну очередь(Queue) размером 19 байт и всё посыпалось. То HardFault, то разрушение стека. Может проработать несколько минут или несколько секунд и глюкануть.

    Причем это разрушение стека больше напоминает полную порчу всей оперативки, там огромные области забиты 0xFF, а в других областях полный хаос(как после сброса питания).

    У меня есть подозрение, что закончилась память выделенная FreeRTOS: TOTAL_HEAP_SIZE = 32768 байт.  Потому-что если я отключаю в программе совершенно безобидные функции, то глюки изчезают.

    Есть ли способ понять, сколько там в куче свободного места ?

    Проект сделан на: Keil ARM-MDK, CubeMX, TouchGFX.

  2. Товарищи,

    есть проект на STM32H743 под FreeRTOS 2.0. Стал периодически улетать в HardFault. Где посмотреть по какому адресу возникло исключение ?

    Перебрал все адреса, что находятся в стеке, они все ведут куда-то в дебри FreeRTOS'a. Но исключение же вызывает мой код. Как до него-то добраться ?

  3. On 10/30/2023 at 12:27 AM, mantech said:

    Не факт. Были случаи с процом IMX6, что он "защелкивался", т.е. по линии 3В было КЗ. Брал никелькадмиевые 3шт аккума от шурика, заряжал их и кратковременно(импульсами по 0.1-0.2сек штук 5-7) подавал питание на эту линию 3В и общую, из 10 плат при таком методе "восстановления", 3 платы стали работать

    Круто придумано. А какова физика этого целебного эффекта ? Куда делось КЗ ?

  4. On 10/31/2023 at 8:46 PM, selax said:

    Ну у НИИЭТа не вся продукция отвалилась, на сколько мне известно он свои новые МК как то поставляет, хоть и с большими сроками. Я надеюсь, что они таки смогли перейти на китайские фабрики.

    Если оторвать наклейку с корпуса их МК, то под наклейкой GigaDevice. Уже проверили.

  5. On 10/27/2023 at 11:03 AM, Vlad_G said:

    Как-то оценить можно, например, с помощью калькулятора. А так данные не особо доступны, кроме как - непревзойденной дальности... Остаётся только что натурные испытания.

    Хороший калькулятор. 

    Посмотрел, что прибавка чувствительности 13 дБм это примерно 2,5 раза по расстоянию.

  6. Товарищи,

    купили радиомодули 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" будет по русски.

     

    Lora.png

  7. Товарищи,

    имеется STM32H743 к которому подключен дисплей(MIPI DSI 1280x720) через MIPI DSI мост. Имеется проект на TouchGFX с кучей экранов.

    Вся графика грузится в QSPI-флэшку. Для видеобуфера используется внешняя SDRAM на 16 Мбайт.

    В МК включен кэш данных и кэш инструкций.

    Все работает. Но иногда после перепрошивки проекта в память МК может начать дергаться изображение всегда на одном и том-же экране. На всех других экранах изображение всегда стабильное. Перезагрузка не устраняет проблему, кабели тоже ни при чём.

    Меняю в программе что-то совершенно незначительное, можно например добавить какую-нибудь переменную, пересобираю проект, заливаю в память МК(QSPI-флэшку не прошиваю) и все начинает работать нормально, ничто нигде не дергается.

    Уже год вся эта шляпа длится, не могу найти причину.

  8. On 10/13/2023 at 11:42 AM, Plain said:

    Припаять обратно, сунуть в жидкий азот и запитать штатно.

    Была такая мысль. Только обратно его припаивать я не могу, т.к плата была сильно повреждена, кучи элементов просто нет. А кз по шине питания меньше 1 Ом было на плате. Как выяснилось оно было именно в МК.

  9. On 10/13/2023 at 11:05 AM, haker_fox said:

    И, возможно, что Вы этому поспособствовали, подав на чит с КЗ питание💗 Теперь не факт, что его можно считать электронным микроскопом, если там прошивка такая ценная...

    Электронных микроскопов у нас нету. А как подача питания могла снести прошивку ? Или я не так понял ?

  10. On 10/13/2023 at 9:21 AM, EdgeAligned said:

    Вообще, через порты, благодаря утечкам через защитные диоды не-5Vtolerant пинов, питание будет поступать и без подключения выводов питания. Но это в том случае, если сама цепь питания не повреждена закорачиванием.

    Так и сделал, подключил питание к обычному 3-х вольтовому GPIO, ток 300 мА, признаков жизни не подает. Видимо все его кремниевые потроха выгорели наглухо.

  11. Товарищи,

    имеется МК STM32F100RB у которого внутри КЗ на шине питания VDD-VSS. Я его выпаял с платы и мультиметр показывает сопротивление между VDD и VSS меньше 1 Ом.

    Можно ли его как-то запитать по другому, через VDDA-VSSA или через VBAT или через какой-нибудь GPIO ?

    КЗ только между VDD-VSS. Больше нигде не коротит. Мне его нужно обязательно запустить, хотя-бы ненадолго.

  12. Товарищи,

    странная фигня приключилась -

    Был рабочий проект  на МК 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), то обмен прекращается.

    Под резетом тоже пробовал, толку ноль.

    Никаких функций по установке защиты от чтения в проекте не было.

    Что это может быть ? Менять проц ?

  13. On 9/14/2023 at 12:16 PM, haker_fox said:

    Стесняюсь спросить об очевидном: Вы errata почитали? Там точно нет проблем с этим?

    Явно про этот косяк ничего не нашел.

    Есть правда вот такое упоминание. Не знаю относится ли это к моей проблеме.

     

    111.png

     

    Проверил на другом МК (STM32F100RE), такая-же ерунда- при загрузке из SRAM регистр PC=0x200001E0 всегда не зависимо от значений в таблице векторов.

    Проверил на STM32F072RB, там все работает как надо, PC загружается из таблицы векторов. 

    Видимо с STM32F10x какой-то косяк не указанный в Errata

  14. On 9/14/2023 at 11:45 AM, x893 said:

    После сброса и подключения отладчиком содержимое памяти совпадает ?
    Если под отладчиком загружать/запускать работает ?

    Содержимое памяти совпадает. И если вручную поставить PC=0x20006000 и запустить, то программа работает и под отладчиком и при выходе из отладчика.

    Но если теперь сделать резет, то программа не работает, т.к при перезагрузке PC опять становится 0x200001E0. Я на этом адресе уже ловушку поставил(цикл бесконечный) и при подключении отладчика видно, что программа сидит в этой ловушке.

  15. On 9/14/2023 at 11:32 AM, x893 said:

    Сколько RAM у этого F103 ?
    0x6000 = 24KB

    У него 64кБ (0x10000) SRAM.

    Пробовал ставить разные MSP и даже пробовал разные МК(STM32F103) на разных отладочных платах и всегда почему-то при загрузке из SRAM, PC=0x200001E0. Капец.

  16. Товарищи,

    пытаюсь разобраться с возможностью загрузки МК со встроенной 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 ?

  17. Товарищи,

    сделал такую программку. Дергает выводом A8. (Частота МК 216 Мгц. Оптимизация по времени включена.)

    while(1)

    {

    *(__IO uint32_t *)0x40020018 = 0x100 << 16;              // Pin Reset
    *(__IO uint32_t *)0x40020018 = 0x100 ;                       // Pin Set

    }

    На осциллографе длительность импульса ~ 10 нс.

    Но если я вставлю между этими командами __ASM("NOP"), то длительность импульса становится сразу ~60 нс. А мне бы хотелось как-то плавно регулировать ее в пределах 10..100 нс.

    Что посоветуете ?

×
×
  • Создать...