Asus hal central что это

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

HAL (Hardware Abstraction Layer)

В операционных системах семейства Windows NT HAL является неотъемлемой частью кода, исполняемого в режиме ядра, находится в отдельном загрузочном модуле, загружаемом совместно с ядром. Это обеспечивает возможность использования одного и того же загрузочного модуля собственно ядра ОС Windows NT на ряде систем с различными архитектурами шин ввода-вывода, управления прерываниями и таймерами. К примеру, рабочие станции, основанные на SGI Intel x86, были не совместимы с IBM PC-совместимыми рабочими станциями, но благодаря HAL Windows NT мог запускаться на них. Аналогичным образом одно и то же ядро Windows NT используется как на современных системах с контроллером прерываний APIC, так и на устаревших системах без поддержки APIC.

Windows Vista и выше (Windows Server 2008 и выше для серверов) автоматически определяют, какой уровень HAL должен быть использован во время загрузки.

BSD, Mac OS X, Linux, Solaris, CP/M, MS-DOS и некоторые другие портируемые ОС также имеют HAL, несмотря на то, что он не разрабатывался явно для выполнения описанных выше функций. Некоторые системы, такие, как Linux, имеют возможность вставлять подобный слой, к примеру, Adeos (англ.)русск., во время работы. Ядро операционной системы NetBSD широко известно наличием чистого слоя абстрагирования от аппаратного обеспечения (HAL), что позволяет ему быть высоко-портируемым. Частью этой системы являются uvm(9)/pmap(9), bus_space(9), bus_dma(9) и другие подсистемы. Популярные шины, которые используются более чем на одной архитектуре, такие, как ISA, EISA, PCI, PCI-E и др., также абстрагированы, позволяя написанным под них драйверам также быть высокопортируемыми с минимальным изменением кода.

«Экстремальный» пример HAL может быть найден в архитектурах System/38 (англ.)русск. и AS/400. Большинство компиляторов для таких систем генерируют абстрактный машинный код. Лицензированный внутренний код (LIC) переводит этот виртуальный машинный код во внутренний (собственный) код процессора, на котором он запускается, и выполняет получившийся внутренний код (исключение составляют компиляторы, которые сами генерируют LIC; эти компиляторы не доступны за пределами IBM). К примеру, прикладное программное обеспечение и программное обеспечение операционной системы, расположенные над слоем LIC, скомпилированные на оригинальной архитектуре System/38, запускаются без каких-либо модификаций и перекомпиляций на последних системах AS/400. И это несмотря на тот факт, что лежащее в основе аппаратное обеспечение было кардинально изменено; по крайней мере, три различных типа микропроцессоров находились в использовании.

HAL является даже более низким уровнем в компьютерных языках программирования, чем API, потому что он взаимодействует непосредственно с аппаратным обеспечением вместо ядра системы, следовательно, HAL требует меньше процессорного времени, чем API. Языки высокого уровня часто используют HAL и API для взаимодействия с компонентами более низкого уровня.

Содержание

Текущее состояние

HAL является устаревшим и не рекомендуется к использованию. Решения, поставленные за основу при проектировании HAL, на практике оказались неэффективными и единственным выходом оказалось создание новой подсистемы и перенос функциональности. Такой системой стал udev. В настоящий момент поддержка HAL убрана из ядра, а самые крупные дистрибутивы (Ubuntu[3], Debian и Fedora) завершили переход и используют Udev.

Причины устранения

Основное преимущество в новой подсистеме udev (перед HAL) в том, что первый является событийно-управляемой и имеет тесную интеграцию с ядром, а HAL же, будучи реализованным в userspace в виде демона, вынужден периодически опрашивать ядро. Таким образом, использование событийно-управляемого udev значительно снижает нагрузку на систему, а значит и электропотребление. Также, описания правил для устройств выполнены в виде простых файлов конфигурации и гораздо проще и понятней для пользователей и разработчиков, чем XML примененный ранее в HAL. И наконец, udev разработан «с чистого листа», с учётом предыдущего опыта и в нём отсутствует устаревший или беспорядочный код.

Процесс миграции c HAL на udev

