Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 15:23

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - amForth залить в железку
Автор Сообщение
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
На страничке amForth появился раздел
Проекты на amForth с описанием
Сообщение Добавлено: Пт авг 28, 2015 01:01
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
KPG писал(а):
В библиотечном файле quotations.frt есть "небольшая" прореха приводящая к неработоспособности кода в последних сборках
... сообщить о выявленном дефекте кода.


amforth-devel — Development discussion and user support писал(а):
... my Russion needs probably some refresh. After your hint I
did some checks myself, and indeed the quotations did not
work. The problem was a wrong LITERAL, introduced with
release 5.6, that got fixed by re-using the previous
version of literal.asm. Done with svn rev1866.

Thanks for the hint and greetings to the Russian
forthers!

Matthias
Сообщение Добавлено: Вт июн 30, 2015 06:59
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
В библиотечном файле quotations.frt есть "небольшая" прореха приводящая к неработоспособности кода в последних сборках

Код:

\ anonymous definitions in a definition
\ typical usage
\ : foo ... [: some words ;] ... ;
\
\ is equivalent to
\
\ :noname some words ; Constant #temp#
\ : foo ... #temp# ... ;
\

: [: ( -- quotation-sys )
     postpone ahead :noname  ; immediate

: ;] ( compile-time: quotation-sys -- ; run-time: -- xt )
    postpone ;
    ]                 \ в этом месте добавил
    >r
    postpone then
    r>
    postpone literal
    ]
; immediate

Тест кода из amForth
Код:
\ anonymous definitions in a definition

: if-else ( ... f xt1 xt2 -- ... )
\ Postscript-style if-else
    rot if
       drop
    else
       nip
    then
    execute ;

: test ( f -- )
    [: ." true" ;]
    [: ." false" ;]
    if-else ;
   
1 test cr \ writes "true"
0 test cr \ writes "false"

P.S. Возможно имеет смысл сообщить о выявленном дефекте кода. В некоторых файлах не казаны зависимости
(например, что bitnames требует builds> определение.

KPG писал(а):
Пробовал через ТераТерм загружать код, но бывает возникают какие то сбои на ровном месте и использование задержек в настройках COM порта не помогает.

В конфигурации COM API указал время тайминга по записи 0 - фиксируемые текущие ошибки пропали :)
Сообщение Добавлено: Вт июн 23, 2015 19:13
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
chu писал(а):
насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio )

А через ключи в bat файле?

P.S. Попробовал твой uploader под Win7 64 как то сразу не заработал пришлось провести некоторую "изыскательскую" работу над кодом загрузчика и библиотекой работы с СOM портом что бы понять как не работает (в одном локальном месте так ещё и не понял как нарушается баланс стека в коде :)
. В целом сейчас как то работает (отлаживал под АmForth 5.8 ), но есть некоторые ещё шероховатости в приеме ответных посылок (приходит в ответном считывании после отправки 0х0D несколько подтверждающих > обычно 2 е последовательности с возможными вариациями)
И ещё код не хочет первоначально работать с СOM портом, а только после того как сначала отработала программа TeraTerm.
Пробовал через ТераТерм загружать код, но бывает возникают какие то сбои на ровном месте и использование задержек в настройках COM порта не помогает.
Сообщение Добавлено: Ср апр 15, 2015 18:02
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
KPG писал(а):
P.S. В Proteus всё равно не получилось запустить и для "произвольного" кристалла может не собраться из коробки.

chu писал(а):
насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio )

Изображение
Сообщение Добавлено: Ср апр 15, 2015 09:54
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
Заметил одну "особенность" при сборке amForth5.8 для Atmega162.
Всё собралось, но первый Uart не заработал пока в template не оставил uart, вместо (логически верного uart_0 файла)
и подправил не совпавшие названия меток (добавив 0 в названии меток для первого Uart)

