>> |
№178244
17461752429250.png
(344Кб, 800x675)
Показана уменьшенная копия, оригинал по клику.
>>178240 > Кстати, а там вообще есть варианты кроме как пользоваться тем, что сами стм суют под нос? Есть, но с точки зрения time to market и портабельности по семейству контроллеров получается все хуже. По софту, самый низкий уровень абстракции, это то, что в нем стоит Arm Cortex-M какой-то серии. Эти ядра компания арм аутсорсит производителям микроконтроллеров, как это делается своя бездонная тема, что важно, что у процессора есть какой-то набор инструкций: https://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf Теоретически можно прям этим ассемблером и писать, практически, его создавали под эффективность и удобство компилятору, а не человека. Если под х86 или более примитивные контроллеры типа 8051, PIC16, AVR писать на ассемблере было нормой, то с армами даже самые поехавшие любители оптимизаций пишут только на С. К конкретному ядру от ARM прилагается и какая-то обязательная к наличию в данном семействе "периферия", не в смысле настоящего железа, а в смысле контроллеров памяти, кешей, прерываний, некоторых таймеров, всего того, чтобы голое процессорное ядро могло подгребать собственно машинный код для выполнения, реализовывать переключения тредов в ОС, в случае сложных контроллеров реализовывать защищенный режим или даже виртуализацию. Общение с периферией делается аппаратным замапливанием определенных адресов рам на регистры этой периферии, записью-чтением с этих адресов делаются i/o, прерывания делаются так же записью адреса функции обработчика в определенные адреса. https://www.keil.com/dd/docs/datashts/arm/cortex_m3/r2p0/ddi0337g_cortex_m3_r2p0_trm.pdf Вручную эти адреса никто не набивает, арм релизит файл, где оно уже все собрано: https://github.com/STMicroelectronics/STM32CubeG0/blob/master/Drivers/CMSIS/Core/Include/core_cm3.h#L1375 Дальше уже стм32 лицензирует у арма какое-то ядро, лицензирует у TSMC периферию в привычном смысле, расставляет регистры периферии по адресному пространству, и пишет свой документ где перечисляет что получилось: https://www.mouser.com/datasheet/2/389/en.DM00371828-1620887.pdf И так же тебе не нужно набивать абсолютные адреса периферии в явном виде, они уже собраны в определенном хедере: https://github.com/STMicroelectronics/cmsis-device-g0/blob/f484fe852535f913a02ee79787eafa74dd7f9488/Include/stm32g071xx.h
В общем, по сути, из этой стены текста нужно иметь некоторую начальную инициализацию на ассемблере: https://github.com/STMicroelectronics/STM32CubeG0/blob/master/Projects/NUCLEO-G071RB/Examples_LL/TIM/TIM_TimeBase_Init/STM32CubeIDE/Application/Startup/startup_stm32g071rbtx.s Можно конфигурировать и работать с периферией на уровне регистров вручную по описанию из Reference Manual, при линковке нужно указать размещение своего кода в адресах, соответствующих флешу, чтобы он мог прошиться и запуститься: https://github.com/STMicroelectronics/STM32CubeG0/blob/master/Projects/NUCLEO-G071RB/Examples_LL/TIM/TIM_TimeBase_Init/STM32CubeIDE/STM32G071RBTX_FLASH.ld На практике в чистом виде так делают только деды, выросшие на более старых семействах, а обычно используют стандартные библиотеки, и только когда прошивка перестает например помещаться во флеш в закупленном контроллере или где-то перестает хватать скорости начинают скраивать на уровнях абстракций. C более старыми периферия была попроще, ассемблер тоже, и описание и процессорного ядра, и периферии, и чисто электрические темы помещались в одном документе, типа такого https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf , и там писать на ассемблере с регистрами напряму было нормой.
А если тебя интересует вверх по стеку есть ли что-то удобнее, то те же стм32 поддерживаются разными фреймворками: https://github.com/stm32duino/Arduino_Core_STM32 https://www.keil.arm.com/devices/ https://os.mbed.com/platforms/?q=&Target+vendor=STMicroelectronics https://platformio.org/ https://www.chibios.org/dokuwiki/doku.php?id=start https://docs.zephyrproject.org/latest/boards/st/index.html https://libopencm3.org/
Я честно говоря не особо в курсе ситуации именно с простыми контроллерами и что как на рынке, всегда по работе это было что-то специфично-автомобильное или SoC-и с линуксом, но сложилось впечатление, что весь этот некстген не взлетает, и все пользуются рекомендуемым производителем тулчейном и примерами где пытаются переизобрести что-то вроде вышеперечисленное для программирования мышкой, но свое уникальное, перепиливая проблемные места. Сейчас еще с попытками впихнуть раст интересная ситуация - он обнуляет весь этот прогресс и требует для поддержки конкретного контроллера вручную возиться с написанием библиотек с регистрами, но умеющие с этим работать раст как раз в гробу видали.
>>178242 Вчера такое ощущение, что весь город куда-то на шашлыки выехал. Надо было в центр прогуляться посмотреть. > Так оно разве влияет на количество дипмиссий? Учет иностранных граждан может быть как-то привязан к областям здесь такое есть например, и они могут быть не в столице сконцентрированы. Тот же Бангалор далековато от столицы, хотя при этом и от потенциальной войны так же дальше.
|