OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 12:00

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




Начать новую тему Ответить на тему  [ Сообщений: 166 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 17 Март, 2015 12:50 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Alexander Shiryaev писал(а):
Artyemov писал(а):
Так, это что получается: тип микроконтроллера жёстко задан - в "пузо" зашит? На каждую кокретную микросхему свой компилятор?

Точнее, различия в типах микроконтроллеров касаются только компоновщика и системных модулей, а не самого компилятора.
Просто когда я пишу, например, "компилятор Astrobe", я имею в виду и компоновщик, и основные системные модули.

Вообще, если знать формат ".arm" файлов, создаваемых компилятором Astrobe, можно написать свой компоновщик и набор основных системных модулей. Но по-моему это сложнее и менее полезнее, чем написать кодогенератор для ARMv4T и компоновщик для моего "компилятора".


Я правильно понял:
размер памяти, расположение её в адресном пространстве, ассортимент периферии, её расположение в адресном пространстве - жёстко заданы в компоновщике?
Т.е. к примеру, LPC2000 и AT91SAM7 имеют одинаковое ядро (книжка Мартина полезна и при работе с Atmelами), но разный размер и расположение памяти, различную по организации периферию,
и будут нужны разные компоновщики; хотя и там и там периферия - это набор ячеек памяти (да! разных по расположению, размеру и назначению).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 17 Март, 2015 18:16 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
Правильно, только компоновщику нужна информация не о периферии, а о векторах прерываний (да и то не всегда).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 18 Март, 2015 10:43 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Alexander Shiryaev писал(а):
Правильно, только компоновщику нужна информация не о периферии, а о векторах прерываний (да и то не всегда).


Очень странно…
Векторов прерываний (точнее исключений) в 7TDMI всего 8 (с одним reserved) и расположены они фиксированно - это преорогатива ARM, а вот
где, как и какие расположены регистры периферии - это у каждого производителя по-своему, ну и размер и расположение памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 18 Март, 2015 14:25 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
Artyemov писал(а):
Alexander Shiryaev писал(а):
Правильно, только компоновщику нужна информация не о периферии, а о векторах прерываний (да и то не всегда).


Очень странно…
Векторов прерываний (точнее исключений) в 7TDMI всего 8 (с одним reserved) и расположены они фиксированно - это преорогатива ARM, а вот
где, как и какие расположены регистры периферии - это у каждого производителя по-своему, ну и размер и расположение памяти.

Нужно знать, что их 8, и где хранится контрольная сумма (если она есть -- у NXP, например).

Где расположены регистры периферии -- компоновщику знать не нужно.
Необходимо знать расположение памяти (flash и SRAM).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 18 Март, 2015 16:33 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Alexander Shiryaev писал(а):
Artyemov писал(а):
Alexander Shiryaev писал(а):
Правильно, только компоновщику нужна информация не о периферии, а о векторах прерываний (да и то не всегда).


Очень странно…
Векторов прерываний (точнее исключений) в 7TDMI всего 8 (с одним reserved) и расположены они фиксированно - это преорогатива ARM, а вот
где, как и какие расположены регистры периферии - это у каждого производителя по-своему, ну и размер и расположение памяти.

Нужно знать, что их 8, и где хранится контрольная сумма (если она есть -- у NXP, например).

Где расположены регистры периферии -- компоновщику знать не нужно.
Необходимо знать расположение памяти (flash и SRAM).


"…где хранится контрольная сумма…" - [s]простите, контрольная сумма чего?[/s] А, понял - это особенность NXP, в ARM TechRefMan - не указано.

"…Где расположены регистры периферии -- компоновщику знать не нужно…" - а как же всякие UARTы, SPI, таймеры настраивать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 18 Март, 2015 20:41 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
Artyemov писал(а):
"…Где расположены регистры периферии -- компоновщику знать не нужно…" - а как же всякие UARTы, SPI, таймеры настраивать?

Но компоновщику это не нужно, он ничего не настраивает. Он только создаёт из набора скомпилированных модулей файл прошивки -- образ flash-памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 21 Сентябрь, 2015 01:43 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Новая демонстрация для самых начинающих пользователей компилятора Александра:
https://youtu.be/mGi03zjahwY

В Ubuntu программируем в BlackBox для STM32F4Discovery и прошиваем через UART.

STM32F407VG — это достаточно мощный микроконтроллер с 1М памяти для программы и частотой 160МГц.

Для тех, кто такой же тормоз как я, — это уже другой язык Oberon:
https://www.inf.ethz.ch/personal/wirth/ ... Report.pdf
Синтаксис отличается от Oberon-07.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 21 Сентябрь, 2015 09:48 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Иван Денисов писал(а):
Для тех, кто такой же тормоз как я, — это уже другой язык Oberon:
https://www.inf.ethz.ch/personal/wirth/ ... Report.pdf
Синтаксис отличается от Oberon-07.

18 марта 2015 года. Однако. И чем отличается?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 21 Сентябрь, 2015 11:35 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
http://astrobe.com/forum/viewtopic.php?f=4&t=456&sid=b2ae8060a35d6d4ae44df210dc2ce333


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 26 Октябрь, 2015 02:15 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
Сделал следующий видеоурок :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Четверг, 29 Октябрь, 2015 12:28 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
А как дела обстоят с REAL в Cortex-M0? В ядре ведь нет FPU… ;) (прошу считать этот пост напоминанием о компиляторе для ядра 7TDMI - смиренно ждём-с)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Четверг, 29 Октябрь, 2015 16:42 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
Пока никак :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Пятница, 30 Октябрь, 2015 23:20 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Реализовать операции FPU программным способом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Суббота, 31 Октябрь, 2015 07:29 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Роман М. писал(а):
Реализовать операции FPU программным способом?

Не использовать Cortex-M0 :) покупать процессор под компилятор тоже вполне нормальный инженерный ход.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Пятница, 11 Декабрь, 2015 15:30 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Случайно обнаружил в \O7\Mod файл ARMv4TP.odc, а в нём строку Texts.WriteString(W, "Oberon-07" + CHR(2192H) + "ARMv4T Compiler 5.12.2015").
Что можно доставать labkit-ы с 7TDMI? Как давно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 29 Декабрь, 2015 20:26 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Завел для проекта страничку:
http://oberoncore.ru/projects/o7

Также докладываю, что, используя компилятор Александра, мне удалось успешно управлять контроллерами давления ITV0010, используя два встроенных ЦАП микроконтроллера STM32F407VG. Задача была подавать жидкости с фиксированной скоростью и фиксированное время. Из ББ отправляется команда, которая интерпретируется МК. Формируется заданный паттерен включения ЦАП. Напряжение ЦАП управляет контроллерами давления, и жидкости с реактивами выдавливаются этим давлением в микроканалы...

Свой код бортового и управляющего модулей прилагаю к сообщению.


Вложения:
O7_DAC_example.7z [2.96 КБ]
Скачиваний: 287
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 29 Декабрь, 2015 22:49 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Иван Денисов писал(а):
Свой код бортового и управляющего модулей прилагаю к сообщению.

Было
Код:
   PROCEDURE SendDAC*(v1, ts1, te1, v2, ts2, te2: INTEGER);
      VAR a1, a2,a3, a4, a5, a6: ARRAY 4 OF SHORTCHAR;
      a: ARRAY 24 OF SHORTCHAR; i: INTEGER;
   BEGIN
      SYSTEM.PUT(SYSTEM.ADR(a1), v1);
      SYSTEM.PUT(SYSTEM.ADR(a2), ts1);
      SYSTEM.PUT(SYSTEM.ADR(a3), te1);
      SYSTEM.PUT(SYSTEM.ADR(a4), v2);
      SYSTEM.PUT(SYSTEM.ADR(a5), ts2);
      SYSTEM.PUT(SYSTEM.ADR(a6), te2);
      FOR i:= 0 TO 3 DO a[i] := a1[i] END;
      FOR i:= 0 TO 3 DO a[i+4] := a2[i] END;
      FOR i:= 0 TO 3 DO a[i+8] := a3[i] END;
      FOR i:= 0 TO 3 DO a[i+12] := a4[i] END;
      FOR i:= 0 TO 3 DO a[i+16] := a5[i] END;
      FOR i:= 0 TO 3 DO a[i+20] := a6[i] END;
      TP.SendMessage(p, idDAC, a, 24)
   END SendDAC;

Стало
Код:
   PROCEDURE SendDAC*(v1, ts1, te1, v2, ts2, te2: INTEGER);
      VAR a: ARRAY 24 OF SHORTCHAR;
   BEGIN
      SYSTEM.PUT(SYSTEM.ADR(a[0]), v1);
      SYSTEM.PUT(SYSTEM.ADR(a[4]), ts1);
      SYSTEM.PUT(SYSTEM.ADR(a[8]), te1);
      SYSTEM.PUT(SYSTEM.ADR(a[12]), v2);
      SYSTEM.PUT(SYSTEM.ADR(a[16]), ts2);
      SYSTEM.PUT(SYSTEM.ADR(a[20]), te2);
      TP.SendMessage(p, idDAC, a, LEN(a))
   END SendDAC;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Воскресенье, 10 Январь, 2016 19:45 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Александр, спасибо, я вот так сделал по началу, но не сработало. Поэтому переписал как выложил с использованием переменных. Может, конечно, два косяка наложились где-то, я перепроверю немного позднее.

А сейчас вот запустил, используя O7, сегментный дисплей (e40361-i-0-0-w), цифры показываются по очереди. Работает прилично, код не намного сложнее мигания светодиодом, поэтому не выкладываю. Но если, кому-то нужен, рад буду поделиться.


Вложения:
450.JPG
450.JPG [ 54.23 КБ | Просмотров: 8570 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 11 Январь, 2016 11:19 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Иван, вы не удивились почему не сработало?

SYSTEM.PUT(SYSTEM.ADR(a1), v1);
и т.д.

Запихнуть 6 INTEGER-ов (адрес каждого должен быть кратен 4-ём - про целевую архитектуру не забываем) в массив SHORTCHAR-ов (который может располагаться (ужас!!!) даже по нечётному адресу) - в общем, строгой типизацией не пахнет (:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 11 Январь, 2016 17:30 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Artyemov писал(а):
Иван, вы не удивились почему не сработало?

SYSTEM.PUT(SYSTEM.ADR(a1), v1);
и т.д.

Запихнуть 6 INTEGER-ов (адрес каждого должен быть кратен 4-ём - про целевую архитектуру не забываем) в массив SHORTCHAR-ов (который может располагаться (ужас!!!) даже по нечётному адресу) - в общем, строгой типизацией не пахнет (:

Я не совсем понял Вас...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 166 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След.

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


Кто сейчас на конференции

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB