LINUX.ORG.RU

Заголовочные файлы для ARM Cortex-M0

 


0

1

Здравствуйте, уважаемые участники!

Есть у меня российский кристалл ARM Cortex-M0 БЕЗ заголовочных файлов для Си компилятора. Нет файлов. Совсем нет. Ну нет и всё! Производитель и основной потребитель этих кристаллов дружно разводят руками...

В наличии есть только даташит и еррата. Просветите чайника, как самому написать эти файлы под GCC компилятор! По результатам моих испытаний эффективность GCC -O2 ~65% теоретического (для М3), и ради полуторного (и даже двойного) роста производительности я не горю энтузиазмом изучать ассемблер... Пробовал править файлы с близкого российского Cortex-M0, вылазят ошибки, пробовал IAR, Фитон.

Кстати, камень в огород фитону - на нём потребитель писал прошивку на фитоне, а файлы просто зажал...

Нужно писать SVD файл - это простой XML на основе которого svdconv генерирует заголовочники. Руками делать заголовки - это тупик.

alexru ★★★★
()
Ответ на: комментарий от alexru

Идрыть тебя в степь!

CMSIS — стандартные заголовки для армов!!! А миландровская хрень почти полностью совместима с STM32!! Кури даташиты, мать твою!!!!!!11

anonymous
()
Ответ на: комментарий от anonymous

Я в курсе что такое CMSIS. С «почти полностью» совместимыми заголовками можно долго мучиться.

alexru ★★★★
()
Ответ на: не кричи от sqq

Заголовки для стандартных вещей из Cortex-M0 можно где угодно найти. Вопрос что делать с периферией.

alexru ★★★★
()
Ответ на: комментарий от alexru

Во-первых, не ты - первый! Под это миландровское говно уже много кто разрабатывал. Ищи на гитхабе.

Во-вторых, M0 просты, как яйца! Можно под периферию и самому, основываясь на сводной табличке регистров в конце RM, написать заголовочный файл.

А в-третьих, как я тебе говорил, миландр очень совместим с STM32. Просто открой на соседних экранах оба RM: на миландр и на STM32F0, да сравнивай регистры. Если что-то отличается — правь в заголовочном файле.

За пару вечеров сделаешь конфетку.

// для STM8 я вообще практически с нуля постепенно написал нужное: как только возникала потребность в новой периферии, добавлял в заголовочный файл соответствующие регистры. Но там я не упрощал работу, объявляя поддающиеся структурным делениям регистры как структуры, т.к. sdcc для STM8 — мегатупейшее говно, и оптимизировать вообще не умеет!

anonymous
()
Ответ на: комментарий от yax123

К1986ВК234, он же К1986ВЕ21, микроконтроллер для счётчиков. На неразбериху в наименованиях можно не обращать внимания, маркировка MDR32F21QI.

Программа уже работает на К1986ВЕ92 с файлами!

Servis-engineer
() автор топика
Ответ на: комментарий от Servis-engineer

Так там отличие от ВЕ92 в смещениях адресов периферии. Сама периферия одинаковая, за исключением АЦП. Достаточно лишь поправить несколько базовых адресов в файле от ВЕ92. Например адрес #define MDR_USB_BASE (0x400A8000) нужно изменить на 0x40080000.

anonymous
()
Ответ на: комментарий от Servis-engineer

Цена: 338 руб

Писец!

Ты в военщине что ли прозябаешь? Больше не вижу гадостной силы, способной заставить человека использовать такое дорогое недокументированное говно!

anonymous
()
Ответ на: комментарий от alexru

Ткни носом в мануал по SVD и мануал по генерированию заголовков.

GNU AS для М0 не хочет LDRH R0, [PC, #2], хотя и грузиться должно всего полуслово, жалуется на невыравнивание.

Servis-engineer
() автор топика
Ответ на: комментарий от Servis-engineer

Описание тут https://www.keil.com/pack/doc/CMSIS/SVD/html/svd_Format_pg.html , хотя это описание так себе и проще делать по шаблону готовых МК.

Туча готовых файлов собрана тут https://github.com/posborne/cmsis-svd

И svdconv - это утилита от ARM, она доступна только под win, так что гуглить «svdconv.exe».

Ну и проверить, что периферия действительно такая же как на уже готовых МК и использовать ее.

LDRH в Cortex-M0+ не умеет брать PC в качестве базового регистра.

alexru ★★★★
()
Последнее исправление: alexru (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.