OberonCore
https://forum.oberoncore.ru/

Компилятор Oberon → ARMv6-M, ARMv7E-M
https://forum.oberoncore.ru/viewtopic.php?f=137&t=5232
Страница 7 из 9

Автор:  Kemet [ Среда, 04 Май, 2016 09:34 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Kubanych писал(а):
8 битный ардуиновый Оберон сделать насколько сложно?
Да принципиальных проблем нет.
Есть, например вариант Компонетного Паскаля для 8-ми битных MCS 51, Оберон07 для 16-ти битного DCPU-16. У нас есть Активный Оберон для PDP-11.
Конечно, есть некоторая специфика, но главная проблема - кто и зачем будет писать компилятор( или back end ) для avr8.

Автор:  Kubanych [ Среда, 04 Май, 2016 12:41 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Kemet писал(а):
Да принципиальных проблем нет... главная проблема - кто и зачем будет писать компилятор( или back end ) для avr8.


Это хорошо. Один раз я ковырялся в структурах данных, созданных фронтэндом блэкбокса, извлекал оттуда нужную информацию.
Значит, в целом 8 битный компилятор есть, надо поработать над бэкэндом.

Автор:  Иван Денисов [ Четверг, 08 Сентябрь, 2016 22:36 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

На базе такой же платы с STM32F103 и компилятора O7 запустил OLED дисплей по протоколу I2С.

Изображение

Автор:  Artyemov [ Пятница, 09 Сентябрь, 2016 11:40 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Аппаратный I2C или программно реализовано?

Ну и "чтоб два раза не вставать": ARMv4TP.odc для архитектуры 7TDMI компилятор?

Автор:  Иван Денисов [ Пятница, 09 Сентябрь, 2016 12:37 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Artyemov писал(а):
Аппаратный I2C или программно реализовано?

На сколько я могу судить, I2C - аппаратный.

Автор:  Artyemov [ Пятница, 09 Сентябрь, 2016 14:14 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

"На сколько я могу судить…" - от чего такая неуверенность?

Автор:  Иван Денисов [ Пятница, 09 Сентябрь, 2016 19:29 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Artyemov писал(а):
"На сколько я могу судить…" - от чего такая неуверенность?

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

Автор:  Artyemov [ Понедельник, 09 Январь, 2017 14:21 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Намедни я решил применить Oberon к SAM3S1 атмеловскому и начал с описания периферии.
Результат компиляции на картинке:
Вложение:
O7_quasiErrors.png
O7_quasiErrors.png [ 10.11 КБ | Просмотров: 9564 ]


Оказывается, что буква "_" (ASCII-код 5FH) за букву не считается, в соответствии с Oberon07.Report.pdf, и значит в идентификаторах применяться не может.
Это ещё поля в регистрах не описывались ;)
Следующий момент: почему "_" в позиции 90 вызвала ошибку (остальные ошибки - индуцированные), а за 4 позиции до того - нет?
КП (по Cntl-K) этот модуль компилирует без ошибок (это к тому, что синтаксических ошибок нет).

Предложение Александру Ширяеву: "причислить "_" к лику св…" :) - ввести в список букв (letter = "A" | "B" | … | "Z" | "a" | "b" | … | "z" | "_".), и если есть контакт с Никлаусом Вальтеровичем, то узаконить " "_" - буква".
"_" в идентификаторах хорошо с читаемостью кода помогает: XXXXX_xxxxxx Xxxx_XXXX _XXXX_Xxxxxx - визувально.

Автор:  Oleg N. Cher [ Понедельник, 09 Январь, 2017 14:58 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Хотя компилятором пока пользоваться не собираюсь, но присоединяюсь к просьбе.

Поддержка "_" в идентах - это была первая причина моей работы над Ofront, из-за которой я вообще этим занялся. Грубо попрал стандарт языка, но зато стало сильно легче работать с WinAPI.

Автор:  Artyemov [ Понедельник, 09 Январь, 2017 15:48 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

В микроконтроллерах "потроха" достаточно вычурными аббревиатурами обзываются и разбирать как поделить идентификатор на составные не самая простая задача.

"_" вообще в стандарте не фигурирует ни как буква, ни как спецсимвол, ни как что-то вообще. И в самом тексте "_" нет :)

Автор:  Alexander Shiryaev [ Среда, 11 Январь, 2017 21:52 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Добавил поддержку SAM3S в компоновщик.

Автор:  Artyemov [ Пятница, 13 Январь, 2017 17:13 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

А "_" в категорию букв включить?

Автор:  Alexander Shiryaev [ Пятница, 13 Январь, 2017 18:28 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Artyemov писал(а):
Оказывается, что буква "_" (ASCII-код 5FH) за букву не считается, в соответствии с Oberon07.Report.pdf, и значит в идентификаторах применяться не может.
Это ещё поля в регистрах не описывались ;)
Следующий момент: почему "_" в позиции 90 вызвала ошибку (остальные ошибки - индуцированные), а за 4 позиции до того - нет?

Так у Вирта в компиляторе, я ничего не менял.

Можете добавить "_" в O7S.Identifier, но это уже будет расширение того языка, который описан в "language report".

Автор:  Info21 [ Пятница, 13 Январь, 2017 22:19 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Александр Владимирович, за Вами должок в духе http://www.inr.ac.ru/~info21/oberon_inn ... onAgro.htm
и в виде докладика на Дне Оберона 2017.

Автор:  Alexander Shiryaev [ Среда, 01 Февраль, 2017 00:41 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Переместил все примеры подсистемы Micro в отдельную подсистему: Mobx

Автор:  Alexander Shiryaev [ Среда, 01 Февраль, 2017 01:02 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Добавил в примеры модуль для работы с таймером SysTick.
Код:
MODULE MobxSysTickTest0;

    IMPORT ARMv7M := MicroARMv7M, PeriodicTimer := MobxARMv7MSTM32SysTick0, Sys := MicroSTM32F103x8System;

    CONST periodicTimerFreq = 16 (* Hz *);

    PROCEDURE MainLoop;
    BEGIN
        REPEAT
            IF PeriodicTimer.OnTimer() THEN
                ...
            END;
            ARMv7M.WFI
        UNTIL FALSE
    END MainLoop;

    PROCEDURE Init;
    BEGIN
        PeriodicTimer.Init(Sys.HCLK, periodicTimerFreq)
    END Init;

BEGIN
    Init; MainLoop
END MobxSysTickTest0.

(^Q)O7ARMv7MLinker.Link STM32F103C8 MobxSysTickTest0

Автор:  Иван Денисов [ Среда, 01 Февраль, 2017 06:42 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

А почему бы этот модуль не поместить в Micro, а вот этот твой пример с форума должен как раз быть в Mobx ?

Автор:  Artyemov [ Среда, 01 Февраль, 2017 13:11 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Alexander Shiryaev писал(а):
Добавил в примеры модуль для работы с таймером SysTick.


Ещё полезная функция у SysTick: определить время выполнения программного фрагмента (да, пока не Оберон ;)):
Код:
   LDR   R8,   =SysTick_BASE_ADDRSS
   LDR   R0,   [R8,   #(REG_SysTick_VAL - SysTick_BASE_ADDRSS)]
   
   LDR   R12,   =TEST_BITMAP
   MOV   R11,   #0
   MOV   R10,   #10
   BL   LCM32128A_BITMAP_WRITE
   
   LDR   R7,   [R8,   #(REG_SysTick_VAL - SysTick_BASE_ADDRSS)]


разница содержимого R7 и R0 - длительность выполнения подпрограммы LCM32128A_BITMAP_WRITE в тактах ядра

Автор:  Kubanych [ Пятница, 03 Февраль, 2017 20:26 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

А вместо ARM можно выводить на llvm?

Автор:  Kemet [ Пятница, 03 Февраль, 2017 21:30 ]
Заголовок сообщения:  Re: Компилятор Oberon → ARMv6-M, ARMv7E-M

Kubanych писал(а):
А вместо ARM можно выводить на llvm?
Я пробовал (для другого компилятора ) и пришел к выводу что это сейчас бессмысленно. Лучше транслировать в Си и компилировать используя соответствующий компилятор для Си.

Страница 7 из 9 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/