Страница 1 из 2
организация программ на AVR
Добавлено: Пн дек 11, 2017 17:37:41
asdf12
добрый день
я время от времени возвращаюсь к изучению мк AVR, начинал знакомство с ними, и с программированием вообще с ассемблера.
пока программки были небольшие, до 1-2 кб, мне как то еще удавалось все "разрулить", но чем сложнее программы тем больше понимаю что надо завязывать с этим "линейным" программированием, и как то все иначе организовать.
наверное надо написать свою "библиотеку" функций, более менее универсальных, пожертвовав возможно где-то быстродействием в угоду универсальности и большей скорости разработки. писать на Си и прочих языках высокого уровня я не хочу. ассемблер меня вполне устраивает.
вот и встал вопрос, если писать свои функции, с некоторой долей универсальности, встает вопрос о том как организовать лучше всего обмен между ними, по каким то одним правилам, учитывающим саму специфику архитектуры мк.
то есть, я так думаю что необходимо прежде чем что либо писать принять некие правила, каким образом в функцию передавать значения переменных, к примеру. и вообще нужно ли придерживаться этих правил или нет, нужны ли они? вот как все это организовано в компиляторах, того же Си?
ну и вообще, может кто подскажет, подкинет идеи как писать на ассемблере когда программа становится большой по объему.
то есть вопрос как организовать все это, чтобы не увязнуть в коде
Re: организация программ на AVR
Добавлено: Пн дек 11, 2017 18:06:35
ARV
а зачем вам знать, как устроено в Си, если Си вы не хотите применять? вот и наслаждайтесь ассемблером в полной мере
а вообще - кто вам законы пропишет, кроме вас самих? определите для себя правила оформления ассемблерных модулей и пишите по этим правилам свои библиотеки. все равно ведь, кроме вас, они вряд ли кому понадобятся...
Re: организация программ на AVR
Добавлено: Пн дек 11, 2017 18:34:40
asdf12
[uquote="ARV",url="/forum/viewtopic.php?p=3256950#p3256950"]а зачем вам знать, как устроено в Си, если Си вы не хотите применять?[/uquote]
чтобы почерпнуть идеи из него, возможно
п.с. меня не интересует язык Си как таковой. меня интересуют его компиляторы для avr, а именно по каким правилам и каким образом они передают значения, например как передают значения переменных в функцию, в регистрах, в ячейках озу, в каких именно и так далее
Re: организация программ на AVR
Добавлено: Пн дек 11, 2017 18:39:33
oleg110592
http://pic24.ru/doku.php/osa/articles/e ... out_errors
там статьи еще есть полезные
как передают значения переменных в функцию
Код: Выделить всё
func (int16_t a, int32_t b, char* c);
| a | b | c |
|r25:r24|r23:r22:r21:r20|r19:r18|
принимают:
Код: Выделить всё
int8_t func (); |r24|
int16_t func (); |r25:r24|
int32_t func (); |r25:r24:r23:r22|
Re: организация программ на AVR
Добавлено: Пн дек 11, 2017 20:43:52
asdf12
спасибо. интересно.
Re: организация программ на AVR
Добавлено: Вт дек 12, 2017 18:15:19
Demiurg
Я тоже когда-то был ярым приверженцем асма. Но я зарабатываю на разработках. И когда объем программ стал значительно увеличиваться, перешел на си. Переход был мучительным. Несколько раз порывался, бросал. Потом понял, что меня останавливал страх. Перед сложностью, что не получится и так далее.
Потом я поступил следующим образом: продолжал писать программы на асме, но читал книги, пробовал. Когда началось получаться полностью перешел на си и остановил все проекты до тех пор, пока более-менее не освоил си. Перенес свои наработки на асме на сишные проекты.
Теперь, оглядываясь назад, жалею, что не начал раньше.
Организация программ не зависит от языка. Обмен между модулями. Прямой обмен переменными, флагами, состояниями конечных автоматов. Посредством службы сообщений.
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 00:19:15
asdf12
[uquote="Demiurg",url="/forum/viewtopic.php?p=3257944#p3257944"]Я тоже когда-то был ярым приверженцем асма.[/uquote]
я не ярый приверженец ассемблера, но мне нравится ассемблер, для меня программирование МК хобби. меня ничто не гонит вперед кроме собственного интереса.
что касается Си, я быдлокодил на нем, одно время, под ПК, общее представление имею, но писать на нем под МК мне не интересно. нет того удовольствия которое я получаю от ассемблера
нашел интересную статью, статья шедевр
http://caxapa.ru/lib/CwithoutC.html
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 08:39:04
BOB51
У каждого и свои предпочтения (субъективные) и свои объективные причины использования разных компиляторов в соответствии с поставленными задачами (и средствами/элементной базой, для решения тех задач применяемой).
Ассемблер также "разный" бывает (по уровню использования возможностей компилятора)...

Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 08:46:19
oleg110592
тогда до кучи: мощный macro assembler под разные архитектуры (AVR есть) от Alfred Arnold, до сих пор развивается
http://john.ccac.rwth-aachen.de:8000/as/
можно
WHILE
IF / ELSEIF / ENDIF
SWITCH(SELECT) / CASE / ELSECASE / ENDCASE
и пр.
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 09:06:01
BOB51
Интересный проектик...
В отношении микрочипа не слишком шикарно, да и АВР только как обобщенное AVR RISC МК, но довольно много "редковстречаемых"...
Однако читать надо... моного и долго...
Ессно с действующими IDE совместимости... речи бысть не может, дебаггер-отладчик также надо как-то ... "добавлять"...
Однако подкупает "единый подход"... и существование до сего дня...

Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 09:12:38
oleg110592
[uquote="BOB51",url="/forum/viewtopic.php?p=3258393#p3258393"]Ессно с действующими IDE совместимости... речи бысть не может, дебаггер-отладчик также надо как-то ... "добавлять"...[/uquote]
с ключиком (-g ATMEL) типа asw -g ATMEL trylala.asm выдает объектный файл, который прекрасно принимает Аврстудия - работает отладка
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 09:16:46
BOB51
Снова за ПЕРЕВОДчик...
ДОСАДКА ОДНАКО!!...

