Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: amForth залить в железку |
|
|
На страничке amForth появился раздел Проекты на amForth с описанием
На страничке amForth появился раздел [url=http://amforth.sourceforge.net/Projects/index.html]Проекты на amForth с описанием[/url]
|
|
|
|
Добавлено: Пт авг 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
[quote="KPG"]В библиотечном файле quotations.frt есть "небольшая" прореха приводящая к неработоспособности кода в последних сборках ... сообщить о выявленном дефекте кода. [/quote]
[quote="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[/quote]
|
|
|
|
Добавлено: Вт июн 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 - фиксируемые текущие ошибки пропали
В библиотечном файле quotations.frt есть "небольшая" прореха приводящая к неработоспособности кода в последних сборках
[code] \ 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 [/code] Тест кода из amForth [code] \ 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" [/code] P.S. Возможно имеет смысл сообщить о выявленном дефекте кода. В некоторых файлах не казаны зависимости (например, что bitnames требует builds> определение.
[quote="KPG"] Пробовал через ТераТерм загружать код, но бывает возникают какие то сбои на ровном месте и использование задержек в настройках COM порта не помогает.[/quote] В конфигурации 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 порта не помогает.
[quote="chu"]насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio )[/quote] А через ключи в 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 )
[quote="KPG"]P.S. В Proteus всё равно не получилось запустить и для "произвольного" кристалла может не собраться из коробки. [/quote] [quote="chu"]насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio )[/quote] [url=http://imglink.ru/show-image.php?id=92ff4d21d76ba0a83d04149ee83af91f][img]http://imglink.ru/thumbnails/15-04-15/ea0d81509988973f0f0a241fde06b359.jpg[/img][/url]
|
|
|
|
Добавлено: Ср апр 15, 2015 09:54 |
|
|
|
|
|
Заголовок сообщения: |
Re: amForth залить в железку |
|
|
Заметил одну "особенность" при сборке amForth5.8 для Atmega162. Всё собралось, но первый Uart не заработал пока в template не оставил uart, вместо (логически верного uart_0 файла) и подправил не совпавшие названия меток (добавив 0 в названии меток для первого Uart)
P.S. В Proteus всё равно не получилось запустить и для "произвольного" кристалла может не собраться из коробки. Для режима самопрограммирования достаточно разместить слова отмеченные в листинге для размещения в бут секторе(порядка 100 байт используя org директиву) и поэтому бут сектор в битах конфигурации может быть минимально возможным (например 128 байт если кристалл позволит)
Заметил одну "особенность" при сборке 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 - без проблем! а на самом деле основная проблема - дотошная внимательность и обьемная рутина
[quote="KPG"] Хотелось бы, что бы после сборки на "произвольный" кристал...[/quote] угу, хотелось бы... [quote="KPG"]... и например тест в Proteus ...[/quote] насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio ) а с uart'ом да, раньше случались проблемы. связано было с кривой инициализацией приемопередатчика, из-за чего "устаревшие" контроллеры на связь не выходили. но сейчас (вроде как) это исправлено. [quote="KPG"]...и какие могут быть рекомендации [/quote] [quote="chu"] Это я на сторонних сайтах говорю: amforth - без проблем! :work; а на самом деле основная проблема - дотошная внимательность и обьемная рутина :zombypc; [/quote] :work2;
|
|
|
|
Добавлено: Чт мар 19, 2015 19:24 |
|
|
|
|
|
Заголовок сообщения: |
Re: amForth залить в железку |
|
|
Попробовал скомпилить последний релиз. Собралось с некоторыми варнингами начиная с Atmega16 Но что то опять где то Uart или прошивка не запускается в кристале или Proteus/ P.S. Хотелось бы, что бы после сборки на "произвольный" кристал и например тест в Proteus сборка откликалась по Uart Что этому может поспособствовать? (и какие могут быть рекомендации)
Попробовал скомпилить последний релиз. Собралось с некоторыми варнингами начиная с 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 правда в последних релизах эти слова отсутствуют (почемуто)... зы. атымели такия атымели
[quote="KPG"]... Не понятно как в macros.asm in_ out_ влияют на появление ошибок для atmega64 ...[/quote] я в файле [b]...\core\words\no-jtag.asm[/b] сделал так [code] ; ( -- ) ; 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 [/code] такая же ситуёвина со словом [b]( mode -- ) sleep[/b] [b]...\core\words\sleep.asm[/b][code] ; ; 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[/code] правда в последних релизах эти слова отсутствуют (почемуто)... зы. [i]атымели[/i] такия [i]атымели[/i]
|
|
|
|
Добавлено: Пн мар 16, 2015 11:05 |
|
|
|
|
|
Заголовок сообщения: |
Re: amForth залить в железку |
|
|
KPG писал(а): и какие изменения в последних релизах? (т.к. вроде изменилась структура директорий c включением MSP430) с релиза 5.2 amforth не шевелил чтобы быть в курсе, имеет смысл следить за новостями amforth-devel — Development discussion and user support
[quote="KPG"]и какие изменения в последних релизах? (т.к. вроде изменилась структура директорий c включением MSP430)[/quote] с релиза [b]5.2[/b] amforth не шевелил :cry: чтобы быть в курсе, имеет смысл следить за новостями [url=http://sourceforge.net/p/amforth/mailman/amforth-devel/]amforth-devel — Development discussion and user support[/url]
|
|
|
|
Добавлено: Пн мар 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'ов
[i]Атымели[/i] в своем репертуаре. [quote="KPG"] ...error: Illegal use of undefined or forward referenced symbol 'MCUSR' in conditional[/quote] Этот регистр в atmega64 называется [b]MCUCSR[/b]. [quote="KPG"] ...error: Use of undefined or forward referenced symbol 'URXCaddr' in .org[/quote] atmega64 имеет два usart'а : 0 и 1 соответственно в файле проекта надо вместо [code].include "drivers/usart.asm" [/code] указать [code].include "drivers/usart_0.asm"[/code] ну или [i]usart_1.asm[/i] [quote="KPG"]...error: Overlap in .cseg...[/quote] скорее всего код не влезает в [i]Boot Flash Section[/i].(фьюзами [i]BOOTSZ0 BOOTSZ1[/i] должен быть сконфигурирован максимального размера). необходимо ознакомиться с разделами [i]Memory Programming[/i] и [i]Boot Loader Support[/i] (таблица [i]Boot Size Configuration[/i]) даташита.
лечится перетасовкой [i]include[/i]'ов
|
|
|
|
Добавлено: Пн мар 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)
Попробовал скомпилировать amForth (из своей конфигурации) для atmega64 и получаю такие ошибки [code] 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 [/code] при этом для 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 . Весьма годный образец.
[quote="chu"][quote]Release 5.6 is out and it is by far the biggest change in amforth ever. [/quote][/quote] Я тут решил попробовать [url=http://flashforth.com/]FlashForth[/url] . Весьма годный образец.
|
|
|
|
Добавлено: Ср дек 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
[quote]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[/quote]
|
|
|
|
Добавлено: Вт дек 23, 2014 07:22 |
|
|
|
|
|
Заголовок сообщения: |
Re: amForth залить в железку |
|
|
Ilya, твой метод таймаута по счетчику Маттиас, творчески переработав, применяет в своем i2c-twi.frt из свежего релиза. Ну и просьбу твою о строках тоже рассмотрели,да.
Ilya, твой метод таймаута по счетчику Маттиас, творчески переработав, применяет в своем i2c-twi.frt из свежего релиза. :wink: Ну и просьбу твою о строках тоже рассмотрели,да. :D
|
|
|
|
Добавлено: Пн авг 18, 2014 08:53 |
|
|
|
|