Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт окт 17, 2017 19:05

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 146 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10  След.
Автор Сообщение
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс фев 21, 2016 16:39 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 708
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Ilya писал(а):
Меня попёрло и теперь у меня уже 3-и СТМ-ки! :lol: (

У меня пока одна плата на STM32L100, хотя есть ещё на STM8, и запускал её только с VFX Forth :)

Ilya писал(а):
ЗЫ А попробуй написать письмо главному буржую. Чёй-то он на последнее моё письмо пока не ответил, а ведь собирался выпустить новый релиз в январе. :(

Compileroptimierungen für Forth im Microcontroller :)
Код:
➤Redner: Matthias Koch
➤EventID: 7520
➤Event: 32. Chaos Communication Congress [32c3] des Chaos Computer Club [CCC]
➤Ort: Congress Centrum Hamburg (CCH); Am Dammtor; Marseiller Straße; 20355 Hamburg; Deutschland
➤Sprache: deutsch
➤Beginn: Mi. 30.12.2015 17:15:00 +01:00
➤Lizenz: CC-by


P.S. Кто нибудь может сделать пересказ о чём речь?
Через гугл перевод анотации этого выступления выглядит так
Код:
Оптимизация компилятора для изложенных в микроконтроллер
Mecrisp внутренне
Как константами и Registerallokator для Forth компилятором реализации работающей в микроконтроллер?
Те, кто хотел возиться с электроникой и микроконтроллеров, безусловно знает трудоемким поиск неисправностей с большим количеством маленьких тестовых программ. Но это также возможно установить Forth компилятор непосредственно в микроконтроллере, который может быть передано через терминал и который позволяет, "изнутри" для доступа к оборудованию, и сразу же попробовать каждый подпрограмму переписан вручную. Четвертая старая шляпа - но кто теперь думает о медленно, могут быть удивлены: оптимизации Forth компилятор с постоянной складывания и Registerallokator вписывается 20 размера кб даже в LPC1114FN28! Как оптимизаций "на борту" функция будет обсуждаться в этой лекции. Ассемблер знаний для MSP430 и ARM Cortex M являются полезными. Те, кто хочет узнать Forth точным, может бы прийти к Собрания Forth-Gesellschaft.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс фев 21, 2016 16:55 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 294
Откуда: СПб
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.
KPG писал(а):
Chu
По какой инструкции (шагов) собирается Mecrisp из исходников.

P.S. VFX для STM32 от MPE не "мучил"?
Тоже достаточно интересный "квест" :)


Так вроде всё достаточно просто:
1. cd .../mecrisp-stellaris-2.1.6/mecrisp-stellaris-source/stm32...
2. make clean & make

Правда не знаю как в Форточках, а в Линухе надо ещё установить arm-none-eabi-gcc.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вс фев 21, 2016 17:08 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 294
Откуда: СПб
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.
KPG писал(а):
Ilya писал(а):
Меня попёрло и теперь у меня уже 3-и СТМ-ки! :lol: (

У меня пока одна плата на STM32L100, хотя есть ещё на STM8, и запускал её только с VFX Forth :)

...
Compileroptimierungen für Forth im Microcontroller :)
Код:
➤Redner: Matthias Koch
➤EventID: 7520
➤Event: 32. Chaos Communication Congress [32c3] des Chaos Computer Club [CCC]
➤Ort: Congress Centrum Hamburg (CCH); Am Dammtor; Marseiller Straße; 20355 Hamburg; Deutschland
➤Sprache: deutsch
➤Beginn: Mi. 30.12.2015 17:15:00 +01:00
➤Lizenz: CC-by

...

Точно! Он мне писал, что занимается оптимизацией!
Забавный "фашист". :lol: И при этом он совсем не прогер: "...I studied physics and agriculture. Now I work in biophysics research in university, doing laser spectroscopy on algae...."


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пн фев 22, 2016 19:51 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 294
Откуда: СПб
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.
KPG писал(а):
У меня пока одна плата на STM32L100, хотя есть ещё на STM8, и запускал её только с VFX Forth :)

А чего там с VFX - эволюшн или какие другие ограничения имеются?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Пн фев 22, 2016 19:55 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 708
Благодарил (а): 3 раз.
Поблагодарили: 31 раз.
Ilya писал(а):
KPG писал(а):
У меня пока одна плата на STM32L100, хотя есть ещё на STM8, и запускал её только с VFX Forth :)

