Например TDA7294

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

Текущее время: Сб дек 27, 2025 16:17:58

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8919 ]     ... , , , 122, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 10:30:06 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
КРАМ писал(а):
А если программист может писать и на АСМе и на Си, но затрудняется делать существенные вставки на АСМе?

Он не МОЖЕТ, он ДОЛЖЕН. Если мы говорим о системном (как область обязанностей, не обязательно единственное занятие) программисте

Цитата:
Тогда такой программист пишет либо на Си, либо на АСМе - в зависимости от задачи.

Вот именно об этом и речь.
С оговоркой, что задача - это не проект целиком, а проект - совокупность задач =))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 10:35:21 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
КРАМ писал(а):
АРМ архитектура по сути не совсем архитектура реального времени из-за неопределенного времени исполнения команд и входа в обработчик прерываний. Из-за чего требуется более высокая частота работы

Тут уж не архитектура АРМ. Даже не говоря о том, что у АРМ чтото по Фон-нейману, чтото по Гарвардской... Каждое ядро со своим конвеером и тесно интегрированной переферией, типа контроллеров прерывания и памяти, с точки зрения определенности исполнения - уже 'своя архитектура'.

Ну а прерывания... Если критично - брать самые младшие кортексы и с макс частотой - у них конвеер короче, меньше латентность обработки прерывания. Или те ж адкие гибриды M3/4/7+M0 в одном корпусе, что те ж NXP давно начал делать, да и не только они :)))

Да, и если латентность важна - ISR функции в SRAM. Флеш с контроллерах выше ~20-30Mhz чтука архилатентная. Ну и использовать свой стек для ISR.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 10:42:43 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
КРАМ писал(а):
Но для СТМ32, учитывая особенности исполнения команд, писать на чистом АСМе, на мой взгляд, действительно идиотизм... АРМ архитектура по сути не совсем архитектура реального времени из-за неопределенного времени исполнения команд и входа в обработчик прерываний. Из-за чего требуется более высокая частота работы, чтобы минимизировать неопределенности исполнения кода и большой набор разнообразной периферии для привязки кода к реальному времени с высокой точностью.


Это может быть идиотизм с профессиональной точки зрения, а я аматор в этом деле (потому как заработать на хлеб разработкой программ под МК у нас вообще нереально - никому не нужно), поэтому использую то, что мне удобнее.
Думаю что при нормальном трансляторе асма с мощными макросами скорость разработки будет не на много ниже, нежели на си с "регистровым" подходом.

Не знаю как у кого, а у меня основное время тратится на изучение огромных мануалов от ST и на выяснение особенностей работы периферии, а не на написание кода.

У кортексов М0 время исполнения инструкций чётко оговорено в соответствующем документе (arm v6m technical reference manual). Время входа/выхода из обработчика тоже оговорено (с учётом приоритетов и вложенности, и возможности прерывания ldm/stm).
Латентность флеш памяти тоже оговорена, но на малых тактовых частотах можно считать нулевой. Других источников неопределённости я не знаю :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 10:52:51 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
Andrew Martin писал(а):
Думаю что при нормальном трансляторе асма с мощными макросами скорость разработки будет не на много ниже, нежели на си с "регистровым" подходом.

Таки есть трансляторы асма с код мувингом и инстракшн шеддулингом ? :))) Реально, я не в курсе современного, я представлял себе компилер асма чисто как предпроцессор+транслятор их мнемонического кода в машинный.
Дело в том, что времена, когда можно было генерировать оптимальный код с табличкой по циклам единичной инструкции прошли.
Важен порядок инструкций при котором они пойдут по конвееру с минимальными задержками. Напомню, кортексы начиная с M3 суперскалярны.

Да и про архитектуру системы памяти тоже нельзя забывать. Было дело, поднял производительность процентов на 30% тормознув ядро по частоте на 12% -))


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 10:56:09 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
Andrew Martin писал(а):
У кортексов М0 время исполнения инструкций чётко оговорено в соответствующем документе

Вот, собсно, граница, на которой все просто почти "как на AVR", я бы очертил M0 на 24Mhz.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 11:08:49 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
Satyr писал(а):
Andrew Martin писал(а):
У кортексов М0 время исполнения инструкций чётко оговорено в соответствующем документе

Вот, собсно, граница, на которой все просто почти "как на AVR", я бы очертил M0 на 24Mhz.


Так и есть. Выше по частоте уже латентность флеша, но она, как я понял из умных доков, тоже величина вполне определённая. Но можно же код исполнять из ОЗУ - AVR такое и не снилось :) Правда таблица векторов всё равно жестко сидит во флеше, но обработчики тоже ведь можно затолкать в ОЗУ. Это на случай если латентность жмёт.

