Змінюй хід війни! Допомагай ЗСУ!

Программирование ARM. Eclipse, Keil,IAR,CooCox - всё сюда.

🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #221
В данном случае я согласен с Пашей. Объявлять переменные в хидере - моветон. Шо это за лютый проект такой, где надо вагон переменных таскать в несколько файлов и экстерны не спасают? Как же ж абстрагирование от деталей реализации? Накрайняк напиши функцию через которую можно обратиться к данной переменной, если ты находишься в другой области видимости.

Бегло глянул либы, не нашел где там объявляют переменные. Только typedef'ы
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #222
В данном случае я согласен с Пашей. Объявлять переменные в хидере - моветон. Шо это за лютый проект такой, где надо вагон переменных таскать в несколько файлов и экстерны не спасают? Как же ж абстрагирование от деталей реализации? Накрайняк напиши функцию через которую можно обратиться к данной переменной, если ты находишься в другой области видимости.

Бегло глянул либы, не нашел где там объявляют переменные. Только typedef'ы

ммм :) А структура - не те же переменные?
Или если я написал задал там переменную - єто в корне меняет дело? Могу структуру объявить - будет то же самое.
Нет, не меняет - я могу структуру объявить - будет то же самое. Переменую объявил, так как это самый простой тип данных, чтобы путаницы небыло.
Это всего лишь объявление. ни какого static, ни какого создания объектов. Просто объявление.

Так у тебя откомпилировалось, или нет?

P.S. Таки если просто объявить структуру - то можно. Но тогда её надо создавать обязательно отдельным действием где-то в .с .
Это однако задрочь, ни в одном IDE больше такого нет. Где, блядь, мой любимый процедурный подход? Это ж какая-то объектно-ориентированная хрень получается.

Бегло глянул либы, не нашел где там объявляют переменные. Только typedef'ы
Объявляются переменные типа указатель. Везде и много.



И вот так делают:
Код:
[QUOTE]/**
  ******************************************************************************
  * @file    stm32f1xx_hal_gpio.h
  * @author  MCD Application Team
  * @version V1.0.3
  * @date    11-January-2016
  * @brief   Header file of GPIO HAL module.
  ******************************************************************************[/QUOTE]
typedef struct
{
  uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.
                           This parameter can be any value of @ref GPIO_pins_define */

  uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.
                           This parameter can be a value of @ref GPIO_mode_define */
                           
  uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
                           This parameter can be a value of @ref GPIO_pull_define */
                           
  uint32_t Speed;     /*!< Specifies the speed for the selected pins.
                           This parameter can be a value of @ref GPIO_speed_define */
}[B]GPIO_InitTypeDe[/B]f;
А если я так сделаю - будет пресловутый multiple define.

То есть, обойти-то проблему можно, но это костыль, а не решение.
В либах создание структуры при объявлении - работает.
Я сделать так
Код:
struct MyStruct {
...content...
}instance;
не могу.

P.S. А. Врубился - я тайпдеф не заметил. Это тоже не экземпляр, сцуко.
 
Останнє редагування:
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #223
Именно. Ты или пиши typedef, или не создавай экземпляр структуры. Одно из двух.
Я в твоем примере выпилил название экземпляра (master) и все шикарно скомпилилось.

Короче так или иначе в хидерах переменные не объявляются.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #224
Именно. Ты или пиши typedef, или не создавай экземпляр структуры. Одно из двух.
Я в твоем примере выпилил название экземпляра (master) и все шикарно скомпилилось.

Короче так или иначе в хидерах переменные не объявляются.

Да, я въехал уже.
Это хреновая особенность кейла. Не зря я выкидывал его в прошлый раз :) Больше ни один компилятор так себя не ведёт.
Может ради святаго объектнаго аринтиравания оно и хорошо, но какбы...
структ имя
{контент}объект; - это пример из любого учебника. Один из способов создавать структуру.
Объявлять, что "это моветон и поэтому я так делать вам не дам" - это называется охъуеть, а не правила хорошего тона.

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

P.S. Кейл таки кривой.

Создал проект, включил автодополнение - работает.

Создал в другом месте - не работает автодополнение. Включил/переключил/выключилвключил/перезапустил кейл - не работает.

Открываю проект где работало - как работало так и работает.

P.P.S. И эти люди рассказывают мне про правила хорошего тона? И они берут за это говно деньги?
Да ебал я такой хороший тон...
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #225
создание небольших проектов с малым числом данных
не потребует много extern'ов :)

А в больших сам Б-г велел применять ООП-стайл, иначе охуеть можно от количества перекрестных связей.
Меня эта особенность Кейла вообще ни разу не запарила, даже не знал что можно как то иначе :)
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #226
А, да! Теперь же я не могу просто передать указатель к структуре! Я же теперь ещё 2 rcall должен лишних сделать и написать между ними нахуй не нужный геттер для получения разыменования и возврата его через стек в функцию, которой он нужон...
Не, ну заебись теперь. Теперь я понимаю почему у них код 1,08кБ со старта и ещё 11,7кБ при подключении GPIO, RCC, UART и USB.
Так для справки, UART вместе с 2-мя FIFO-буферами, функцией авторасчета битрейта из десятичного числа в BRRH-BRRL и очередями для буферов - 1кБ. Это я про 8-bit ки.

Про размер вправления GPIO в восьмибитках я со слезами промолчу...
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #227
Так для справки, UART вместе с 2-мя FIFO-буферами, функцией авторасчета битрейта из десятичного числа в BRRH-BRRL и очередями для буферов - 1кБ. Это я про 8-bit ки.
Так справаж у наявності місця. Якщо є місце в флеші, то нафіга мудитись з лібами. Абсолютно нормальний підхід. Ніхто ж на асмі не пише для економії місця. От і тут пишуть виходячи з можливостй заліза - дозволяє об'єм пам'яті написати просто - пишуть.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #228
По моим подсчетам ARM на тактовой менее 96МГц с памятью менее 512кБ - проигрывает Atmega128 по всем показателям, включая целесообразность (так как она уже меньше 1$).
ИТОГО:
1. Скорость.
Имеем 16МГц против 72МГц.
Прерывание ATmega - 2 такта и я там.
Прерывание Cortex-M3 - 12 тактов.
Чтобы обеспечить такую же оперативность кортекс надо погнать до 96МГц. тогда вся "мощ" современного камня обрушится на врага и... догонит 16МГц восьмибитку.
2. Объем памяти.
Чтобы разместить команду на 8-битном камне надо 2-3 байта - байт команды и байт данных/1-2Б адреса/
Чтобы разместить команду в 32бит проце - в 4 раза больше. Мало того - большинство данных будут реально требовать всего 16бит, то есть выигрыш в скорости на операциях, требующих 32 - слихвой окупается уймой пустующего места. Да, усреднять поток 16-битных данных оно будет быстрее раза в 4. Наверное, это хорошо для каких-то навороченых сигнальных вещей, но зря в М3 отключили thumb... я на AT91SAM7 включал его - охуенная штука.
Итого, если навалить на то, что "в современных армах много памяти", случится облом - 128*4=512 как ни крути, а это старшие камни в М3-х, например. Ну, или ставьте SRAM, но кто в устройство за $20 поставит SRAM при его себестоимости у нас - 10$ без SRAM?
Нет, страну меняйте сами - я уже не в том возрасте, меня не возьмут.

Что там ещё? А, богатая периферия... тут, как бы, играет роль то, что когда ARM разрабатывали - она уже была доступна и стояла цель врубиться в рынок, а для этого надо что-то предоставить, чего у других нет.
Не вижу препятствий (да и не один я) затулить то же самое в ту же атмегу.
И оно было затулено, но почему-то производитель рещил, шо он вот щас возьмёт и весь сразу на этом обогатится и вломил невменяемые цены.
А STM - не вломил цены, а вломил Atmel-у и микрочипу.

Тему считаю раскрытой. Реальная продуктивность использования мелких АРМ-ов - вопрос чистого холивара :) Единственное, чем они берут - периферия.



P.S. Я так и не понял почему AT90USB128 до сих пор стоит 8,7$. Его, что, реально кто-то покупает?
Не, есть, конечно, USB16 по 2,4, но ... это цена STM32F103RBT6, который кроет 16-ху как бык овцу...
 
Останнє редагування:
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #229
1. В приложениях с большим потоком данных наличие DMA в ARM дает мощного пня под сраку Атмелу.
2. Стандартизация корпусов. Ну пестня же. Один корпус - одна распиновка. Ремап портов - дизайнеры PCB апплодируют стоя.
3. Многоуровневый контроллер прерываний с назначаемыми приоритетами. Любой вывод GPIO как источник прерывания. Мечта разработчика realtime приложений.
4. FSMC. Дисплеи с параллельным интерфейсом адресуются как память. Натравил DMA, ну ты понел...
5. USB в любом камне. За три копейки. То что с им надо ебаться пока опустим :)
6. Потребление же! L-серя в числе отличившихся. Не, ну у Атмела есть тини класса pico-power, но они же тини.

Гемор, секс и бубен в качестве дебаггера частично компенсируются наличием девбордов, кучи доков и местами кривых визардов различных разработчиков. Но это справедливо только для STM. Оттого и зохавал рынок.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #230
1. В приложениях с большим потоком данных наличие DMA в ARM дает мощного пня под сраку Атмелу.
2. Стандартизация корпусов. Ну пестня же. Один корпус - одна распиновка. Ремап портов - дизайнеры PCB апплодируют стоя.
3. Многоуровневый контроллер прерываний с назначаемыми приоритетами. Любой вывод GPIO как источник прерывания. Мечта разработчика realtime приложений.
4. FSMC. Дисплеи с параллельным интерфейсом адресуются как память. Натравил DMA, ну ты понел...
5. USB в любом камне. За три копейки. То что с им надо ебаться пока опустим :)
6. Потребление же! L-серя в числе отличившихся. Не, ну у Атмела есть тини класса pico-power, но они же тини.

Гемор, секс и бубен в качестве дебаггера частично компенсируются наличием девбордов, кучи доков и местами кривых визардов различных разработчиков. Но это справедливо только для STM. Оттого и зохавал рынок.
Гемора с дебагерами нет. Есть ST-link и куча китайских клонов всего. JTAG - стандартен, как ни крути, и виглер шил и AT91SAM и STM32...

Ну, да, ДМА ещё забыл :)
За дисплеи - не знал, к стати. Как-то не приходилось подключать к арму. Надо будет попробовать :)

Любой вывод на прерывание - в атмегах тоже дофига могут быть extint, к стати.

Ремап портов - условно-полезная штука. Можно с ним. Но можно и без него. Стоимость ПП от этого не меняется.

Вот многоуровневый контроллер прерываний, ИМХО - зло. Именно он порождает те 12 тактов.

Стандартизация корпусов - плюс. Но в 16-32-64 они тоже стандартны :)
У микрочипа - не в курсе как с этим.

P.S. Я всё-же потихоньку запасаю попкорн. Конкуренция иногда рождает химер, а иногда - шедевры.
Микрочип поглотил атмела. Что-то же на выходе должно получиться :)

P.P.S. Ну, или... в конце концов всех купит за отступного ST и закроет их к ебеням, чтобы не позорились :D
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #231
1. Скорость.
Имеем 16МГц против 72МГц.
Прерывание ATmega - 2 такта и я там.
Прерывание Cortex-M3 - 12 тактов.
Чтобы обеспечить такую же оперативность кортекс надо погнать до 96МГц. тогда вся "мощ" современного камня обрушится на врага и... догонит 16МГц восьмибитку.
Не согласен. Прерывания - редкое по меркам микроконтроллера событие. Если оно становится частым, это или неправильно выбрана платформа или программист-дебил.
А в остальном прирост тактовой существенно помогает. Не забываем про, то что максимальные 16 МГц для мег можно получить при питании 5В, что не совместимо с жизнью большинства современных компонентов. Ставить рядами и колоннами согласователи на логике я желаю только сотрудникам Миландра.
Когда у меня встал вопрос о подключении LCD по SPI при 3,3 питания, разница между 8/2 = 4 МГц и 72/2 = 36МГц была очевидной.

Вот многоуровневый контроллер прерываний, ИМХО - зло. Именно он порождает те 12 тактов.
Да болт с ними с 12-ю тактами. Это бывает нечасто.

Гемора с дебагерами нет.
Ну как знать. Или Кейл не едет или я ебанутый. F103VBT6 спокойно дебажу, RBT6 - хер! Он делает морду кирпичом и говорит что не найден алгоритм, зашивать/дебажить отказываюсь. Хоть усрись.

Вот многоуровневый контроллер прерываний, ИМХО - зло. Именно он порождает те 12 тактов.
Зато удобно :) А еще можно программно ивенты вызывать!
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #232
Не согласен. Прерывания - редкое по меркам микроконтроллера событие. Если оно становится частым, это или неправильно выбрана платформа или программист-дебил.

В корне неверно - прерывания позволяют контролировать надцать физических процессов параллельно, ускоряя работу аппаратного комплекса в разы и частота прерываний определяется только физикой управляемого процесса и возможностями самого МК.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #233
Тему считаю раскрытой. Реальная продуктивность использования мелких АРМ-ов - вопрос чистого холивара Единственное, чем они берут - периферия.
совершенно сапоги. больше тама ничего эдакого нету.
единственное шо, мне нравятся f411 и иногда f303 если бы блять не жались а сделали в четверках ацп 15 мгц в интерливе я б вообще харе кришна пел.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #234
Не забываем про, то что максимальные 16 МГц для мег можно получить при питании 5В, что не совместимо с жизнью большинства современных компонентов. Ставить рядами и колоннами согласователи на логике я желаю только сотрудникам Миландра.
Когда у меня встал вопрос о подключении LCD по SPI при 3,3 питания, разница между 8/2 = 4 МГц и 72/2 = 36МГц была очевидной.
Забываем, я уже писал тут - все меги сейчас идут с индексом "А". Они уже на другой, наверное, технологии, на 5В они оверклочатся до 48МГц с внешним кварцем.
От 3,3 они пилюлят с внешним на 32МГц. То есть - 16 там во всем диапазоне.
родной генератор заводится на 3,3В даже на 20МГц, но мне стрёмно так оставлять :)


Да болт с ними с 12-ю тактами. Это бывает нечасто.
Я говорю про оперативность. Не насколько часто, а насколько быстро я начну делать то, что надо по этому событию.


Ну как знать. Или Кейл не едет или я ебанутый. F103VBT6 спокойно дебажу, RBT6 - хер! Он делает морду кирпичом и говорит что не найден алгоритм, зашивать/дебажить отказываюсь. Хоть усрись.
А кейл обновился? Менеджер пакетов включи и посмотри.


Зато удобно :) А еще можно программно ивенты вызывать!
Я ваще могу любую функцию вызвать! :D
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #235
В корне неверно - прерывания позволяют контролировать надцать физических процессов параллельно, ускоряя работу аппаратного комплекса в разы и частота прерываний определяется только физикой управляемого процесса.
Это как раз понятно, но если прерывания будут прилетать часто настолько, что 12 тактов будут играть существенную роль, то на основной код уже времени почти не останется и появляются конкретные шансы захлебнуться.
А система приоритетов прерываний тут огромный плюс, позволяет наиболее гибко использовать возможности проца и оптимально разруливать процессы.

Забываем, я уже писал тут - все меги сейчас идут с индексом "А". Они уже на другой, наверное, технологии, на 5В они оверклочатся до 48МГц с внешним кварцем.
Неа. Эксперименты экспериментами, но в даташите есть график Safe Operating Area. 16 МГц от 4,5 Вольт. Страница 416, даташит ревизии 8151A -08/08.


А кейл обновился? Менеджер пакетов включи и посмотри.
Кейл один и тот же.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #236
Это как раз понятно, но если прерывания будут прилетать часто настолько, что 12 тактов будут играть существенную роль, то на основной код уже времени почти не останется и появляются конкретные шансы захлебнуться.
А система приоритетов прерываний тут огромный плюс, позволяет наиболее гибко использовать возможности проца и оптимально разруливать процессы.

Это поддержу, но это контролируется ещё на этапе выбора контроллера, частоты ядра и параметров обрабатываемого физического процесса
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #237
Я говорю про оперативность. Не насколько часто, а насколько быстро я начну делать то, что надо по этому событию.

Давайте не будем забывать что происходит в корексе-м3 за эти 12 тактов помимо попадания процессора в код обработчика. Плюс всякие ништяки типа tail-chaining / late arrival. Это то что лежит на поверхности. А если копнуть глубже в сторону msp/psp, поддержки мультитаскинга то там 8-кам совсем приходиться печально, поэтому сравнивать эти камни как бы гиблое дело imho.

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

Я себе слабо представлю железяку на арме в которой прерывания летят скажем каждые 100 тактов (1нс, Карл!). Ну это же идиотизм чистой воды, там явно плисина проситься по крайней мере в качестве буфера.



Atmega128 по всем показателям, включая целесообразность (так как она уже меньше 1$).

atmega128 1$ ?
 
Останнє редагування:
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #238
Я себе слабо представлю железяку на арме в которой прерывания летят скажем каждые 100 тактов (1нс, Карл!). Ну это же идиотизм чистой воды, там явно плисина проситься по крайней мере в качестве буфера.

И я ж об этом.

Все верно. Видел на Али лот 13$ за 20 штук.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #239
Неа. Эксперименты экспериментами, но в даташите есть график Safe Operating Area. 16 МГц от 4,5 Вольт. Страница 416, даташит ревизии 8151A -08/08..
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Operating Voltages
– 2.7 - 5.5V
• Speed Grades
– 0 - 16MHz
Там больше нету сноски на 3,3 и 5. То есть - верно во всем диапазоне питания.


Пока ті писал - стало
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
:rolleyes:

Єто не касается всей остальной продукции атмела.
Есть всего 2 целесообразніх микросхемі - Атмега8 (около 0,5$) и Atmega128( около 1$)/ Остальное ценообразование у них неадекватное.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #240
Там больше нету сноски на 3,3 и 5. То есть - верно во всем диапазоне питания.
Посмотри все таки график 32-1 на странице 416. То что написано на первой странице это следствие общей тенденции делать из технической документации рекламные буклеты.


Есть всего 2 целесообразніх микросхемі - Атмега8 (около 0,5$) и Atmega128( около 1$)/ Остальное ценообразование у них неадекватное.
+много. Остальные не имеют смысла. А не, Тиня13 еще по 30 центов, и то не из-за жадности а из соображений удобства трассировки платы.
 
Назад
Зверху Знизу