А чего там с VFX - эволюшн или какие другие ограничения имеются?

Наверное только эволюшен т.к. всё собирается и наверное и ограничения на эволюшин можно при желании убрать.

P.S. Хотя нет, возможно какие то пакеты присутствующие в PC версии не включены :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Сб мар 12, 2016 03:42 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 294
Откуда: СПб
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.
А вот тут http://jeelabs.org/article/1608d/ буржуй ведёт весьма познавательный блог про mecrisp.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вт мар 22, 2016 13:56 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 211
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Ilya писал(а):
А вот тут http://jeelabs.org/article/1608d/ буржуй ведёт весьма познавательный блог про mecrisp.

Полезно, да.
Таки добрался я до регистра control:
Код:
: control@ dup [ $F3EF8614 ><, ] ;
ok.
see control@
20000378: B500  push { lr }
2000037A: F847  str r6 [ r7 #-4 ]!
2000037C: 6D04
2000037E: F3EF
20000380: 8614
20000382: BD00  pop { pc }
ok.
control@  ok.
w0b.r  00000000 00000000 00000000 00000000 ok.

Откуда явно наблюдаю что
control[0]=0 ; привилегированный уровень доступа в режиме потока;
control[1]=0 ; используется основной стек (MSP).
Мелочь, а приятно, победил.
зы. дизассемблер так себе, не распознал инструкцию mrs...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вт мар 22, 2016 22:05 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 294
Откуда: СПб
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.
chu писал(а):
.....
Мелочь, а приятно, победил.
зы. дизассемблер так себе, не распознал инструкцию mrs...

Почти ничего не понял. :oops:
Ты тему со словами вида:
Код:
0-foldable
понял?
Чё к чему?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Ср мар 23, 2016 05:51 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 211
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Ilya писал(а):
понял?
Нет ещё :cry:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Чт мар 24, 2016 19:55 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 110
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
Ilya писал(а):

Ты тему со словами вида:
Код:
0-foldable
понял?
Чё к чему?
Это называется "свёртка констант (англ. constant folding) — часто используемые в современных компиляторах оптимизации, уменьшающие избыточные вычисления, путём замены константных выражений и переменных на их значения."[см. Wikipedia]

В репозитории [https://github.com/kevinfish/mecrisp] есть более подробное описание поля флагов и других особенностей реализации:
Цитата:
...Here is a map of flag meanings:

; FF Invisible
;
; 00 Visible
; 10 Immediate
; 20 Inline - that means, it's contents will be inlined
; until $4130, the ret opcode is found.
; 30 Immediate+Inline means: Immediate, Compile-Only
; 40 Foldable or ready for opcoding
; 80 Allocates initialized Ram (automatically zero-foldable).
; Low Nibble notes how many cells (16-Bit-Values) are reserved.
; For example flag 82 reserves 4 Bytes.
; Reserved Ram is initialized to the values
; after the ret opcode of the word.
;
; In detail:
; Foldable or opcodeable
; 40 0-foldable, e.g. constants
; 41 1-foldable, e.g. 1+
; 42 2-foldable, e.g. swap, xor
; . ...
; 47 7-foldable
;
; "48" is base for opcodable
; 49 opcodable two operand calculus or logic, all are
; automatically 2 foldable (often in combination mit inline: $69)
; 4A opcodable write memory
; 4B opcodable read memory
; 4C opcodable special
;...


...Interpret is complicated and performs all optimisations like folding
and opcoding. For details you can look in the source, which is heavily
documented, but for now only in German...


...If you like to make your definitions foldable, consider this:
: 5+ 5 + 1-foldable ;
Makes your shortcut foldable, if there is at least one constant number waiting.
: 11more 6 5+ + ;
With folding activated for 5+, this will internally optimize to : 11more 11 + ;

11 + internally gets opcoded to add #11, @r4...

This would be the setting for maximal optimisation:
: 5+ 5 + 1-foldable ;
: 11more 6 5+ + 1-foldable ;

Constants are automatically activated for folding, so if you write:

$20 constant P1IN
$21 constant P1OUT
$22 constant P1DIR
$27 constant P1REN

%1 constant led_red
%10 constant led_green

: led-init led_green led_red or P1DIR c! ;

it will get folded to : led-init 3 $22 c! ;

As c! is opcodable, the opcode for mov.b #3, &022h is written to the dictionary,
where it consumes 6 bytes.

Normal calls take up 4 Bytes,
literals take up a maximum of 8 Bytes (sic!),
inlined core words take 2 to 4 bytes.

Special constructs like does> need more...

В общем, "0-folding" и др. нужны чтобы оптимизатор во время компиляции вычислил результат слова и вместо компиляции XT слова подставил его готовый результат в вычисления.



За это сообщение автора kzagradskiy поблагодарил: Ilya
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Чт мар 24, 2016 21:22 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 211
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
kzagradskiy писал(а):

О! Спасибо.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Чт мар 24, 2016 21:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 211
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
В Mecrisp-Stellaris не реализованы атомарные битовые операции. А зря.
Matthias Koch писал(а):
Fetch-Modify-Store operations like +! or bic! are not atomic.


Joseph Yiu ТНЕ DEFINITIVE GUIDE ТО ТНЕ ARM CORTEX-M3 писал(а):
5.5. Операции побитовоrо доступа

Поддержка метода побитовоrо доступа bitband позволяет использовать обыч-
ные операции заrрузки/сохранения для обращения (чтение/запись) к отдельным
битам данных. В процессоре CortexM3 побитовый доступ к памяти поддержива-
ется только для двух предопределённых областей памяти, называемых областя-
ми хранения битов. Одна из этих областей расположена в IM меrабайте aдpeсного
пространства СО3У, а друrая  в 1  м меrабайте адресноrо пространства пери- 
ферийных устройств. В принципе, эти области можно использовать как обычную
память, однако к ним можно обращаться и посредством специальной области па-
мяти, называемой областью доступа к битам (Рис. 5.3). При использовании aдpe-
са, расположенноrо в области доступа к битам, младший бит адресуемоrо значе-
ния обращается к отдельному биту области хранения битов.
...

5.5.1. Преимущества использования метода bit-band
...
Помимо тoгo, что метод bitband ускоряет выполнение битовых операций, по-
зволяя обойтись меньшим числом команд, он также иrрает важную роль при op-
rанизации совмecтнoгo использования какихлибо ресурсов несколькими про-
цессами. Одним из важнейших достоинств битовых операций с применением мe-
тода bitband является их атомарность. Друrими словами, выполнение последова-
тельности «чтение-модификация-запись» не может быть прервано никакими
друrими операциями на шине.
...


Определение адреса в области доступа к битам
Код:
\ get bit-band address

: bitband  ( bit addr1 -- addr2 )
  dup  $fff00000 and
       $02000000 or
  swap $000fffff and
       $20 * +
  swap $4  * +
  ;

позаимствовал у осо. Так как мой вариант ( с проверками допустимого диапазона адресов ) получился слишком неуклюжим.

Поначалу написал такие определения

Код:
: bit+ ( addr --- )       1  swap c! ;
: bit- ( addr --- )       0  swap c! ;
: bit? ( addr --- 1|0 )   c@ ;


Результат
Код:
see bit+
000069C4: B500  push { lr }
000069C6: F847  str r6 [ r7 #-4 ]!
000069C8: 6D04 
000069CA: 2601  movs r6 #1
000069CC: 6839  ldr r1 [ r7 #0 ]
000069CE: 603E  str r6 [ r7 #0 ]
000069D0: 000E  lsls r6 r1 #0
000069D2: CF03  ldmia r7 { r0  r1 }
000069D4: 7030  strb r0 [ r6 #0 ]
000069D6: 000E  lsls r6 r1 #0
000069D8: BD00  pop { pc }
ok.
see bit- 
000069E8: B500  push { lr }
000069EA: F847  str r6 [ r7 #-4 ]!
000069EC: 6D04 
000069EE: 2600  movs r6 #0
000069F0: 6839  ldr r1 [ r7 #0 ]
000069F2: 603E  str r6 [ r7 #0 ]
000069F4: 000E  lsls r6 r1 #0
000069F6: CF03  ldmia r7 { r0  r1 }
000069F8: 7030  strb r0 [ r6 #0 ]
000069FA: 000E  lsls r6 r1 #0
000069FC: BD00  pop { pc }
ok.

мне категорически не понравился.
Особенно в сравнении с родным (не атомарным!) определением bis! ( mask a-addr -- ) \ Set BIts in word-location
Код:
see bis!
00000D02: CF03  ldmia r7 { r0  r1 }
00000D04: 6832  ldr r2 [ r6 #0 ]
00000D06: 4302  orrs r2 r0
00000D08: 6032  str r2 [ r6 #0 ]
00000D0A: 000E  lsls r6 r1 #0
00000D0C: 4770  bx lr
ok.



В системе Mecrisp-Stellaris возможно компилировать код инструкции процессора прямо в определение слова.
После вдумчивого курения ARM Architecture Reference Manual Thumb-2 Supplemen (ARM DDI 0308D)
написалось
Код:

: bit? ( bbaddr --- 1|0 ) [ $7836 h, ] ; 
: bit+ ( bbaddr --- )     [ $70312101 , ] drop ;
: bit- ( bbaddr --- )     [ $70312100 , ] drop ;

see bit?
000043AC: B500  push { lr }
000043AE: 7836  ldrb r6 [ r6 #0 ]
000043B0: BD00  pop { pc }
ok.
see bit+
000043C0: B500  push { lr }
000043C2: 2101  movs r1 #1
000043C4: 7031  strb r1 [ r6 #0 ]
000043C6: CF40  ldmia r7 { r6 }
000043C8: BD00  pop { pc }
ok.
see bit-
000043D8: B500  push { lr }
000043DA: 2100  movs r1 #0
000043DC: 7031  strb r1 [ r6 #0 ]
000043DE: CF40  ldmia r7 { r6 }
000043E0: BD00  pop { pc }
ok.

Совсем другое дело! Так значительно лучше.
Выделю ячейку памяти под флаги:
Код:
0 variable bbv  ok.
bbv @ w0b.r  00000000 00000000 00000000 00000000 ok.

битовые флаги:
Код:
decimal  ok.
31 bbv bitband constant bbv31  ok.
17 bbv bitband сonstant bbv17  ok.
15 bbv bitband constant bbv15  ok.
0 bbv bitband constant bbv0  ok.
2 bbv bitband constant bbv2  ok.
5 bbv bitband constant bbv5  ok.

тест:
Код:
bbv5 bit+  bbv @ w0b.r  00000000 00000000 00000000 00100000 ok.
bbv31 bit+ bbv5 bit- bbv @ w0b.r  10000000 00000000 00000000 00000000 ok.
bbv17 bit+  ok.
bbv15 bit? . 0  ok.
bbv17 bit? . 1  ok.
bbv2 bit? . 0  ok.
bbv @ w0b.r  10000000 00000010 00000000 00000000 ok.
bbv17  bit- bbv31 bit- bbv2 bit+ bbv @ cr w0b.r
00000000 00000000 00000000 00000100 ok.

ногодрыжество с битами порта:
Код:
\
\

   4  RCC_APB2ENR bitband constant IOPCEN    \ Bit 4 IOPCEN: I/O port C clock enable

   8  GPIOC _ODR  bitband constant led-blue  \ Blue  LED on PC8
   9  GPIOC _ODR  bitband constant led-green \ Green LED on PC9

\
\

  : leds_init
    IOPCEN bit? 0= if
    IOPCEN bit+  then     \ I/O port C clock enable
    $22 GPIOC _CRH !      \ Set LEDs as push-pull outputs, max speed 2 MHz.
    ;

  : colours ( -- )
    begin
      key
      dup
      case
        [char] g of led-green dup
                    bit? if bit- else bit+ then
              endof
        [char] b of led-blue  dup
                    bit? if bit- else bit+ then
              endof
      endcase
      27 =
    until
    ;

моргают...


Последний раз редактировалось chu Вт мар 29, 2016 10:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Чт мар 24, 2016 22:02 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 294
Откуда: СПб
Благодарил (а): 6 раз.
Поблагодарили: 4 раз.
chu писал(а):
kzagradskiy писал(а):

О! Спасибо.

Присоединяюсь! :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Чт мар 31, 2016 15:27 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 211
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
ekoeppen писал(а):


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Применение Форта для ARM, AVR, MSP430, PIC ...
СообщениеДобавлено: Вт апр 05, 2016 07:58 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 211
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Илья, ты же свою машинку от PLL разогнал?
Покажи, плз, как считаешь значение для Baud rate register (USART_BRR).
Чего то я туплю :( не могу определиться с битовым полем DIV_Fraction[3:0]

Урра! Сам победил.


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB