реклама на сайте
подробности

 
 
26 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Библиотеки для STM32
yanvasiij
сообщение Mar 10 2017, 17:46
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 320
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Для этого же проца не нашел в свое время SPL. Пришлось сделать HAL. Немного не привычно, но не страшно, разобраться можно.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Mar 11 2017, 05:01
Сообщение #32


Знающий
****

Группа: Участник
Сообщений: 549
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(yanvasiij @ Mar 10 2017, 20:46) *
не нашел в свое время SPL. Пришлось сделать HAL.

Ничего себе, это ж просто деление на нуль!
Ладно еще, когда народ по своей абдуринской привычке эти монструозные библиотеки на F4 или F7 пихает, но на F0 это просто жесть!
Неужто сложно прочесть тоненький RM?


--------------------
Я: на гитхабе, на stackexchange, в ЖЖшке
--------------------------------
In the world, only two things are the worst: Windows and Poettering.
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Mar 11 2017, 06:52
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 320
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Это избитая холиварная тема, спорить на которую можно долго и нудно, самое главное бесполезно. Вы не обессудьте, что я выскажусь и на этом закончу, не вступая далее в полемику.
Смысл такой: что spl, что hal, что opencm3 дают очевидные, на мой взгляд, преимущества:
1) не нужно тратить время на написание драйверов с нуля, при том что когда пишешь драйвера с нуля точно также допускаешь ошибки (выше по теме Вы можете это наблюдать). От чтения RM это конечно не освобождает, без этого никак. Там есть ошибки - не страшно, они отлавливаются на раз-два, было бы терпение и потом многократно используются.
2) hal, opencm3, и даже spl в отличии от самописных библиотек поддерживаются разработчиками и сообществом. Они развиваются и их функционал расширяется, ошибки внутри устраняются. Самописную же либу, поддерживает только один разработчик.
3) Тот же hal тянет за собой массу дополнительных библиотек (стек tcp, файловую систему, стек usb и прочее). Вы скажете, что это можно поднять самому скачав отдельно? Но зачем делать работу второй раз и тратить на нее время? Не проще ли разобраться в том, что уже сделано?
4) Переносимость между сериями и проектами. Код написанный другим разработчиками под hal, spl, opencm3, легко перенести к себе другому разработчику, который тоже использует hal, spl, opencm3. Это какая-никакая унификация. А если каждый будет колхозить свои библиотеки, тот как обмениваться наработками? Можно но уже сложнее, ибо низкоуровневые вещи нужно переписывать.

А разговоры про избыточность, мне кажется надуманными.
Покажите мне сравнительные тесты, в которых наглядно показывается что по вине hal программа начинает работать в разы медленнее. В моей практике такого не было.
Большее потребление памяти? Сколько раз в жизни у вас было такое, что на cortex процах у вас кончалась память? Если такое и было, то держу пари это точно происходило не по вине hal.
Код громоздкий и непонятный? Это уже чистой воды субъективизм, найдется приличное количество народу, кто не согласится с этим. В добавок ко всему hal достаточно гибкий совсем не обязательно использовать все его конструкции.

Ну вот вообщем такое мое мнение. Извините за оффтоп.
Go to the top of the page
 
+Quote Post
juvf
сообщение Mar 11 2017, 07:29
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 984
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(yanvasiij @ Mar 11 2017, 11:52) *
Смысл такой: что spl, что hal, что opencm3 дают очевидные, на мой взгляд, преимущества:
+1. ППКС


Цитата(Эдди @ Mar 11 2017, 10:01) *
но на F0 это просто жесть!
А мне бы SPL для L0 rolleyes.gif
Go to the top of the page
 
+Quote Post
Эдди
сообщение Mar 11 2017, 13:10
Сообщение #35


Знающий
****

Группа: Участник
Сообщений: 549
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Когда я заводил 1-wire через таймер с ПДП, был первый раз, когда я столкнулся с невозможностью реализации задуманного по вине библиотеки. Opencm3 оказалась слишком медленной.
Во всех перечисленных библиотеках очень жирный код. Поражающая избыточность приводит к 1) тормозам, 2) увеличению объема прошивки. Оба этих момента в определенный момент могут подставить подлянку.

На мой взгляд единственным правильным вариантом будет нарабатывать сниппеты. А "обмениваться" быдлокодом смысла не вижу. Самый страшный пример — абдурина. Я тут намедни писал обработчик, работающий с термодатчиком TSYS01. Скачал код для абдурины — думал, шустрей будет. А там такое... Какой-то идиот мало того, что флоаты воткнул, так еще и температуру вычислял по формуле из даташита!!!
Я от такого идиотизма вообще в шоке.