Разговор сейчас именно о М0, посему не будем упоминать М3 и старше зря.
Кто-нибудь прояснит вопрос по SPI?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 11:25:04 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
Satyr писал(а):
Andrew Martin писал(а):
Думаю что при нормальном трансляторе асма с мощными макросами скорость разработки будет не на много ниже, нежели на си с "регистровым" подходом.

Таки есть трансляторы асма с код мувингом и инстракшн шеддулингом ? :))) Реально, я не в курсе современного, я представлял себе компилер асма чисто как предпроцессор+транслятор их мнемонического кода в машинный.
Дело в том, что времена, когда можно было генерировать оптимальный код с табличкой по циклам единичной инструкции прошли.
Важен порядок инструкций при котором они пойдут по конвееру с минимальными задержками.


Воно каких слов понабирались, да всё заграничных - "код мувингом и инстракшн шеддулингом" :)))

Загляните в дизасме на сишный код. Я смотрел на выхлоп кейла, общая идея построения такая же, как в моём куске кода. В частности, большие 32битные константы хранятся в конце, после выхода из функции, а не в теле (перемежаясь с переходами).

Например сишный код Досикуса

Код:
 SPI1->CR1 |= SPI_CR1_SPE


а у меня

Код:
   movs   r1,SPI_CR1_SPE         ;enable SPI
   ldrh   r2,[.spi1.CR1]
   orrs   r2,r1
   strh   r2,[.spi1.CR1]


И ЧТО тут оптимизировать?

В М0 на конвейер влияют только вызовы/переходы, арифметика/логика исполняется одинаково.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 12:06:13 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Andrew Martin писал(а):

Код:
SPI1->CR2 |= SPI_CR2_FRXTH


Но этот бит относится к приёмному буферу, а у меня принимать нечего и event генерировать не нужно, поэтому я и оставил этот бит в нуле.


Передача и приема у SPI единое целое. Это не дойдет до адаптев кала , но вам-то должно быть ясно.
Кстати передачу и прием - в студию...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 12:08:27 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
Andrew Martin писал(а):
Загляните в дизасме на сишный код. Я смотрел на выхлоп кейла, общая идея построения такая же, как в моём куске кода. В частности, большие 32битные константы хранятся в конце, после выхода из функции, а не в теле (перемежаясь с переходами).

Это особенность Thumb кода - непосредственно адресуется +-2Кб вокруг SP. Поэтому Не делаются отдельные сегменты кода и сегменты данных, они перемежаются мелкими кусками.
Не знаю, как нынче Keil компилирует. И какие настройки оптимизации использованы. IAR с высокой степень оптимизации код так размывает, что родной дебагер уже перестает по сишному коду идти, т.к. кода с исходниками уж теряет структурную связь :)))

Хотя, даже если "выхлоп кейла, общая идея построения такая же, как в моём куске кода", то уже идея писать на асме, на котором производительность разработчика на порядок ниже, становится сомнительной.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 12:17:47 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 2
Satyr, вся "крутость" адептов HAL и SPL и других недолиб неизбежно приводит убогих в тупик.
Здесь первостепенно знание железа ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 12:59:59 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
dosikus писал(а):
Satyr, вся "крутость" адептов HAL и SPL и других недолиб неизбежно приводит убогих в тупик.
Здесь первостепенно знание железа ...

кто такие убогие, где и какой тупик и, главное, как связаны неэффективные инструменты и знание железа ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:01:00 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
dosikus писал(а):
Andrew Martin писал(а):

Код:
SPI1->CR2 |= SPI_CR2_FRXTH


Но этот бит относится к приёмному буферу, а у меня принимать нечего и event генерировать не нужно, поэтому я и оставил этот бит в нуле.


Передача и приема у SPI единое целое. Это не дойдет до адаптев кала , но вам-то должно быть ясно.
Кстати передачу и прием - в студию...



Не вполне ясно.
Ещё раз повторюсь, приёма нет т.к. нечего принимать и линия MISO настроена как обычный IO пин.

SPI тупо должен выплюнуть байт через MOSI и всё. Так можно? Или обязательно нужно что-то мутить с приёмом?

Есть одна функция передачи

Код:
spi_tx:   ;r0 = 8-bit input
   push   {r0-r3,lr}

   ldr      r1,[lcd_spi_cblock.spi_base]

   virtual at r1
   .spi1   SPI_TypeDef
   end virtual

   movs   r3,SPI_SR_BSY               ;ожидаем пока BSY не сбросится в 0
@@:
   ldrh     r2,[.spi1.SR]
   tst       r2,r3
   bne     @r
   
   movs   r3,SPI_SR_TXE                  ;ожидаем пока TXE не установится в 1
@@:
   ldrh     r2,[.spi1.SR]
   tst       r2,r3
   beq     @r
   
   strb   r0,byte [.spi1.DR]                ;отправляем байт

   pop   {r0-r3,pc}



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:12:30 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
Satyr писал(а):
Andrew Martin писал(а):
Загляните в дизасме на сишный код. Я смотрел на выхлоп кейла, общая идея построения такая же, как в моём куске кода. В частности, большие 32битные константы хранятся в конце, после выхода из функции, а не в теле (перемежаясь с переходами).

