Ассемблер для ARM Cortex-M0!

32-битные ARM-совместимые микроконтроллеры (AT91, ARM7, ARM9), а также микропроцессоры вплоть до ARM64

Moderator: Shaos

Электромонтёр
Fanat
Posts: 97
Joined: 23 Feb 2018 22:20

Ассемблер для ARM Cortex-M0!

Post by Электромонтёр »

Здравствуйте уважаемые участники форума!
Подскажите толковых книжек по ассемблеру для ARM Cortex M0!
Буду также очень признателен за подробную инструкцию написания заголовочных файлов для Си компилятора под ARM Cortex M0. Как правило, производители микроконтроллеров прилагают к своим микросхемам заголовочные файлы, но наш родной отечественный производитель для некоторых микросхем с удобной для меня периферией решил скромно, но со вкусом ограничиться голым даташитом :(
Собственно алгоритм отработан на К1986ВЕ92QI, сейчас задумался о переносе программы на другой кристалл.
Благодарю за внимание!
Электромонтёр
Fanat
Posts: 97
Joined: 23 Feb 2018 22:20

Re: Ассемблер для ARM Cortex-M0!

Post by Электромонтёр »

В общем, с огромным трудом удалось найти толковые материалы :)

Подробнейший мануал по командам Thumb!!!111 Вот чего мне не хватало в даташите! Прямо вспомнил советскую книжку про МПК КР580 :)

Плюс подробный мануал по GNU AS!

Увы, нормально пользоваться можно только младшими РОНами R0-R7, старшие 5 R8-R12 только как дополнение.
User avatar
dementor
Novelist
Posts: 47
Joined: 26 Dec 2016 23:38

Re: Ассемблер для ARM Cortex-M0!

Post by dementor »

Более-менее
для ассемблера кортексов написано тут (правда для М3-М4) https://habr.com/post/274541/. Там же и список книг во второй статье серии.
На английском пара книг всего по М0, последняя http://gen.lib.rus.ec/book/index.php?md ... A1997E18F2
Не кирпичом англичане ружья чистят!
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Ассемблер для ARM Cortex-M0!

Post by Shaos »

Электромонтёр wrote:В общем, с огромным трудом удалось найти толковые материалы :)

Подробнейший мануал по командам Thumb!!!111 Вот чего мне не хватало в даташите! Прямо вспомнил советскую книжку про МПК КР580 :)
Я лет 15 назад тоже было брался изучать Thumb (и ARM7 вместе с ним), да чото сразу же и бросил :)

Теперь я более к MIPS-ам расположен в качестве альтернативных супер-пупер-процов...
Я тут за главного - если что шлите мыло на me собака shaos точка net
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Ассемблер для ARM Cortex-M0!

Post by angry_troll »

Мипс тоже с кучей легаси. Тру это risc-вэ :)

по существу: дока вот -- https://static.docs.arm.com/ddi0419/d/D ... 6m_arm.pdf , страница 61 и далее.
привет засранцу лавру :)
Электромонтёр
Fanat
Posts: 97
Joined: 23 Feb 2018 22:20

Re: Ассемблер для ARM Cortex-M0!

Post by Электромонтёр »

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

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

Кстати, вот группа для изучающих армовый ассемблер.
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: Ассемблер для ARM Cortex-M0!

Post by askfind »

По опыту работы. Читайте на английском языке с переводчиком.

1) The Definitive Guide to ARM® Cortex®-M0 and Cortex-M0+ Processors, Second Edition - https://www.pdfdrive.com/the-definitive ... 67900.html

2. The Arm® Cortex®-M0 is the smallest Arm® processor - https://www.st.com/content/st_com/en/ar ... ex-m0.html

Рекомендую! Визуальный конфигуратор и генератор проектов с полных описанием всего. ..

3. STM32Cube Ecosystem - https://www.st.com/content/st_com/en/ec ... on_nov2020

4. Видео курс c примерами программирования ARM - https://narodstream.ru/
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
Электромонтёр
Fanat
Posts: 97
Joined: 23 Feb 2018 22:20

Re: Ассемблер для ARM Cortex-M0!

Post by Электромонтёр »

Итак, ничего лучше не придумал, как считать все критичные моменты исключительно в цикле обработки прерывания таймера на 160 кГц. +/- 10 мкс погоды не делают - и затраты машинного времени уменьшились вдвое. Цикл обработки прерывания жрёт сейчас около 50% машинного времени.

Обновлено!

Итак, частота ШИМ увеличена до 250 кГц, количество каналов измерения резольверов оставлено два, добавлена несколько корявая (пачками) генерация двух пар квадратурных импульсов, плюс генерация двух ноль-меток. Итоговые затраты 70-75% процессорного времени в среднем, в пике до 100% по осциллографу, но проц успевает. Из К1986ВЕ92QI на С по быстродействию выжал практически всё. Дискретность снижена до 5000. При увеличении частоты ШИМ до 320 кГц процессор уже ничего не успевает! Много жрут времени ветвления - во-первых перезагрузка конвейера, во-вторых при нелинейной выборке команд появляются задержки чтения флеш-памяти МК.

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

Обновлено!

По просьбе Миландра тиснул статейку на Хабре.