P.S. В Proteus всё равно не получилось запустить и для "произвольного" кристалла может не собраться из коробки.
Для режима самопрограммирования достаточно разместить слова отмеченные в листинге для размещения в бут секторе(порядка 100 байт используя org директиву)
и поэтому бут сектор в битах конфигурации может быть минимально возможным (например 128 байт если кристалл позволит)
Сообщение Добавлено: Вс апр 12, 2015 02:10
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
KPG писал(а):
Хотелось бы, что бы после сборки на "произвольный" кристал...

угу, хотелось бы...
KPG писал(а):
... и например тест в Proteus ...

насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio )
а с uart'ом да, раньше случались проблемы. связано было с кривой инициализацией
приемопередатчика, из-за чего "устаревшие" контроллеры на связь не выходили.
но сейчас (вроде как) это исправлено.
KPG писал(а):
...и какие могут быть рекомендации

chu писал(а):
Это я на сторонних сайтах говорю: amforth - без проблем! :work;
а на самом деле основная проблема - дотошная внимательность и обьемная рутина :zombypc;
:work2;
Сообщение Добавлено: Чт мар 19, 2015 19:24
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
Попробовал скомпилить последний релиз. Собралось с некоторыми варнингами начиная с Atmega16
Но что то опять где то Uart или прошивка не запускается в кристале или Proteus/

P.S. Хотелось бы, что бы после сборки на "произвольный" кристал и например тест в Proteus сборка откликалась по Uart
Что этому может поспособствовать? (и какие могут быть рекомендации) :)
Сообщение Добавлено: Чт мар 19, 2015 17:42
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
KPG писал(а):
...
Не понятно как в macros.asm in_ out_ влияют на появление ошибок для atmega64 ...

я в файле ...\core\words\no-jtag.asm сделал так
Код:
; ( -- )
; MCU
; disable jtag at runtime
VE_NOJTAG:
    .dw $FF05
    .db "-jtag",0
    .dw VE_HEAD
    .set VE_HEAD = VE_NOJTAG
XT_NOJTAG:
    .dw PFA_NOJTAG
PFA_NOJTAG:
    cli
    .ifdef MCUCSR
    in_ temp0, MCUCSR
    .else
    in_ temp0, MCUCR
    .endif

    ori temp0, ( 1<<JTD)

    .ifdef MCUCSR
    out_ MCUCSR, temp0
    out_ MCUCSR, temp0     ; needs to be done twice within 4 cycles
    .else
    out_ MCUCR, temp0
    out_ MCUCR, temp0     ; needs to be done twice within 4 cycles
    .endif
    sei
    jmp_ DO_NEXT

такая же ситуёвина со словом ( mode -- ) sleep
...\core\words\sleep.asm
Код:
;
;  sleep   ( mode -- )
;
;  mode selects the type of sleep mode to use.  Refer to the
;  SMCR documentation for details.  The following table is
;  based on the ATmega328P docs.
;
;  0 = Idle
;  1 = ADC noise reduction
;  2 = Power down
;  3 = Power save
;  4 = Reserved
;  5 = Reserved
;  6 = Standby
;  7 = External standby
;
;  Note that on the ATmega328P, Idle mode is the only sleep that
;  leaves interrupts enabled AND the USART running.  This means
;  you can wake up out of Idle mode just by sending a char to the
;  USART.  For all other sleep modes, you must either use reset
;  or provide some kind of timed or external event to wake up;
;  the USART won't work.


; ( mode -- )
; MCU
; put the controller into the specified sleep mode
VE_SLEEP:
    .dw $ff05
    .db "sleep", 0
    .dw VE_HEAD
    .set VE_HEAD = VE_SLEEP
XT_SLEEP:
    .dw PFA_SLEEP
PFA_SLEEP:
   andi   tosl, 7         ; leave only legal mode bits

    .ifdef  SMCR
   lsl      tosl      ; move to correct location (bits 3-1)
   ori      tosl, 1      ; set the SE bit
   out_   SMCR, tosl      ; set the sleep config
   sleep            ; nighty-night
   out_   SMCR, zerol      ; 0 protects against accidental sleeps

    .else            ; 0:15 28.02.2013 chu
   in_   tosh, MCUCR      ; save Interrupt Sense Control bits
   andi   tosh, 0x0F      ; se=0 sm=idle 0:15 28.02.2013
   swap   tosl                    ; move to correct location (bits 6-4)
   ori   tosl, ( 1<<SE )      ; set the SE bit
   or   tosl, tosh      ; restore Snterrupt Sense Control bits
   out_   MCUCR,tosl      ; set the sleep config
   sleep            ; nighty-night
   out_   MCUCR,tosh

    .endif
   loadtos            ; pop argument from stack
    jmp_    DO_NEXT