Под STM32 тоже полно кода в интернетах можно найти. Мне к девборде заботливые китайцы диск приложили с уймой проектов под калокубы. Я даже пытался было для работы с экранчиком взять готовое, но почитав этот жесточайший быдлокод понял, что так делать ни в коем случае нельзя!
Вот каким надо быть чудаком на букву "М", чтобы использовать ногодрыг на проце, имеющем нужную периферию и DMA?

И да, т.к. сами авторы опенцм3 говорят, что библиотека еще в стадии тестирования, лучше ею не пользоваться. После того, как они поменяли API, я решил от этой дряни отказаться. Пока ваяю под STM32F0, и очень даже хорошо все идет. Надо будет только USB откуда-нибудь выдрать (из той же opencm3, например), т.к. хочу посредника между USB и CAN на STM32F042 замутить. Да и просто на F103 я привык с CDC работать вместо подключения лишнего переходника на USART.

Сообщение отредактировал Эдди - Mar 11 2017, 13:13


--------------------
Я: на гитхабе, на stackexchange, в ЖЖшке
--------------------------------
In the world, only two things are the worst: Windows and Poettering.
Go to the top of the page
 
+Quote Post
Baser
сообщение Mar 11 2017, 21:49
Сообщение #36


Просто Che
*****

Группа: Свой
Сообщений: 1 267
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Эдди @ Mar 11 2017, 15:10) *
... Пока ваяю под STM32F0, и очень даже хорошо все идет. Надо будет только USB откуда-нибудь выдрать (из той же opencm3, например), т.к. хочу посредника между USB и CAN на STM32F042 замутить. ...

Я когда перетаскивал проект с Меги128 на STM32F072 и нужно было в духе времени по-быстрому USB подцепить вдогонку к RS-232.
Так сгенерировал проект на HALе, и первое время, когда с ним разбирался, тоже диву давался тому, как там все понаписано.
Но идеология понятна: разработчики хотели добиться переносимости между ВСЕМИ stm32. Поэтому и эта жуткая многослойность различных макросов друг на друге, когда более сложные низкоуровневые постепенно, в несколько этапов, заменяются на применимые к конкретному процессору. И разделение процедур на несколько уровней для разграничения области видимости переменных и функций - тоже прозрачности не прибавляет. Разбираться в этом - пипец полный, но ведь работает sm.gif

Но глядя на то, сколько у меня суммарно ушло времени на то, чтобы с нуля начал работать проект с USB и прочей периферией, у меня никакого желания нет погружаться сильно в глубь и переписывать библиотеки. Тем более, что периферия у STM32 не такая и простая, как у предыдущих простеньких ПИКов, АВРок и т.д. Частенько разбираешься с HAL (я обычно верхний уровень, а часто и пониже, правлю, выкидывая уж слишком сложные навороты) и видишь манипуляции с флагами периферии, про которые сразу догадаться, что так нужно делать, при чтении документации невозможно.

Так что можно "все взять под свой контроль" - но с годами лучше начинаешь понимать, что это мало где нужно. Время уплотняется, все нужно быстрее, быстрее. Сидишь так, вылизываешь код, а год-два проходит (а часто и меньше) - и никому это уже не нужно - давай гони что-то новое.
Как то так...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 12 2017, 07:44
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 3 500
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Baser @ Mar 11 2017, 23:49) *
Тем более, что периферия у STM32 не такая и простая, как у предыдущих простеньких ПИКов, АВРок и т.д.

Из всех прочих ARM, с которыми я имел дело, у STM32 самая простая периферия.
А имел дело я и с NXP (LPC17xx и LPC43xx) и TI (Tiva, Concerto, OMAP) и Infineon.
Видна цель производителя: сделать наиболее простую периферию для снижения порога входа для новичков, пускай даже в ущерб функциональности.
Осваивать периферию STM32 не в пример легче, хотя бы потому что приходится читать описания на гораздо меньшее число регистров периферии чем в других МК.
Сужу по собственному опыту.
Например: в том же USART у STM32F4x всего 7 регистров, в то время как у Infineon например - около полусотни в его USIC. И это не считая связанных регистров.
Go to the top of the page
 
+Quote Post
Эдди
сообщение Mar 12 2017, 13:39
Сообщение #38


Знающий
****

