Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер для STM32. Сложно ли, стоит ли пытаться?
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср мар 03, 2021 08:33:52

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


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



Начать новую тему Ответить на тему  [ Сообщений: 284 ]     ... , , , 14,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 13:16:50 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
покажите ассемблер

У меня есть 100 пиновые мк, при этом write/read() для списков пинов работают с uint32_t, т.е. 32 пина максимум(для всех остальных функций ограничений нет). Добавлять поддержку uint64_t просто нет смысла, а тебе зачем тестить список из 35-х пинов если собираешься использовать максимум 20-ти ногий мк? :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 13:30:28 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
а в 20-ноговом корпусе вполне могут существовать гораздо больше пинов. Вот ща 8-ногий STM8L050 изучаю - одна нога как куча пинов, настроить все правильно, особенно в мультирежимном использовании просто квест какой-то :) А в RM ещё пишут, что если оставшихся пинов нет снаружи, не переживайте, они есть внутри и учитывайте их тоже....


Вернуться наверх
 
Друзья! Скоро Новый Год! Китайский! Но мы работаем и в праздники тоже!

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 14:00:56 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
а в 20-ноговом корпусе вполне могут существовать гораздо больше пинов.

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


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 14:05:01 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
не, там не всегда ремапинг. одновременно живут на одной ноге.


Вернуться наверх
 
Запускаем новый BLE 5.2-чип BlueNRG-LP от STMicroelectronics

Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 14:32:59 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
не, там не всегда ремапинг. одновременно живут на одной ноге.

Без разницы, если на одной ноге физически объединены 4 пина, то можно использовать периферию выведенную на любой из них, или можно соединить выход одной периферии со входом другой и т.д., но наружу 4 бита не выведешь и в списке пинов будет по-прежнему какой-то один пин из имеющихся четырех.


Вернуться наверх
 
Революция в силовой электронике. Начало

Что привлекает в SiC по сравнению с кремнием, и какие особенности делают компоненты SiC часто используемыми, несмотря на более высокую стоимость в сравнении с кремниевыми высоковольтными устройствами? – Объясняет специалист ведущего разработчика силовых приборов из карбида кремния, компании Infineon.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 15:13:42 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
Почему ж не выведешь... с программной стороны выведешь все 4 бита наружу, просто физически они выйдут на одной ноге. Я умудрился вывести 0 и 1 одновременно, нечаянно. На ноге примерно половина питания получилась. Полбита :)
Удивительно, но выжило.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 15:37:13 
Опытный кот

Карма: 15
Рейтинг сообщений: 107
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 887
Рейтинг сообщения: 0
Reflector писал(а):
а тебе зачем тестить список из 35-х пинов
Прежде чем писать вот это
VladislavS писал(а):
Код:
port_write (pins, sizeof(pins)/sizeof(port_pin), 0b00100101101001001000001010010100100);
сначала надо было подумать.
А раз написал, будь добр отвечай.

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


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 15:54:06 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
Dimon456 писал(а):
И везде будет разный подход вашего С++ компилятора и разный на выходе ассемблер.

да. поэтому настоящий программист должен использовать Си так:
Код:
int main(void)
{
 #pragma asm
....
#pragma endasm
}

и не оставить компилятору выбора :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 16:26:31 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
И везде будет разный подход вашего С++ компилятора и разный на выходе ассемблер. Это надо учитывать.

В первом случае может быть выполнена дополнительная оптимизация, в трех оставшихся код должен быть одинаковым. Именно код для write(), добавление volatile просто заставит компилятор перечитывать значение переменной "a" из памяти, а не кешировать в регистре. Изменение этой переменной в прерывании вообще ни на что не влияет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 17:33:04 
Опытный кот

Карма: 15
Рейтинг сообщений: 107
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 887
Рейтинг сообщения: 0
Reflector писал(а):
В первом случае может быть выполнена дополнительная оптимизация, в трех оставшихся код должен быть одинаковым.
Не согласен:
1 код: константное выражение, я бы сделал так, в екселе посчитал или еще как и засунул в три BSRR, если три порта используется. Больше от нее не требуется.
2 код: цикл while говорит компилятору что функция используется многократно, соответственно уже свой асм будет.
3 код: скорее всего похоже на ошибку программиста, модификатор volatile будет отброшен компилятором, так как переменная больше нигде не используется. Скорее всего асм код будет таким же как и в коде 2.
4 код: без модификатора volatile было бы ошибкой и не которые компиляторы вырезали бы переменную (а) из прерывания. Но у меня модификатор volatile, в первую очередь этот модификатор говорит компилятору, что переменная может быть использована в прерывании. Соответственно и асм код другой будет, по чему спросите вы, вы за один так не сможете pins1 = a выполнить, если а = 64 битам. 35 пинов за 1 раз не засунуть в 32 битное число.
VladislavS просто не посчитал циферки, и я бы не зацепился.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 18:00:20 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1331
Рейтинг сообщения: 0
Не согласен:

Скомпилируй такой код:
Код:
int val = 10;
while(true) { GPIOB->ODR = val; }

// 0x24001702 37 4A                ldr r2, [pc, #220]
// 0x24001704 0D 23                movs r3, #10
// 0x24001706 53 61                str r3, [r2, #20]
// 0x24001708 FD E7                b.n 0x24001706

Тут 10 загрузится регистр и в цикле будет запись в ODR из регистра.
Код:
volatile int val = 10;
while(true) { GPIOB->ODR = val; }

// 0x24001706 37 4A                ldr r2, [pc, #220]
// 0x24001708 02 94                str r4, [sp, #8]
// 0x2400170a 02 9B                ldr r3, [sp, #8]
// 0x2400170c 53 61                str r3, [r2, #20]
// 0x2400170e FC E7                b.n 0x2400170a

А здесь загрузка в регистр должна выполняться на каждой итерации, вдруг где-то в прерывании данная переменная перезаписывается. От того действительно ли она перезаписывается будет зависеть значение переменной, на генерацию кода это никак не влияет. Естественно если ничего в прерывании не изменяется, то компилятор это ошибкой программиста не посчитает и volatile не уберет, что мы и наблюдаем, ведь у меня никакого прерывания нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 20:21:05 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
VladislavS просто не посчитал циферки, и я бы не зацепился.
Всё я посчитал. Именно поэтому в твоём дурацком цикле сделал оптимизацию и убрал 64-битные вычисления. PinList на >32 пина тоже как три пальца об асфальт делается.
Код:
using TWidth = std::conditional_t<(Size>32), uint64_t, uint32_t>;
И дальше используешь для всех вычислений TWidth. Но я слабо представляю себе ногодрыжный интерфейс на 32+ пина. Можно пример какой-нибудь?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 20:43:24 
Опытный кот

Карма: 15
Рейтинг сообщений: 107
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 887
Рейтинг сообщения: 0
VladislavS писал(а):
сделал оптимизацию и убрал 64-битные вычисления.
где ты тут увидел 64 битные вычисления?
VladislavS писал(а):
Можно пример какой-нибудь?
асм покажешь на 64 бита, или боишься что СИ положит на лопатки С++?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 21:06:26 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
где ты тут увидел 64 битные вычисления?
Да несколько страниц назад. Да и вот тут при 35 битах ничего не поменялось.

асм покажешь на 64 бита, или боишься что СИ положит на лопатки С++?
Закусывать надо! :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 21:09:35 
Опытный кот

Карма: 15
Рейтинг сообщений: 107
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 887
Рейтинг сообщения: 0
Свое покажи. Асм где?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 21:31:59 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Подавись. 48 ног.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 22:05:42 
Опытный кот

Карма: 15
Рейтинг сообщений: 107
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 887
Рейтинг сообщения: 0
VladislavS, ладно, признаю свое поражение и склоняюсь перед великим и могучим С++


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 22:34:46 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 3
Дарю. А то прямо кровь из глаз.
Код:
volatile uint64_t x;

int main()
{
  for(;;)
  {
    uint64_t tmp = x++;
    GPIOA->ODR = tmp>>48;
    GPIOB->ODR = tmp>>32;
    GPIOC->ODR = (uint16_t)(tmp>>16);
    GPIOD->ODR = tmp;
  }
}



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 22:50:12 
Опытный кот

Карма: 15
Рейтинг сообщений: 107
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 887
Рейтинг сообщения: 0
VladislavS писал(а):
Дарю. А то прямо кровь из глаз.
Да не ужели.
Твой код
Мой код
Асм показывать не надо?
Могу еще на указателях, но те же самые 612 байт выдает.


Я не спорю что IAR делает эффективный код, но как бы мне не удалось собрать тот проект на IARе, ты мне не помог со скриптом линкера.
Так что ....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Вс янв 03, 2021 22:57:20 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Это не лечится.

PS: Любым инструментом надо уметь пользоваться. Будь то язык программирования или компилятор.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


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

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


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