; last 1:06 09.04.2013 chu

правда в последних релизах эти слова отсутствуют (почемуто)...
зы. атымели такия атымели
Сообщение Добавлено: Пн мар 16, 2015 11:05
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
KPG писал(а):
и какие изменения в последних релизах? (т.к. вроде изменилась структура директорий c включением MSP430)
с релиза 5.2 amforth не шевелил :cry:
чтобы быть в курсе, имеет смысл следить за новостями amforth-devel — Development discussion and user support
Сообщение Добавлено: Пн мар 16, 2015 10:28
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
Атымели в своем репертуаре.
KPG писал(а):
...error: Illegal use of undefined or forward referenced symbol 'MCUSR' in conditional

Этот регистр в atmega64 называется MCUCSR.
KPG писал(а):
...error: Use of undefined or forward referenced symbol 'URXCaddr' in .org

atmega64 имеет два usart'а : 0 и 1
соответственно в файле проекта надо вместо
Код:
.include "drivers/usart.asm"
указать
Код:
.include "drivers/usart_0.asm"

ну или usart_1.asm
KPG писал(а):
...error: Overlap in .cseg...

скорее всего код не влезает в Boot Flash Section.(фьюзами BOOTSZ0 BOOTSZ1 должен быть сконфигурирован максимального размера). необходимо ознакомиться с разделами Memory Programming и Boot Loader Support (таблица Boot Size Configuration) даташита.

лечится перетасовкой include'ов
Сообщение Добавлено: Пн мар 16, 2015 10:15
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
Попробовал скомпилировать amForth (из своей конфигурации) для atmega64 и получаю такие ошибки
Код:
D:\-\amforth-5.new\core\macros.asm(58): error: Illegal use of undefined or forward referenced symbol 'MCUSR' in conditional
D:\-\amforth-5.new\core\macros.asm(66): error: Illegal use of undefined or forward referenced symbol 'MCUSR' in conditional
D:\-\amforth-5.new\core\drivers/usart-isr-rx.asm(4): error: Use of undefined or forward referenced symbol 'URXCaddr' in .org
D:\-\amforth-5.new\core\macros.asm(109): error: Overlap in .cseg: addr=0x1 conflicts with 0x0:0x2

при этом для atmega8, 16 и 32 cборка происходит без ошибок.
Не понятно как в macros.asm in_ out_ влияют на появление ошибок для atmega64 и ещё какое то перекрытие сегментов
и URXCaddr в .org

P.S. Что бы подправить по этим ошибкам при сборке amForth? (если кто сталкивался)
и какие изменения в последних релизах? (т.к. вроде изменилась структура директорий c включением MSP430)
Сообщение Добавлено: Вс мар 15, 2015 14:15
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
chu писал(а):
Цитата:
Release 5.6 is out and it is by far the biggest change in amforth ever.

Я тут решил попробовать FlashForth . Весьма годный образец.
Сообщение Добавлено: Ср дек 24, 2014 22:57
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
Цитата:
Release 5.6 is out and it is by far the biggest change in amforth ever.
It is the first version that runs on two different controller types:
AVR Atmegas and the TI MSP430 (Launchpad G2553).
...
Enjoy
Matthias
Сообщение Добавлено: Вт дек 23, 2014 07:22
  Заголовок сообщения:  Re: amForth залить в железку  Ответить с цитатой
Ilya, твой метод таймаута по счетчику Маттиас, творчески переработав, применяет в своем i2c-twi.frt из свежего релиза. :wink:
Ну и просьбу твою о строках тоже рассмотрели,да. :D
Сообщение Добавлено: Пн авг 18, 2014 08:53

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


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