Группа: Участник
Сообщений: 549
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Вот если бы STMщики вместо идиотизма с SPL/калокубом сразу написали побольше сниппетов под все серии своих МК, было бы намного лучше!
Ладно, под STM8 не надо — там даташит тоненький и регистров немного, но вот некоторые вещи у STM32 требуют реально много времени. Скажем, с тактированием I2C я часа на три завис, пока разобрался, что к чему. Непонятно, зачем вообще на простецкий и2це столько регистров. Ведь 99.9% устройств никакого "тюнинга" не требуют. Можно было по тактированию один-единственный регистр с предделителем тактовой частоты завести.


--------------------
Я: на гитхабе, на stackexchange, в ЖЖшке
--------------------------------
In the world, only two things are the worst: Windows and Poettering.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 12 2017, 14:10
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 3 500
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Эдди @ Mar 12 2017, 15:39) *
Непонятно, зачем вообще на простецкий и2це столько регистров.

Жалких 10 регистров - это много????? laughing.gif
В LPC17 их 16, в Tiva - 27, в Infineon - полсотни. STM32 - самый простой из всех.
Если самый простейший МК Вам сложен, то что будете делать на более серьёзном? rolleyes.gif
Go to the top of the page
 
+Quote Post
Alechek
сообщение Mar 12 2017, 16:54
Сообщение #40


Профессионал
*****

Группа: Свой
Сообщений: 1 191
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Baser @ Mar 12 2017, 02:49) *
Но идеология понятна: разработчики хотели добиться переносимости между ВСЕМИ stm32.

Вот только переносимости ЧЕГО - они, видать, так и не придумали....
"HelloWorld" переносить? Потому как при переносе чего существенного все равно возникают проблемы: то тактирование не то, то DMA не совместимы, и вообще, оказывается, одинаковая периферия на самом деле то разная, возможности не те...
Поэтому в любом случае, придется немного дорабатывать. И коим образом тут поможет кубохал?
Go to the top of the page
 
+Quote Post
juvf
сообщение Mar 13 2017, 05:51
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 984
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



наброс говна на вентилятор продолжаем разговор.... ну не нравиться хал где-то в узких местах.... хотя я бы не сказал, что HAL_GPIO_WritePin() прям уж такая тяжелая... в критичных местах можно использовать от туда же LL_GPIO_WriteOutputPort() из набра Low Layer (LL) drivers. LL - это тоже зло от st?
Go to the top of the page
 
+Quote Post
Эдди
сообщение Mar 13 2017, 08:43
Сообщение #42


Знающий
****

Группа: Участник
Сообщений: 549
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Для set/clear/toggle функции не нужны, делается это элементарно на макросах!


--------------------
Я: на гитхабе, на stackexchange, в ЖЖшке
--------------------------------
In the world, only two things are the worst: Windows and Poettering.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Mar 13 2017, 09:39
Сообщение #43


Профессионал
*****

Группа: Свой
Сообщений: 1 191
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(juvf @ Mar 13 2017, 10:51) *
LL - это тоже зло от st?

Все в жизни относительно. Для ST - SPL\HAL\LL - это очень большое добро. Привязывает пользователей к продукции ST.
Для остальных - кому как. Если нравится кому быть привязаным к одному производителю - пожалуйста.

У меня свой лунапарк в части интерфейса к GPIO и основой периферии (SPI, I2C, UART). Поэтому не не составляет труда переносить код между используемыми камнями.
Если использовать HAL - то это будет просто лишней прослойкой, которая в конкретном случае ни от чего не спасет.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 13 2017, 10:41
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 3 500
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Alechek @ Mar 13 2017, 11:39) *
У меня свой лунапарк в части интерфейса к GPIO и основой периферии (SPI, I2C, UART). Поэтому не не составляет труда переносить код между используемыми камнями.

Во-во - у меня тоже. С (насколько возможно) одинаковым интерфейсом для разных МК
Go to the top of the page
 
+Quote Post
Velund
сообщение Mar 14 2017, 11:04
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 673
Регистрация: 19-11-04
Пользователь №: 1 177



QUOTE (jcxz @ Mar 13 2017, 13:41) *
Во-во - у меня тоже. С (насколько возможно) одинаковым интерфейсом для разных МК


И я тоже со времен ARM7 держу единый "стандарт" вызовов для основой периферии (SPI, USART, I2C и т.д.) на которые "верхом" встают драйвера периферии (EEPROM, ADC/DAC, цифровые потенциометры, синтезаторы частоты и прочие мелочи). Под куб написал "обертку", которая приводит форматы вызовов к привычному мне. "Подрываться" и переписывать свои отлаженные и обкатанные на тысячах серийных изделий наработки под каждый "взбрык" индусов, нанятых писать кубы и подобное им - много чести будет.
Go to the top of the page
 
+Quote Post

26 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th August 2017 - 23:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016