Изначально большая часть логики HAL была перенесена в udev, а правила в новый модуль — DeviceKit (не путать с PolicyKit или ConsoleKit). Однако вскоре схема udev+DeviceKit несколько изменилась — разработчики обнаружили, что большая часть аппаратуры уже управляется различными программными компонентами и необходимы только правила для дисков (udisks) и питания (upower). Проект DeviceKit был разбит на несколько более мелких частей и больше не используется и не упоминается. Таким образом современные дистрибутивы используют только Udev и правила к нему (udisks, upower — часть пакета udev-extras). Однако ввиду инерционности кода, многие программы всё ещё требуют устаревший HAL (в основном для обнаружения дисков) и поэтому дистрибутивы вынуждены поставлять HAL, фактически дублируя логику (например Qt3, и столкнувшийся с этим проект Trinity).

Источник

Thread: Armory Crate cant update ASUS HAL Central

Thread Tools
Search Thread
Display

Armory Crate cant update ASUS HAL Central

ROG Member Array Nox01 PC Specs

Nox01 PC Specs
MotherboardROG Maximus XI Hero (Wi-Fi)
ProcessorIntel 9700K
Memory (part number)Corsair Dominator Platinum RGB 3200Mhz
Graphics Card #1ROG STRIX 2070 Super A8G
MonitorAsus XG32VQR
Storage #1Samsung 970 EVO PLUS 1TB
Storage #2Samsung 970 EVO PLUS 1TB
CPU CoolerROG Ryujin 360
CaseROG Strix Helios
Power SupplyROG Thor 1200W
KeyboardROG Claymore
MouseROG Pugio
HeadsetCreative SoundBlasterX H5 Tournament Edition
Mouse PadROG Balteus
Headset/SpeakersCreative SoundBlaster Kratos S5
OSWindows 10 Pro

Join Date Jan 2020 Reputation 10 Posts 7

Same here. I need update Rog Chakram, but i can’t. error code 12

ROG Gladius II (Error code: 12)

Same problem. I am stuck in an update loop for Rog Gladius II (error code: 12) which has stopped all control over all my aurasync devices. I can not change any settings on mouse, mobo, ram, & led header nor can I use aura creator.

weird.. i was on windows version 1909 it doesn’t work.. update to windows 2004 it still doesn’t work but after 4 days i tried again it suddenly updated.. (macro still doesn’t work when using left click as repeated clicks)

I have a Zenith II Extreme Alpha and ran into similar issues trying to update HAL. Initially, I was some issues with Armoury Crate losing control of my Aura Sync. I tried reinstalling Armoury Crate, but it wouldn’t install. I finally ended up reinstalling Windows 10. After that, I was able to install Armoury Crate. I then found that it said I needed to update HAL. The first time I tried it failed. I don’t remember the error code, but it said to reboot and try again. Then HAL installed. However, Aura Sync only detected 3 of 4 of my memory sticks. No matter what I tried, it only controlled 3 out of 4 of the sticks. I tried reinstalling Armoury Crate but it failed. I restored Windows from an image I had and now I’m up and running again. However, it says I need to update HAL. I’m going to hold off until I hear if problems are fixed.

Источник

Доброго времени суток! Сразу могу предупредить о большом количестве букв.

Долго собирался с мыслями, чтобы написать сюда по этому поводу. Ждал, когда Asus ответит на мой отзыв, что вкрутил чёпик правосудия своим представителям, но не дождался. Поэтому пишу сюда. Пикабу – сила!

В один прекрасный момент понадобилась мне «шайтан машина» (ноутбук) для учебы. Мой выбор пал на фирмы Asus (модель X751L) т.к. с техникой этой фирмы у меня связаны только хорошие впечатления и никогда не было проблем. Служил он мне верой и правдой, до тех пор, когда моя ленивая жопа взяла верх и я забросил занятия на 2 недели (новогодние праздники). Положил его на полку, подальше от жидкостей и прочих опасностей.

6.01 я решил восполнить все, что вылетело из головы за 2 недели, а ноутбук отказался работать, запускался только при подключении разъема питания (запускался только жесткий диск, мои догадки были, что северный мост накрылся). Даже моих скудных познаний хватило понять, что причина серьёзная и кроется на компонентном уровне. Сам я с этой причиной разобраться не мог, поэтому начал поиск сервисного центра, где проведут диагностику и ремонт.