Это особенность Thumb кода - непосредственно адресуется +-2Кб вокруг SP. Поэтому Не делаются отдельные сегменты кода и сегменты данных, они перемежаются мелкими кусками.

Хотя, даже если "выхлоп кейла, общая идея построения такая же, как в моём куске кода", то уже идея писать на асме, на котором производительность разработчика на порядок ниже, становится сомнительной.


Ну вот, точно этот самый адепт :)

Во-первых не +-2кБ, а только +1кБ, во-вторых не SP (стек-то тут при чём?), а относительно PC.

На порядок, уважаемый, это в 10 раз. Не надо утрировать. "На порядок" возможно только тогда, когда человек всю жизнь сидел на HLL и вдруг начал пробовать асм и соответственно смотреть на него, извините, как баран на новые ворота, да плюс к тому если у него череззадничный транслятор вроде родного но неуважаемого ARMASM.

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

Поэтому не нужно разводить холивар, лучше бы с SPI помогли.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:18:29 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Andrew Martin писал(а):
Не вполне ясно.
Ещё раз повторюсь, приёма нет т.к. нечего принимать и линия MISO настроена как обычный IO пин.

SPI тупо должен выплюнуть байт через MOSI и всё. Так можно? Или обязательно нужно что-то мутить с приёмом?


Для одиночных транзакций, даже если не принимаем :

Данные в буфер
Ждем флаг RXNE
Вычитываем буфер

С BSY :

проверяем TXE
Данные в буфер
Проверяем BSY

Но BSY больше подходит для блочных транзакций ...


Последний раз редактировалось dosikus Пн окт 05, 2015 13:55:04, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:32:25 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
dosikus писал(а):
Andrew Martin писал(а):
Не вполне ясно.
Ещё раз повторюсь, приёма нет т.к. нечего принимать и линия MISO настроена как обычный IO пин.

SPI тупо должен выплюнуть байт через MOSI и всё. Так можно? Или обязательно нужно что-то мутить с приёмом?


Для одиночных транзакций, даже если не принимаем :

Данные в буфер
Ждем флаг RXNE (BSY)
Вычитываем буфер


Вот оно что! :shock:
А в RM0360 об этом ни слова :dont_know:
В чём прикол не понял, но нужно будет попробовать...

А ежели выплёвывать байты с помощью DMA? Тогда как?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:39:25 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
dosikus писал(а):

Для одиночных транзакций, даже если не принимаем :

Данные в буфер
Ждем флаг RXNE (BSY)
Вычитываем буфер

Что-то новенькое. Какое мне дело до флага приема и на кой вычитка буфера ? До такого даже индусы в SPL не додумались.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:48:54 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Andrew Martin писал(а):
А ежели выплёвывать байты с помощью DMA? Тогда как?


C DMA - в прерывание от Transfer Complete DMA ждем освобождение Fifo SPI , ждем BSY .
Здесь посылка буфера в TIC55.
Код:
void DMA1_Channel4_5_IRQHandler (void)
{
 
  if(DMA1->ISR & DMA_ISR_TCIF5)
  {
    DMA1->IFCR |=DMA_IFCR_CTCIF5;
    DMA1_Channel5->CCR&=~DMA_CCR_EN;
   while(((SPI2->SR & SPI_SR_FTLVL_0))|| ((SPI2->SR & SPI_SR_FTLVL_1))){}   
   while((SPI2->SR & SPI_SR_BSY)){}
   SPI2->CR1 &= ~SPI_CR1_SPE;
          LOAD_ON;         
          LOAD_OFF;
   
  }   


a5021 писал(а):
Что-то новенькое.


Клоуну невтерпеж снова в своем дерьме изваляться? :)))


Последний раз редактировалось dosikus Пн окт 05, 2015 13:58:13, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:54:55 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
dosikus писал(а):
Клоуну невтерпеж снова в своем дерьме изваляться? :)))

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 13:57:13 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
a5021, я не удосужен обсуждать что-либо с теоретиками, тем более то, что давным-давно обсосано и работает на ура на всех линейках STM32. RTFM , клоун...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн окт 05, 2015 14:01:19 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 253
Зарегистрирован: Вт июн 25, 2013 18:45:07
Сообщений: 606
Рейтинг сообщения: 0
dosikus писал(а):
Andrew Martin писал(а):
А ежели выплёвывать байты с помощью DMA? Тогда как?


C DMA - в прерывание от Transfer Complete DMA ждем освобождение Fifo SPI , ждем BSY


Получается в этом случае нужно только дождаться окончания передачи (чтобы не потерять данные) и всё?
Это я уже видел в мануале.


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

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


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

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


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

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


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