ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
1406222 Топик полностью
RxTx (22.02.2024 01:52, просмотров: 317) ответил Adept на вопрос STM-щикам :) какая-там сейчас вменяемая среда проектирования? Есть желание в скором времени "пощупать за вымя", что-нить из быстрого (чем больше мегагерцев, тем лучше :)) и с большим количеством ОЗУ на борту, и/или интерфейсом для SDRAM.
...Прочитал про твоё желание вкатиться сразу на H7 (не говоря уже о желании программировать его на регистрах как AVR'ку), улыбнулся. Потому что до H7 работал на середнячке F407 и перешел на H7 уже имея опыт. 

H7 - достаточно сложная система на кристалле для того чтобы начинать знакомство с нее. Я не пишу слов "невероятно сложная" только потому что имел дело с другими системами на кристалле. Зайди на ST и качни стартер пак документов Datasheet + Reference Manual + Errata + Programming Manual, чтобы иметь представление с чем предстоит иметь дело. Refman (RM0433) "народного" STM32H743 на 3353 страницы. Листать один-единственный даташит как у PIC или AVR, писать в регистры и таким образом программировать проект не выйдет. Просто об этом не пишут. Обязательно придется читать отдельные документы проясняющие работу с перифералами, с самим ARM-ядром и проч (например таймеры, порты итд). Документация у ST сильно разбросана и это составляет причину огромного хейта. Причина в том что ST в качестве сайта используют покупное "бизнес решение" для продаж.


О технике.

Это относительно свежие чипы, запущенные в 2017 . Соответственно, по причине их свежести, в интернетах (втч буржуйских) на H7 голяк. Хотя вот на STM32F407 или на STM32F103 информации, кода, примеров очень много. В родном коде ST т.н. "драйверов" на H7 предостаточно проблем. Просто так искаропки многие вещи забагованы. (В этом большая разница с хорошо вылизанным F4)

В H7 перешли на литографию 40нм что позволило набить его под завязку.


Стартер пак на несколько тысяч страниц это далеко не всё.

В документации от ST не будет подробной инфы на базовые вещи с которыми обязательно придётся иметь дело как только ты коснешься DMA.

Иначе ничего не заработает даже из коробки с кодом сгенеренным Cube.


У H7 есть кэши кода и данных. Механизм MPU управления страницами памяти. И буферы префетча, вых. буферы памяти, которые необходимо флушить (устраивать MemFence).

Поэтому ARM документацию на ядро и MPU все равно придется скурить. Тупо отрубить кэш не всегда прокатит, потому что код будет пытаться флушнуть кэш и будет падать где-то сильно позже (есть у ARM'а такой "soft" exception, и его очень непросто выловить потому что проц уже давно убежал с проблемного места)


H7 представляет собой систему из 3х штук пространств.

Каждый "домен" отдельно питается, отдельно тактируется и может иметь несколько уровней энергосбережения. L3 например может тихо DMA чего-нибудь там из LPUART в SRAM, когда домены L2 и L3 и часть SRAM отключены от питания. Этим (трехдоменностью) H7 отличается даже от середнячков, где всё в одной системе-куче (единственное только, перифералы сидят на разных шинах с разной скоростью и потреблением, поэтому советую вкатываться на сериях даже попроще, типа F103). Каждый периферал имеет несколько линий тактирования (зачем это per-peripheral особо не поясняется). Даже какой-нибудь UART. У перифералов интерфес с процом кстати тактируется отдельно и асинхронно, сам периферал тактируется от отдельного источника.


SRAM разбита на несколько отключаемых областей у ядра есть свои быстрые 1-t DMEM/IMEM... И нет, "автоматически" это ничего не учитывается.

Смысл сказанного один - в систему H7 введена изрядная сложность, и это очень сильно тормозит и затрудняет процесс получения информации.

Если есть хоть немного здравого смысла, то не надо начинать знакомство с STM32H7.

Если ты не решил на ближайший год заняться изучением H7 и ничего кроме этого не делать..

Я предупредил.


Не слушай дурачков про STM32CubeIDE. Во-первых, у STCube есть LL- версия библиотек (далеко не для всех перифералов, которая работает напрямую с регистрами), про это почему-то не упоминают. Во-вторых, а в чем смысл писать ручками код инициализации?

Про то чтобы жить без Cube... На малых или на средних сериях F1, F4 это было возможно хотя бы потому что ранее и так были просто либы и либы "board support package".

Что же касается H7...

Вот тебе функция включения тактирования. Это просто скромное включение тактирования перифералов, ничего больше. Обрати внимание, она вызывает другие.

https://github.com/STMicroelectronics/stm32h7xx_hal_driver/blob/master/Src/stm32h7xx_hal_rcc_ex.c#L105

Начинается с 105й строки, заканчивается на 1679й.

Искаропки у STM32H7 запустится только ядро (или оба), и то с оговорками.

И нет, чтобы включить тактирование это совсем-совсем не всё, это только начало, под один только конфиг тактирования перифералов отдельные функции.

А это это только инициализация, а ведь есть еще слжные перифералы: хотя бы ETH, USB, второе ядро наконец (это Cortex-M4, другой, со своим, отдельным набором документации). Да ладно, бог с ними с перифералами, не в них дело. Дело в других подводных моментах, которые неизвестны. Вот например, в родных драйверах STM32H7 от ST хочешь использовать Ethernet (помимо LwIP) придется изучить еще FreeRTOS, потому что ETH драйвера только под RTOS.

А если еще учесть что с языком Си ты пока на "вы", то.... А точно надо устраивать себе холокост такой Learning Curve, чтобы она выглядела крутизной с небоскреб? :)

Начни с систем и камней проще.