Решил позвонить в данный СЦ, узнать, когда возможно привезти и условия. Дозвониться возможно раза с 15, гудки обрываются на 8 секунде или на 40 секунду (но сразу мне это в глаза не бросилось, заметил это после того как меня первый раз налюбили со сроками). Возможно стоит какое-то ПО, которое сбрасывает звонок. В итоге дозвонился, озвучили, что диагностика в случае отказа от ремонта будет 1,5к (срок в среднем 2 раб. Дня), далее по итогам диагностики будет ясно.

Диагностика дороговата, но решился ехать в оф. СЦ (этож официалы). Приехал к ним 12.01.2018. После внешнего осмотра, человек на приемке (сори не запомнил Имя) качает головой и поговаривает, как все плохо. Осмотрев заявляет, что принимают на диагностику и начал записывать с моих слов жалобы на ноутбук, но резко прекратил всю перепись и схватил еще раз ноутбук и заявляет: «Так Вы ж его залили батенька, у вас вон как клавиатура хрустит!».

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

От такого заявления я просто о**ел. Ноутбук я не заливал и это озвучил представителю (сразу скажу ноут не гарантийный и скрывать мне нечего было и смысла в этом не было). После препинаний о заливке ноута, он продолжил заполнять бланк и выдал мне его не подписать. Сказал, что через 2 дня наберут, выдали бланк и отправили гулять и ждать звонка (первый раз, когда мне компания позвонила сама 02.02.2018, все остальное время мне приходилось дозваниваться до них самому). Номер договора RUABJ10375 (если, читаю сотрудники СЦ или Асус)

Сори за качество фото, снимал на тапок).

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Подходит первый срок, конец 2 рабочего дня (16.01.18 звонил после 17.00). Спрашиваю, как обстоят дела, на что получил ответ ожидайте производится диагностика (но в голосе представителя чувствуются нотки «б**, мы них*ра не делали») ожидайте Вам сообщат о результатах. Прошу уточнить более точный сроки, на что получаю отточенную фразу срок диагностики в среднем 2 раб. Дня, ожидайте. Проинформировал представителя, что позвоню завтра. После этого налюбилова, уже появилась мысль забрать ноут и отвезти в другое место. Отбросил эти мысли и начал записывать все разговоры (как мне вливаю в уши).

Звоню (17.01.18 после 17.00).

Я— Как обстоят дела?

Звоню (18.01.18 после 17.00).

Звоню (19.01.18 после 17.00).

Звоню (19.01.18 через 40 минут после предыдущего звонка).

Звоню (22.01.18 примерно 15.00). 6 раб. день диагностики.

Я— Как обстоят дела?

Звоню (22.01.18 примерно 18.00).

— замена материнки 32к (WTF). Сразу отвечаю, что не интересно (новый ноут моей модели с в Ситил*ке стоит 31990. Этот магазин официальный дистрибьютер Асус. Есть ссылка с оф. сайта).

— либо покомпонентный ремонт материнки 8к и срок 10 дней с условием поставки з/ч (со слов представителя). Соглашаюсь, стоимость приемлемая, т.к. на вторичке мой ноут стоит от 17 до 25. Соглашаюсь с условиями и уточняю, когда можно будет узнать судьбы бедолаги. Сообщаю, что сами позвонят, но я в эти сказки уже не верю, говорю, что позвоню 29.02.18 (через неделю).

Звоню (22.01.18 после 17.00).

Звоню (2.02.18 после 17.00).

СЦ – Я уточню эту инф и перезвоню, но как обычно (все заняты, не до меня им было).

СЦ – Сегодня не получится вам выдать ноут, он не в СЦ (а где он блеад. ). Мы Вам позвоним, когда он приедет.

05.02.18 Свершилось чудо. Только мои незбагойные рученки хотели набрать номер СЦ, как поступает от них звонок:

СЦ – Ваш ноутбук в СЦ можете забирать.

После работы на в снежный день (город стоит в 8 бальной пробке, а мне нужно в центр в самый пик (конец рабочего дня) весело). Приехал в СЦ.

Я – приехал за ноутом

СЦ – отлично, с Вас 1,5к.

Я – На каком основание?

СЦ – Вы отказались от ремонта, с Вас 1,5к

Понимаю, что, что-то выяснять бесполезно. Отдаю честно заработанные и прошу, чтобы мне выдали акт о проведение диагностики. На что получаю заказ-наряд, который мне выдали при первом обращение в СЦ, где было написано от руки «Требуется замена материнской платы».

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Вот так я съезди в этот сервис: 1,5к за то, что я и так знал, 25 календарных дней, огромное количество потраченных нервных клеток, кресло, прожжённое от моего пукана). Лох – это судьба!

Полез в группу Асус в ВК, пообщаться с людьми, может кто-нибудь посоветует толкового мастера. Через 2 дня, Сергей Т…… посоветовал мне обратится к одному человеку (писать его адрес на ВК не буду, а то закидаете тапками, типа реклама). Обратился к нему. Оставил ноут часов в 10 утра, в 18.00 мне прилетел ответ, что лопнул камень (хотя я вроде не ронял ноут, если только в метро задел кто-то, но после последней поездки в метро он работа, так, что не понимаю, как, так могло выйти). Помог найти мать б/у за 8к (скинул ссылку на авито). На след день, я забрал свой горе ноут у Павла(мастер) и прихватив из дома отвертки (кстати Павел за диагностику денег не взял). Еду к продавцу б/у матери, на месте меняю ее и о чудо, ноут работает.

Далее решил написать в службу контроля качества компании ASUSTeK. Описав все выше изложенное, они заявляют, что оф СЦ не производит покомпонентный ремонт.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Так у меня вопрос почему мне об этом сразу не сказали. Почему динамили 25 дней. Почему после диагностики не сказали, что только один вариант, замена матери и все, я бы сразу отказался и не было бы этого поста (еще раз напомню, что есть записи разговоров).

Зачем мне об этом сообщать СЦ. В любом случае они в плюсе, свои 1,5к в любом случае получат, а так может еще т «лошок» согласиться за 32К мать поменять, то вообще красота.

Написал еще одно письмо в Асус, может в первом письме я неясно выразился (пукан бомбил). На 2 письмо Асус мне ответил «Спасибо за информацию. Мы примем меры по отношению к данному АСЦ.». Но я так понимаю, это одна из стандартных отписок. Поэтому считаю, что должен донести до наибольшего количества людей, то с чем они могут столкнуться.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Кто-то самый умный как всегда пытается кого-то налюбить, а страдает от этого потребитель. А Асус даже не хочет обращать внимание на это, либо сотрудники, которые работаю в службу контроля качества компании ASUSTeK не доносят инф руководству. Вот так вот и живем, везде налюбливают.

Писал этот пост не с целую получить какую-либо выгоду, а с целью предостеречь любителей Асуса в СПб от повторения моих ошибок. В этот СЦ я больше не обращусь после такого отношения.

Баянометр ругается на кота.

Спасибо! Выговорился! Прошу сильно тапками не закидывать! Коммент для минусов внутри.

Источник

Thread: Issue after using the uninstaller.

Thread Tools
Search Thread
Display

ROG Member Array Monkeyman7890 PC Specs

Monkeyman7890 PC Specs
Laptop (Model)N/A
MotherboardPrime X570-Pro
ProcessorRyzen 3900X
Memory (part number)F4-3200C16D-16GTZR
Graphics Card #1ASUS ROG STRIX 2080 Super
CPU CoolerCOOLER MASTER MASTERLIQUID ML360R RGB
OSWindows 10

Join Date Aug 2020 Reputation 10 Posts 8

Issue after using the uninstaller.

Armoury Crate was not detecting my ram so I decided I would try using the new uninstaller to uninstall everything then reinstall. The uninstaller seemed to run fine, I then restarted and ran the installer. After it finished installing none of my devices are detected now and there are two updates showing that will not install.

I noticed that in the UN-installer log it says the following for HalDLL.

I am wondering if the ‘3rd HAL Count 4’ means that some components are were not fully uninstalled. Here is the full uninstaller log. Does this seem right?

It also appears that after running the uninstaller I still have these folders under Program Files/ASUS. I am wondering if these are the ‘3rd HAL Count 4’ that is mentioned in the uninstaller log since there are 4 Aac folders left.
1. Aac_AIOFan
2. Aac_ExtCard
3. AacMB
4. AacVGAHal
5. Armoury Crate Service Core

Once Armoury Crate opens I have the following problems:

1) Armoury Crate does not detect any devices and when I click on my motherboard in Armoury Crate it says «This model is not currently supported».

Clicking update for just update for either seems to run (the progress bar moves) but after it «finishes» the updates the HTML and Device SDK go away and HAL still remains and the version for it changes from 1.1.14 to 1.0.68.

Restarting does not solve the problem and running the uninstaller again then re running the installer does not fix it.

To summarize what I think:
It seems like the uninstaller is possibly not uninstalling all HAL components and/or the installer is not installing all the needed components

Any Idea on what I can do to fix this or should I just wait for the next update and try that? I am also wondering if it is worth trying a reinstall of Windows or would that somehow cause even more problems with it?

UPDATE:
I was able to get my Motherboard, AIO, and Graphics card to appear again by running AacMBSetup.exe and AacVGASetup.exe (I had to copy of these files from the ROGSLiveTemp folder as they appeared during installation) and clicking uninstall from both and then running the old versions of those two installers from the legacy AuraSync Download on the ASUS site. It still shows an update for PRIME X570-PRO HAL that will not install, but the Motherboard, AIO, and Graphics Card lighting control works again. After this I did a complete-uninstall of it all then re-installed and it still show. But RAM still is not showing up.

Now the only update I see is PRIME X570-PRO HAL Version 1.1.14 (after clicking update the update button just re-appears

I am still unable to control my RAM and have noticed the following:

So I am led to believe that there is some trace of the DRAM component that is not being removed even when using the new Armoury Crate installer. If I can’t figure out how to remove this, I will just try a reinstall of windows then downloading Armoury Crate again and see what happens. Any suggestions on how to completely remove the DRAM component so I can try reinstalling it or the older version?

Источник

HAL stm32

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

HAL (Hardware Abstraction Layer) — это библиотека для создания приложений на stm32, разработанная компанией ST в 2014 году. HAL пришёл на смену SPL.

Заранее скажу, что эта статья никакой не мануал, это просто попытка описать внутреннее устройство HAL, ну или можно сказать, что это метод изучения сабжа.

Итак, HAL позволяет абстрагироваться от работы с регистрами и прочей сложной магии. Грубо говоря, HAL это обёртка над низкоуровневыми операциями. Конечно же это не отменяет необходимости понимания устройства микроконтроллеров, но значительно снижает уровень вхождения.

Например, чтоб запустить таймер, достаточно перед бесконечным циклом прописать вот такую функцию…

То есть нам не нужно знать какие регистры отвечают за это, и что в них записывать. Более того, эта функция будет работать на любых микроконтроллерах серии stm32.

Сама функция выглядит так:

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Вначале происходит проверка параметров на ошибки (assert_param), и после этого активируется прерывание и запускается таймер.

Однако я немного забежал вперёд. Прежде чем изучать HAL, нужно познакомиться с программой CubeMX (в просторечии «Куб») так как HAL является неотъемлемой частью «Куба», и именно в нём генерится весь начальный код будущего приложения включая описанные выше функции. Подробно про CubeMX читайте здесь.

Познакомились — тогда продолжим…

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

Итак мы сгенерировали проект, в котором есть таймер вызывающий прерывание при переполнении, и GPIO. Открываем этот проект в среде разработки (у меня TrueStudio) и в левой панели клацаем файл main.c…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Куб создал все необходимые функции инициализации…

void SystemClock_Config(void) — инициализация тактирования.
static void MX_TIM1_Init(void) — инициализация таймера.
static void MX_GPIO_Init(void) — инициализация GPIO.

… и избавил нас от возни с настройками, и от возможных ошибок.

Все функции типичны — параметры записываются в структуры, и адреса этих структур передаются в соответствующие HAL-функции. Каждая функция возвращает статус. Если возвращается ошибка, то вызывается функция Error_Handler() находящаяся в самом низу. В эту функцию хорошо бы прописать что-то, что сигнализировало бы об ошибке, например мигнуть лампочкой.

В конце файла обрисован механизм передачи assert_param() в void assert_failed()…

Если хотите чтоб он раскомментировался, то надо в Кубе сделать так…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это
Enable Full Assert. Эти ассерты занимают определённое количество памяти, поэтому их лучше использовать только для отладки, а в релизе отключать.

В общем с проверками на ошибки у HAL’а всё очень удобно и информативно.

Теперь давайте рассмотрим процесс инициализации на примере таймера.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Здесь происходит следующее:

Проверяется не пустой ли указатель структуры (htim == NULL) и заполнены ли все элементы структуры (assert_param).

Проверяется статус таймера (htim->State == HAL_TIM_STATE_RESET). В данном случае статус HAL_TIM_STATE_RESET говорит о том, что устройство еще не инициализировано или отключено.

Если статус удовлетворяет, то снимается блокировка (htim->Lock = HAL_UNLOCKED) и вызывается функция HAL_TIM_Base_MspInit(htim) …

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Здесь проверяется какой именно таймер настраивается (htim_base->Instance==TIM1) и вызываются функции которые включают тактирование таймера, активирует прерывание и настраивают приоритет.

Далее устанавливается статус «занято» (htim->State= HAL_TIM_STATE_BUSY) — если по каким-то причинам, параллельно будет вызвана ещё одна функция инициализации таймера, то она не сможет ничего испортить.

После этого вызывается функция TIM_Base_SetConfig(htim->Instance, &htim->Init) (у этой функции нет приставки HAL, поэтому можно назвать её низкоуровневой) работающая напрямую с регистрами…

Ну и наконец устанавливается статус «готов к труду и обороне» (htim->State= HAL_TIM_STATE_READY) и возвращается — return HAL_OK;

Все функции имеют характерные названия определяющие их назначение…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

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

Например запуск таймера без прерываний выглядит так:

Как вы уже наверно поняли, одна из особенностей библиотеки HAL это большое количество проверок защищающих разработчиков от массы неприятностей. Кто-то расценит это как добродетель, а кто-то решит что такое количество проверок избыточно. Однако не стоит занимать какую-либо позицию на этот счёт так как в процессе изучения вы поймёте где нужно оставлять эти проверки, а где их можно удалить. То же самое касается и всего остального, со временем вы будете отказываться от каких-то функций HAL и заменять их работой с регистрами.

При работе с любой другой периферией, все необходимые функции вы найдёте в соответствующих файлах…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Названия файлов говорят сами за себя.

Функция запуска таймера…

… сама по себе не особо интересна.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Функция устанавливает бит разрешающий прерывания по переполнению — __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE) и бит активации таймера — __HAL_TIM_ENABLE(htim).

А вот механизм вызова прерывания поможет понять устройство библиотеки HAL. Разберём его…

Когда мы в Кубе активируем прерывание от какой-либо периферии, то в файле stm32f1xx_it.c автоматически создаётся обработчик с соответствующим именем…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это
Сюда программа переходит как только сработает прерывание от любого из событий таймера №1.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Программа войдя в функцию HAL_TIM_IRQHandler проверяет какой из флагов был установлен и найдя нужный блок выполняет его содержимое.

Нас интересует блок TIM Update event…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Библиотека HAL под завязку напичкана различными макросами. Как уже говорилось в начале статьи, они начинаются с __двойного подчёркивания и имеют характерные имена определяющие их назначение. Эти макросы очёнь клёвая штука, они позволяют оперировать различными битами в различных регистрах без необходимости копаться в даташитах.

Внутри макроса __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE) содержится вот такая конструкция…

Этот макрос сбрасывает бит (указанный вторым аргументом) в регистре состояния (Status Register).

В первый аргумент подставляется указатель на структуру таймера, а вторым аргументом идёт дефаин флага который взводится при возникновении прерывания…

Написав программу на HAL вы можете проследить где-какие макросы/функции вызываются, и работать с регистрами напрямую. То есть HAL можно с лёгкостью использовать как пособие для изучения низкоуровневых операций.

Колбек это характерная фишка HAL’а. В колбеках выполняются действия которые нужно сделать при возникновении события/прерывания, в нашем случае мы будем мигать лампочкой.

В принципе нам ничто не мешает мигать лампочкой прямо в обработчике, да ещё и оперировать регистрами напрямую (немного хардкора)

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это
В этом примере делается то же самое, что делает HAL — сбрасывается флаг прерывания и вместо вызова колбека сразу же выполняется действие (мигание светиком).

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

Если вы внимательно посмотрите, то увидите что у каждого события есть свой колбек. Например у захвата/сравнения их несколько…

Находим нужный нам колбек…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

… и переопределяем его в файл main.c

Проверяем что прерывание пришло от таймера №1 и мигаем светиком.

Проверять от какого таймера пришло прерывание нужно в том случае, если используется несколько таймеров. Тут дело вот в чём: если мы настроим ещё один таймер, например №2, и он тоже будет вызывать прерывания, тогда в файле stm32f1xx_it.c появится второй обработчик…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Не смотря на то, что обработчиков два, функция HAL_TIM_IRQHandler() одна и та же. Соответственно и колбек будет вызываться один и тот же. Поэтому для двух таймеров нужно делать так…