Укушу - в "винной" вылизывать продолжу.

Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 09:24:36
oleg110592
в оригинале, вроде, для программистов все понятные слова:
g [format]: This switch instructs AS to create an additional file that contains debug information for the program. Allowed formats are the AS-specific MAP format ( format=MAP), a NoICE-compatible command file ( format=NOICE), and the Atmel format used by the AVR tools ( format=ATMEL). The information stored in the MAP format is comprised of a symbol table and a table describing the assignment of source lines to machine addresses. A more detailed description of the MAP format can be found in section 5.2 The file's extension is MAP, NOI, resp. OBJ, depending on the chosen format. If no explicit format specification is done, the MAP format is chosen.
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 09:28:15
BOB51
Так все равно ВЫЧИТЫВАТЬ надо, даже ежли и частично понимаемое.
И не только вычитывать, но и сравнивать с уже ранее обработанным.
Это не просто "на любителя"... МНДЯАА...

Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 10:37:54
Jack_A
asdf12, я думаю, не стоит расковыривать компилятор Си для изучения идей, стоит разработать конкретно для себя набор правил и потом строго его придерживаться.
................ Мысли старого ретрограда
Я тоже кодил на Асме, но у меня был дополнительный стимул: работал на фирму по договору, и ее шеф не очень одобрительно воспринял бы необходимость в каждый прибор в сотнях экземпляров серии совать МК на 1..2$ дороже. Что бы там ни говорили - мол, разница не очень большая - есть она, и достаточно существенная. Пример? Да калi ласка ! Исходя из спектра задач, предстоящих фирме, я разработал "плавучку" нестандартную: один байт порядок, 2 байта мантисса. И когда тестировали по сравнению с Си, "скорострельность" была в 2 с лишним раза выше. Не говоря уже о printf, который тянет под 1кб кода. У меня преобразования для вывода на ЖКИ нужных нам данных (ну не было форматного вывода с форматом, который мог родиться в пьяном бреду сумасшедшого ежика ) уложились в сотню байт. За универсальность плата - избыточность.
Спойлер
Телепаю возражения: "Гуано твоя плавучка. Когда понадобится складывать разной величины данные, будет большая потеря точности. Может оказаться, что прибавляемые крохи окажутся вообще за пределами разрядной сетки " Ну что сказать - строг, но справедлив. Но ведь и я не совсем лапоть. Для таких редких случаев имелась полноценная 4-байтная float, в которую простенькая прога вливала "крохи".
Возражение второе. "Это ж надо додуматься - свою плавучку! Может, ты еще и функции свои писал? Это ж какая прорва времени!" А как же без функций - корень, синус, логарифм. Времени отняло не так много на фоне того, что параллельно разрабатывалось железо, платы, обкатывалась сама концепция изделия. А когда этап арифметики закончен, не нужно же в каждом новом проекте все трясти заново, а написать в исходнике макровызов SIN alfa,x ничуть не затратнее, чем Си-шное x=sin(alfa) .
Я не собираюсь в сотый раз затевать религиозную войну "ASM vs C" - каждому - свое, кому поп, кому попадья.
Для себя я установил распределение регистров: входной аргумент был в R16, результат в R24,R25. "Неполноченные" регистры R1..R15 отдал под регистровый файл глобальных переменных, из которого любая подпрограмма могла черпать данные. Регистры R17..R23 были рабочими, и их не нужно было сохранять/восстанавливать при входе/выходе в/из п/п - кроме вложенных вызовов, разумеется. И пр. Это, конечно, не канон, но любая, даже не очень хорошая система лучше, чем никакой.
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 13:40:12
asdf12
[uquote="Jack_A",url="/forum/viewtopic.php?p=3258458#p3258458"]стоит разработать конкретно для себя набор правил и потом строго его придерживаться.
но любая, даже не очень хорошая система лучше, чем никакой.[/uquote]
согласен. вот пытаюсь как то выработать для себя эту систему
отходя от собственной темы, хочу задать вопрос
хочется попробывать МК с архитектурой ARM, но незнаю как к ней подступиться, хочу писать на ассемблере, но вижу что производители применимо к этой архитектуре навязывают Си, а мне хочется с ассемблера начать. у STM как я понимаю большие "проблемы" с настройкой периферии, необходимо долго возиться с ней, на ассемблере примеров я не находил. хотя и не очень долго искал. вопрос вот у меня, производителей МК с этой архитектурой достаточно как я понимаю, у всех аналогичные проблемы? хочется взять ARM и программировать, а не утонуть в изучении того как тупо дернуть ногой на этом МК. что посоветуете?
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 14:09:44
oleg110592
что посоветуете?
http://we.easyelectronics.ru/STM32/asm- ... chalo.html
Процесс разработки устройства на асме STM32 ничем не отличается от того же на avr или stm8. Время вхождения, конечно, больше, т.к. необходимо осваивать немного более сложную периферию. Зато писать на асме STM32 и быстрее и удобнее чем, например, под avr (ИМХО).
еще:
http://we.easyelectronics.ru/psv/zapisk ... u-asm.html
вроде заглох:
http://stm32asm.ru/
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 17:49:22
BOB51
Ну уж ежли ИМЕННО АРМ (а не частности в виде STM32)
тогда изучение надо начинать отсюда
https://www.arm.com
...
А уже затем конкретую разновидность в семействе отрабатывать с изучением даташитов производителя.
К тем АРМам не только STM, но и атмел/микрочип и NXP и много кто еще "лапу приложил" (включая российские Ангстрем и Миландр)...

Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 19:05:59
asdf12
BOB51, я нигде не путал в своем сообщении ARM и STM32, я же так и написал - "производителей МК с этой архитектурой достаточно"
мне самому было бы интересно узнать от опытных людей, МК какого производителя с архитектурой ARM проще в настройках периферии. мне нехватает знания английского и времени на то чтобы шерстить интернет изучать кучу всего от разных производителей чтобы сделать заключение, с чего проще стартануть в ARM.
вот ежели бы кто сказал - возьми контроллер этого производителя, он проще всего конфигурируется.
но большинство смотрю остановилось на STM, наверное в первую очередь из-за привлекательной цены и периферии.
хотя мне как для того для кого это все хобби цена не играет роли, для меня не имеет значения 500р стоит МК или 1500
просто конечно пугает количество настроек в STM
Re: организация программ на AVR
Добавлено: Ср дек 13, 2017 19:29:42
dosikus
[uquote="BOB51",url="/forum/viewtopic.php?p=3259035#p3259035"]Ну уж ежли ИМЕННО АРМ (а не частности в виде STM32)
тогда изучение надо начинать отсюда
https://www.arm.com[/uquote]
Вы в своем уме неуважаемый?
Что ты там "изучать" собрался?
Не, если начать долгий и нудный путь писанины под асмЪ, то систему команд проштудировать стоит, но основное-это периферия а не ядро.
Поэтому и изучают периферию и работу с ней, а не то что тебе взбрендилось.