Например TDA7294

Форум РадиоКот • Просмотр темы - Откуда берется начало
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 26, 2025 03:15:08

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 08:23:32 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Всем доброго дня! Надеюсь пишу в ту тему. У меня следующая проблема: у меня нет представления (знания) программирования микрокотроллеров без библиотек. То есть я хочу понять, что является началом, ведь все библиотеки(например SPL, HAL) это библиотеки определенного уровня абстракции, но ведь они должны быть написаны из самого начала, из чего-то, то есть каких-то команд наверное. Даже библиотека CMSIS не является началом, как я понял.
уточню, я понимаю, что есть компилятор, который, так сказать, переводит написанную нами программу(текстовую, например на С) в машинный код. И я хочу понять, что именно компилятор понимает, он же не понимает именно функции целые, а понимает какие-то команды, или что? А может подскажите где и что можно почитать что бы это понять?
Я пробовал заходить в глубь библиотек и смотреть что да как, но я все равно не могу понять.
Надеюсь я свою мысль передал понятно


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 08:50:46 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1814
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Чтобы не чувствовать, что программные библиотеки "волшебные"(прогр. код не писали люди, а код там просто есть), начните с самого нижнего уровня: напишите led blink, а затем: led blink в библиотеке, напр. с выбор "мигающего" выхода, время включения, время выключения ... Затем используйте встроенную библиотеку в некоторых других своих новых программах. ... После этого будет легко.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 09:10:23 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Что значит "с самого нижнего уровня"?
Что бы реализовать мигание светодиода, нужен как минимум CMSIS, а это уже библиотека


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 09:34:10 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1814
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Не беспокойтесь об использовании библиотек в новой библиотеке. В данном случае: просто для понимания.
Все функции такие - из библиотек, которые кто-то написал для нас для использования


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 11:39:37 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 30
Зарегистрирован: Пн июл 04, 2016 16:51:22
Сообщений: 234
Откуда: Россия, Омск
Рейтинг сообщения: 0
CMSIS, больше не библиотека, а словарь. Во всяком случае, те заголовочники, которыми обычно пользуюсь я в своих проектах.
Он содержит мнемонические названия регистров.
Ведь писать
Код:
volatile *(uint32_t *) 0x4001080C = 0x0001;

гораздо сложнее, чем
Код:
GPIOA->ODR = 0x0001;

* Взял первый попавшийся заголовочник - STM32F103x6

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

Самое начало - ассемблер. Да и то использует таблицу регистров.
Для AVR что-то типа такой. Формально, именно такие преобразования можно считать самым началом. Примерно так программировали первые компьютеры.
А потом пошло упрощение для облегчения и ускорения программирования. Затем (и примерно в то же время) пошли библиотеки с готовыми функциями, потом выше, выше, выше... И вот мы пришли к HAL - библиотека уровня абстракции от железа. Универсальная - код можно *теоретически* написать на F7* чипе и с минимальными изменениями заставить работать на F0* кристаллах. Но тут я взял слишком радикальный пример.
А на SPL придётся многое переписывать. Про CMSIS - вообще молчу. Есть у меня несколько заготовок кода, которые мигрируют между разными проектами и при переходе с ядра на ядро приходится их допиливать, потому что регистры отличаются. Каких-то нет, какие-то не имеют отдельных битов. И так далее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 13:35:47 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
maksimdag0, начинайте с заголовочного файла микроконтроллера. В нём "обозваны" и размещены в памяти регистры микроконтроллера, через которые программа и управляет контроллером. Когда поймёте как данные из программы попадают в регистры контроллера, то остальное дело техники. Читаете RM и делаете как там написано.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 20:30:24 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Добрый вечер! Спасибо всем за ответы, особенно вам "AlanDrakes", все подробно расписали.
Кажется я понял какой ответ на мой вопрос:
У каждого языка есть определенный синтаксис, который понимает компилятор(AlanDrakes назвал это мнемоническими названиями регистров как я понял). Но писать таким синтаксисом трудоемко и сложно, поэтому создали библиотек CMSIS, ну а дальше уже относительно библиотеки CMSIS создали следующую и так далее. То есть самое начало, именно в языке си, это тот самый синтаксис, который понимает компилятор для языка СИ (например типы int, float,char.... или операторы if else и тд).
Правильно ли я понял?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 21:35:40 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
maksimdag0, да не важно, что Вы поняли, это пока ничего не стоит. Вы стали на путь познания! Для творческого пути Вам нужно освоить инструменты. Лучший путь с учителем, но можно и самому, гугл в помощь. Разные языки отличаются уровнем абстракции и Ваш мозг имеет разную к ним восприимчивость. Пробуйте, испытуйте свои способности и станете на свою стезю!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Вт мар 07, 2023 21:38:37 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Дело в том, что я уже давно программирую(есть проекты), но детального представления того, что я спрашивал - не было.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Откуда берется начало
СообщениеДобавлено: Ср мар 08, 2023 17:39:24 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Если вдруг захотите, можете полистать мои заметки по работе с контроллером (правда, risc-v, а не arm, но суть примерно одинаковая). Там и про то откуда берутся адреса периферии, и кто инициализирует Си-шные переменные. Разумеется, это не истина в последней инстанции, а так, общее представление сформировать. В arm немного по-другому устроен ассемблер, работа со стеком, старт контроллера, прерывания и многое другое, но зная что и для чего делается, гораздо проще понимать и особенности вашего камня.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot], Novice user и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y