Это касается не только таймеров, но и прочей периферии — USART, SPI, I2C и т.д.

Рассмотрим работу USART’а с DMA, там механизм несколько сложнее чем с таймером. В Кубе настройте USART с использованием DMA на приём…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Инициализация USART’а точно такая же как и у таймера…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это
Параметры загружаются в структуру и передаются в функцию.

Команда запуска опять же схожа с таймером (передаётся структура + доп. аргументы)

Первый аргумент это адрес структуры, второй — это адрес массива в который будут складываться полученные данные, третий — это количество байт которые нужно принять.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Здесь у нас много чего интересненького.

В первую очередь происходит проверка — занят USART или нет (HAL_UART_STATE_READY).

Если до этого функция уже запускалась и данные ещё не получены, то эта проверка не пройдёт и функция вернёт статус «занято» (return HAL_BUSY). Если же необходимо перезапустить функцию, то предварительно надо вызвать — HAL_UART_AbortReceive(&huart1). Как видите названия функций говорят сами за себя.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Следом идёт запуск DMA — HAL_DMA_Start_IT() …

В функцию передаётся: указатель на структуру, источник данных (в нашем случае это регистр данных (DR) USART’а), получатель данных (адрес буфера), и ожидаемое кол-во байт.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Если элемент структуры hdma->XferHalfCpltCallback не пустой, то разрешаются прерывания по заполнению буфера полностью (DMA_IT_TC), по заполнению буфера наполовину (DMA_IT_HT), и при ошибке (DMA_IT_TE). Если нам не нужно отслеживать заполнение половины буфера, то надо в huart->hdmarx->XferHalfCpltCallback записать NULL.

На этом функция HAL_UART_Receive_DMA(&huart1, (uint8_t*)rx_buff, BUFSIZE) закончена.

Низкоуровневый обработчик прерываний от DMA выглядит так же как и в случае с таймером…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

… вызывает HAL-обработчик HAL_DMA_IRQHandler(&hdma_usart1_rx);

И опять же как и у таймера, функция состоит из нескольких блоков. Первый блок срабатывает при заполнении половинки буфера, второй — целиком, а третий при ошибке. Для примера рассмотрим блок полного буфера…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Проверяются флаги полного буфера (DMA_FLAG_TC1) и разрешённого прерывания (DMA_IT_TC).

Блокировка организована очень просто…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Такая вот хитроумная конструкция Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Если приём ведётся без DMA…

Тогда после включения глобального прерывания USART’а появится его обработчик…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Следом проверяется счётчик принятых байт — RxXferCount (он считает «вниз» от максимального значения буфера), и если он равен нулю (то есть приняты все запрошенные данные), то вызывается колбек — HAL_UART_RxCpltCallback(huart);

В завершение хочется рассказать про копирование через DMA. Для этого режима у DMA есть механизм создания колбеков.

Настроим Куб для копирование массива из одной области памяти в другую при помощи DMA…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это
Длина слова указана Word (32 бита), то есть копироваться будет по четыре байта за один такт.

Функция регистрации колбека…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

В функцию передаются три аргумента:

1. Указатель на структуру.
2. Ключ, по которому определяется какое событие должно вызвать колбек — скопирован весь буфер, скопирована половина буфера и т.д.

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это
В нашем случае указан полный буфер — HAL_DMA_XFER_CPLT_CB_ID.

3. Название колбека. Придумайте сами.

Функция запуска копирования…

Аргументы: указатель на структуру, массив из которого копируется, массив в который копируется, количество байт (ячейки массива 8-ми битные, а DMA будет копировать по 32 бита за раз).

Содержимое этой функции поизучайте самостоятельно, вы уже всё знаете Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

По окончанию копирования произойдёт прерывание и будет вызван обработчик…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

В функции HAL_DMA_IRQHandler() прописан такой же механизм как и в случае с USART’ом — несколько блоков отвечающих за каждое событие (полный буфер, половинка и т.д.) и вот это…

Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Элемент структуры hdma->XferCpltCallback был заполнен во время регистрации колбека.

На этом наверно всё.

Всем спасибо Asus hal central что это. Смотреть фото Asus hal central что это. Смотреть картинку Asus hal central что это. Картинка про Asus hal central что это. Фото Asus hal central что это

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *