874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
1 | |
Библиотеки Low Layer (LL)26.10.2018, 15:03. Показов 4521. Ответов 6
Метки нет (Все метки)
По воле случая мне в руки попадет несколько платок STM32L476-DISCO. До этого я обходился CMSIS+SPL. HAL не заходит никак. Как я понял SPL для серий F4+/L1+ уже нет, отказались от него. Однако st видимо вняли воплям разработчиков об ардуионоподобности HAL и запилили библиотеку Low-layer(LL), где сами анансируют, высокую производительность и высокую гибкость управления периферией. Однако на просторах как то скудно с примерами. Никто не юзает данный прибамбас на постоянке? Мб поделитесь с чем его едят, на первый взгляд это очень похожу на SPL...где подвох?
0
|
26.10.2018, 15:03 | |
Ответы с готовыми решениями:
6
FreeRTOS и LL (Low Layer Drivers) совместимы? Как сделать полосу прокрутки в теге <layer></layer>? Layer Layer Vs Dialog Layer 2 loopback |
16 / 16 / 1
Регистрация: 20.10.2013
Сообщений: 81
|
|
29.10.2018, 18:02 | 2 |
Как я понимаю, изначально использование SPL, было довольно удобно. Спустя немного времени использования SPL, компания ST начала замечать что это нравиться пользователям, так как значительно уменьшает порог вхождения, да и вообще удобно, и быстро. Так у них родилась идея разработки HAL. HAL значительно ускорял разработку, но также значительно тормозил программу.
Спустя годы использования HAL, разработчики получили массу негатива от пользователей которые использовали HAL на низкопроизводительных линейках серии. Так как софт в критически важных местах, нереально тупил. И эти участи приходилось пользователям переписывать под регистры, для повышения скорости выполнения кода. Как по мне это обычный SPL, только его можно генерировать через CubeMx. P.S. Кстати HAL тоже использует CMSIS. Схема такая же: CMSIS+HAL, ну или CMSIS+LL
0
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
29.10.2018, 20:05 [ТС] | 3 |
shepard127, голый cmsis меня не устраивает, как и в купе с халом. На голом cmsis уж больно плохо читается программа, хотя иногда бывает достаточно уместным. Буду разбираться в ll. Думал, может кто уже более менее проект на нем сделал и поделится впечатлениями. В инете практически не нашёл примеров кода, кроме примеров от производителя
0
|
0 / 0 / 0
Регистрация: 22.07.2012
Сообщений: 7
|
|
08.02.2019, 09:03 | 4 |
Как продвинулись нашли что???
0
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
08.02.2019, 09:24 [ТС] | 5 |
SD, инфы особо не нашел, нашел баги причем достаточно тупые и плохоотлаживаемые, ну по крайней мере в той части где я копался. Большинство так называемых функции - макросы. В принципе если писать проект с 0 на LL то наверное можно, если сгенерировать в кубе проект на LL то скорее всего придется перештудировать все что нагенерировал куб.
Баги которые я нашел при генерации с LL: 1) Не запускаются прерывания системного таймера. При генерации через HAL все работает. Насколько я помню, лечится включением вручную бита TICKINT. 2) Не будет работать работать сгенерированный USART в режиме IrDA. Под HAL все работает. Причина: USART имеет структуру параметров, в режиме IrDA нужна только часть параметров, поэтому остальные любезно не инициализируются генератором, видимо он предполагает, что компилятор автоматом их проставит в 0. Но функция инициализации ест эту структуру во всех режимах полностью, а так как она обьявляется локально и находится в стеке, который сам себя не чистит, то в неинициализированных полях структуры появляется всякий мусор, который портит всю настройку. Решение: инициализировать явно все поля структур периферий, даже те которые не нужны. Вообще это должно быть правилом хорошего тона, но видимо не у программистов ST. Так что не удивляйтесь если сходу после генерации на LL, что то работать не будет. Придется отладчиком полазить, возможно ошибка не у вас. А так, побаловался немного, но проектов серьезных не стал пока писать на LL. Потрогал только I2C, USB CDC, USART, USART_IrDA, ну пару режимов таймеров. Добавлено через 4 минуты А да кстати, еще баг или фича не знаю, если генерировать проект под USB CDC, что под LL, что под HAL он упорно не хочет добавлять хидер "usbd_cdc_if.h" в котором собственно и описаны функции приема отправки. Хз почему так, но без добавления в main функцию отправки юзать не получится.
0
|
0 / 0 / 0
Регистрация: 22.07.2012
Сообщений: 7
|
|
08.02.2019, 10:23 | 6 |
Переход от HAL к LowLayer
пропущу инициализацию. есть строчки кода: HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&val,1); HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1,(uint32_t*)&val,1,DAC_ALIGN_12B_R); работают изумительно. как будет выглядеть аналог этих строк в LowLayer??? инициализация для LL сделана, интересует только этот фрагмент. а вот на это не подскажите???
0
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
08.02.2019, 10:46 [ТС] | 7 |
SD, я вас огорчу аналога этой строки в LL нет, на то он и Low layer (низкий уровень). Вам придется самому написать настройку связок ADC+DMA, DAC + DMA и просто включить модули
Добавлено через 58 секунд Чтобы понять что написано в халовских функциях надо туда заглянуть и повторить подобное на LL
0
|
08.02.2019, 10:46 | |
08.02.2019, 10:46 | |
Помогаю со студенческими работами здесь
7
layer 2 и laye3 коммутатор layer 3 Правильная установка Layer hardware ABSTRACTION layer ? Паттерн Service Layer на с++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |