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

 
 
8 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> HAL, сколько можно фиксить ?
Tarbal
сообщение Apr 11 2016, 11:59
Сообщение #46


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(pitt @ Apr 11 2016, 04:38) *
Для того и HAL и CUBE задумывались. Никто не сказал, что там ничего не работает. Там всегда что-то или не работает или работает не так... Вопрос, на самом деле, не сколько времени ушло на проекты, а насколько разработчик понимает что и как внутри работает, сколько времени уйдет, когда что-нибудь вылетит и надо будет понять, найти и исправить...Так что я не вижу тут никаких противоречий.


Просто хотел поделиться успешным опытом.
Как найти и исправить проблем нет. Может потому и взялся. Были проблемы с длинными обработчиками прерываний, но реорганизовал структуру драйвера, чтобы не мешало.
Go to the top of the page
 
+Quote Post
LightElf
сообщение Apr 11 2016, 15:55
Сообщение #47


Частый гость
**

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (scifi @ Apr 9 2016, 12:04) *
Имелось в виду, что что "вот сейчас возникнет уровень абстракции, за которым спрячется периферия всех-всех-всех, включая ST, NXP, TI и т.д.". Вот про это я и говорю "не может быть". Потому что такой уровень абстракции даст только "дёрнуть ножкой", "сделать выборку АЦП" и всё. Ничего сложнее там не сделаешь.

Собственно если посмотреть в самые-самые первые версии ARM CMSIS (в районе 1.1), то там и подразумевался единый уровень абстракции для чипов всех производителей. Типа: UART, можно выставить скорость, четность, стоп-биты, отправить-принять байт. Ethernet: можно выставить скорость, дуплекс, принять-отправить пакет. Естественно при этом теряются некоторые специфические фишки, плата за переносимость между производителями. Но производители в восторг не пришли, драйвера писать не стали. А сам ARM поддерживать зоопарк не осилил. И к версии CMSIS 2.0 эту красоту убрали, оставив поддержку только самого ядра.
Go to the top of the page
 
+Quote Post
quarz
сообщение Apr 11 2016, 17:06
Сообщение #48


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 15-01-05
Из: Москва
Пользователь №: 1 980



Будь я модератором, убрал бы из темы 3/4 холивара и оставил полезные посты.

А вот мой случай:
В библиотеке HAL 1.1.0 - 1.4.0 для STM32L1xx был баг в функции HAL_RCC_GetSysClockFreq(), которая возвращала установленную тактовую частоту:
Код
pllvco = HSE_VALUE * (pllm / plld);
...
return pllvco;

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

В версии 1.5.0 баг исправили
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 12 2016, 06:34
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(esaulenka @ Apr 11 2016, 11:52) *
Нириально хороший.

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

Дальше только вопрос времени, когда это добро "выстрелит"...

Тока хотел написать ... Опередили ...
lol.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 12 2016, 06:56
Сообщение #50


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Заинтересовало. Глянул. Свежескачанные кубы для 4xx и 2xx. Версии от ноября прошлого года. Какая там многопоточность, о чем вы?

CODE
#if (USE_RTOS == 1)
  /* Reserved for future use */
  #error " USE_RTOS should be 0 in the current HAL release "
#else
  #define __HAL_LOCK(__HANDLE__)                                           \



Про то, что ради 100-килобайтного заголовочного файла с описанием регистров из CMSIS приходится качать полтораста мегабайт куба - отдельный разговор.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AleksBak
сообщение Apr 12 2016, 07:39
Сообщение #51


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(Сергей Борщ @ Apr 12 2016, 10:56) *
Заинтересовало. Глянул. Свежескачанные кубы для 4xx и 2xx. Версии от ноября прошлого года. Какая там многопоточность, о чем вы?

Код
#if (USE_RTOS == 1)
  /* Reserved for future use */
  #error " USE_RTOS should be 0 in the current HAL release "
#else
  #define __HAL_LOCK(__HANDLE__)                                           \


...

Оно все время не продекларировано это USE_RTOS и просто так. Пусть себе пишут (2 руками за) - 1. даренному коню в зубы не смотрят и 2. проверить/разобраться с Кубом что-то - самое то это (очень и очень многое с ним вообще-то можно проверить).
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 12 2016, 08:00
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



2 AleksBak.
Да никто ни на индусов ни на HAL не нападает. Задача "создать универсальную библиотеку", в принципе не решаемая. Чем более универсальна она будет, тем она будет более громоздкая. Документация по ней превысит исходную документацию на кристалл в несколько раз. Вот и всё.
В результате, чтобы задействовать функцию, приходится смотреть в доки на библиотеку и доки на кристалл. Потом ещё рыться в библиотеках ну и так далее ... То есть при каком-то уровне абстракции это просто теряет смысл.
Ну, например, взять таймер. Хотим организовать ШИМ. Читаем 10 регистров и появляется примерно следующее
Код
  // Инициализация таймера ШИМ подсветки
  TIM_PWM_LIGHT->CR1 = TIM_CR1_CEN;            // Включить таймер
  TIM_PWM_LIGHT->CCMR2 = TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1;// PWM1
  TIM_PWM_LIGHT->CCER = TIM_CCER_CC4E;        // Включить канал CH4
  TIM_PWM_LIGHT->PSC = FPWM_PSC-1;            // Прескалер
  TIM_PWM_LIGHT->ARR = FPWM_MAX-1;            // Частота ШИМ 200 Гц

Ну и управление яркостью, соответственно
TIM_PWM_LIGHT->CCR4 = teklight;
...
Если захочешь написать это с помощью HAL, то меньше не окажется ... Читать меньше тоже не придётся ... Более того, это всё ещё будет завязано ещё на какую-нибудь библиотеку и... погнали наши городских. В результате подключено 10 библиотек HAL, для того, чтобы махнуть одной ножкой... Какие преимущества то?
Это всё уже писано 10 раз.
Против самих библиотек никто не возражает. Иногда удобно. Например туда посмотреть.
Go to the top of the page
 
+Quote Post
AleksBak
сообщение Apr 12 2016, 08:40
Сообщение #53


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(SasaVitebsk @ Apr 12 2016, 12:00) *
...
Это всё уже писано 10 раз.
...

Полностью на 100.0% согласен. Так и стараюсь делать вообще-то. Спс за развернутый ответ. ТС хотел в этой теме какие если есть важные ошибки в HAL - чтобы про них кто-то написал и тогда не буду тему "захламлять". До этого "наводящий" вопрос о __HAL_LOCK/__HAL_UNLOCK я спецом задал, а то так бы тут и обсуждали перевод слова "hal" и т.п.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2016, 09:37
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (SasaVitebsk @ Apr 12 2016, 11:00) *
Задача "создать универсальную библиотеку", в принципе не решаемая.

Угу, только не заметили-ли Вы, что "универсальная библиотека" это еще цветочки и уже идет полным ходом создание "универсальной программы" sad.gif. Например, под наванием "линукс". И уже пошли чипы и платформы на котрых нет того-же описания чипа в доступе как класс - только зашитые "библиотеки", или вообще "линукс" и точка.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Obam
сообщение Apr 12 2016, 10:47
Сообщение #55


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(zltigo @ Apr 12 2016, 13:37) *
…И уже пошли чипы и платформы на котрых нет того-же описания чипа в доступе как класс…


Китайцы, в основном, и континентальные и островные…


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Apr 12 2016, 10:52
Сообщение #56


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(zltigo @ Apr 12 2016, 13:37) *
Угу, только не заметили-ли Вы, что "универсальная библиотека" это еще цветочки и уже идет полным ходом создание "универсальной программы" sad.gif. Например, под наванием "линукс". И уже пошли чипы и платформы на котрых нет того-же описания чипа в доступе как класс - только зашитые "библиотеки", или вообще "линукс" и точка.


Да Бог с вами. Линукс это тысячи разных программ. Так не пользуйтесь теми платформами, что используют не open source.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 12 2016, 11:11
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(zltigo @ Apr 12 2016, 12:37) *
Угу, только не заметили-ли Вы, что "универсальная библиотека" это еще цветочки и уже идет полным ходом создание "универсальной программы" sad.gif. Например, под наванием "линукс". И уже пошли чипы и платформы на котрых нет того-же описания чипа в доступе как класс - только зашитые "библиотеки", или вообще "линукс" и точка.

Да заметил. Но пока ещё далеко до завершения этой работы... Даже с идеалогией не всё в порядке.
И вообще. Посмотрите, почему линукс? Он так хорош? Да нет, просто объём работы (суммарный, а не только по ОС) таков, что реально сложно за него взяться.
Это ведь как в любом проекте. Когда его завершаешь, то видишь кучу мелочей, которые надо бы исправить. И беда в том, что на начальном этапе ты этих мелочей не заметил, или не предусмотрел механизмов которые помогают их красиво устранить. А на этапе, когда ты их видишь, к сожалению, их устранение приводит к коренной переработке всего проекта. А ты на это не готов. И количество людей, принимающих участие в проекте, не улучшает его свойств (не уменьшает количество огрехов), а, наоборот, увеличивает. И... поехало всё с нуля.
StdPeriph_Driver -> HAL_Driver ->
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2016, 11:29
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Tarbal @ Apr 12 2016, 13:52) *
Да Бог с вами. Линукс это тысячи разных программ. Так не пользуйтесь теми платформами, что используют не open source.

Ну и что, что тысячи? В этом-то и проблема от которой никакой "open" не спасает - количество латанного перелатанного "open" кода уже просто превысило все мыслимые размеры. Никакакая опенутость НЕ делает работоспособным поминаемый здесь HAL. Все, что можно, это сделать еще одну заплатку, причем надо понимать, что всяких заплаток завтра еще наделают без Вас. После этого у Вас альернатива, либо остаться на текущей версии того-же HAL, либо постоянно разбираться с потоком заплаток и нововведений во всяких свежелатанных версиях HAL и их последствиями.
Для того, что-бы потушить костер достаточно в него подкинуть бревно побольше. Жупел "open" это именно такое бревно.

Массой НЕ "open" платформ уже просто не возможно не пользоваться, например, на какой платформе Ваш телефон?




QUOTE (SasaVitebsk @ Apr 12 2016, 14:11) *
И вообще. Посмотрите, почему линукс? Он так хорош?

Просто один из примеров - можно сказать флагман бизнесмодели "секс по телефону бесплатный - платите только за телефонный звонок", но конечно, не единственный.
QUOTE
И количество людей, принимающих участие в проекте, не улучшает его свойств (не уменьшает количество огрехов), а, наоборот, увеличивает. И... поехало всё с нуля.
StdPeriph_Driver -> HAL_Driver ->

Хуже того, в большинстве больших опенутых проектов набегают новички, которые даже уже основ НЕ смогли понять и радостно начинают ваять альтернативные яйца в профиль, но уже совсем через анус sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
x893
сообщение Apr 12 2016, 11:31
Сообщение #59


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



У меня такой подход - сначала кубом делается инициализация и настройка по максимуму.
Затем дебаггером прохожу и смотрю что всё действительно как задумывалось.
После этого выкидываю всё лишнее (вместе с кубовскими поделками).
Остается только то, что нужно (с коментариями из куба).
Из плюсов - не надо лазить по RM в поисках битов/регистров, более-менее понятные коментарии.
Ну и размер конечно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2016, 11:33
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (SasaVitebsk @ Apr 12 2016, 14:11) *
И беда в том, что на начальном этапе ты этих мелочей не заметил, или не предусмотрел механизмов которые помогают их красиво устранить. А на этапе, когда ты их видишь, к сожалению, их устранение приводит к коренной переработке всего проекта. А ты на это не готов.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:53
Рейтинг@Mail.ru


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