Загрузка кода в процессор SEAforth40

48 views
Skip to first unread message

diver

unread,
Mar 25, 2010, 1:45:35 AM3/25/10
to SEAforth (Russian)
Доброго времени суток!

Помогите разобраться с проблемкой:

Собрал простую платку с SEAforth40 (версия чипа 7Jr1). На плате сам
процессор с подключенной к нему spi-памятью (at25df081)+. Все
остальные выводы выведены на отдельные разъемы.
Для работы с платкой используется отладочная плата с контроллером
lpc2148 в котором прошит lpcforth от MPE. Плата с lpc2148 используется
для прошивки spi-флеш + планируется использовать его для
самостоятельной загрузки S40c18 через любой из его загрузочных портов
(синхр или асинхр).

При включении (и после сброса) 40С18 выдает на параллельных портах
$25555, на остальных 0. Т.е., есть надежда, что сам процессор живой.
При сбросе на spi порту 40С18 проскакивают некие импульсы, после чего
на линиях 0. Тоже вроде логично.

Проблема в следующем: как в симуляторе VentureForth сформировать
загрузочный код для:
а) прошивки его в spi память (или заливки через spi порт например с
контроллера);
б) как сформировать загрузочный поток для асинхронного порта;
независимо от наличия SEAforth(R) Evaluation Kit 40C18 (её у меня нет и
не предвидится:-))
а)
Для формирования spi-boot кода делал следующее (из примера musicbox):

macro: s40>32
32 31 30 20 10 00 01 11
21 22 12 02 03 13 23 33
34 24 14 04 05 15 25 35
36 26 16 06 07 17 27 37
38 28 18 08 09 19 29 39
40 >stream
macro;

0 :xnode s40>32 xsave blink40.t18

полученный бинарный blink40.t18 прошивался в spi память.

б)
Для загрузки с асинхронного порта:

33Stream StreamSerial xsave serial33.t18

serial33.t18 затем считывался 32-битными словами, которые побитно,
начиная с младших передавались на вход 40C18-му.

или где-то тут ошибки?

Ну и последний вопрос: как ещё можно протестировать работу/неработу
процессора 40С18?
Скоро, конечно, допаяю вторую платку, сравню поведение процессоров, но
всё-таки....

Peter Sovietov

unread,
Mar 25, 2010, 5:16:56 AM3/25/10
to SEAforth (Russian)
Привет!

Для прошивки в spi-flash требуется использование слова >flash (см.
musicbox). Дело в том, что blink40.t18 представляет собой дамп
памяти симулятора, эти данные не предназначены для прямой записи куда-
либо. Слово >flash работает по USB: первым делом оно пересылает на
SEAforth код программатора, затем формирует необходимый заголовок и
пересылает данные blink40.t18, переведенные в нужный формат с помощью
[x]>USBdrive. Таким образом SEAforth сам прожигает данные для spi-
flash. Есть более современный аналог >flash, который программирует
данные с 33-его (serial) ядра.

Сохранить код в формате для внешнего программатора можно следующим
образом:

0 :xnode s40>32 StreamFlash bsave flash.bin

Для загрузки с serial используем:

0 :xnode s40>33 xserial serial.bin

Слова bsave и xserial определены в ptools.f. Я добавлю его к файлам
группы.

Ниже определение s40>33:

macro: s40>33
33 32 31 30 20 21 22 23 24 25
26 27 28 18 17 16 15 14 13 12
11 10 00 01 02 03 04 05 06 07
08 09 19 29 39 38 37 36 35 34
40 >stream
macro;

По вопросам, связанным с порядком загрузки с spi/serial полезно
посмотреть
файлы serial.vf и spi.vf в папке VentureForth/vf/c7Jr01

diver

unread,
Mar 25, 2010, 5:52:07 AM3/25/10
to seaforth...@googlegroups.com
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫!

О©╫О©╫О©╫О©╫О©╫О©╫О©╫!
О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ ptools.f. О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ bsave, xserial О©╫О©╫О©╫.
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ :-)

О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫

> О©╫О©╫О©╫О©╫О©╫О©╫!
> О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ spi-flash О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ >flash (О©╫О©╫.
> musicbox). О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫, О©╫О©╫О©╫ blink40.t18 О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫-
> О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫ >flash О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ USB: О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫
> SEAforth О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ blink40.t18, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫
> [x]>USBdrive. О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ SEAforth О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ spi-
> flash. О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ >flash, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ 33-О©╫О©╫О©╫ (serial) О©╫О©╫О©╫О©╫.
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫:


> 0 :xnode s40>32 StreamFlash bsave flash.bin

> О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ serial О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫:


> 0 :xnode s40>33 xserial serial.bin

> О©╫О©╫О©╫О©╫О©╫ bsave О©╫ xserial О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ ptools.f. О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫.
> О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ s40>33:


> macro: s40>33
> 33 32 31 30 20 21 22 23 24 25
> 26 27 28 18 17 16 15 14 13 12
> 11 10 00 01 02 03 04 05 06 07
> 08 09 19 29 39 38 37 36 35 34
> 40 >stream
> macro;

> О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ spi/serial О©╫О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫ serial.vf О©╫ spi.vf О©╫ О©╫О©╫О©╫О©╫О©╫ VentureForth/vf/c7Jr01

diver

unread,
Mar 25, 2010, 6:46:00 AM3/25/10
to SEAforth (Russian)
Спасибо!
Буду ждать ptools.f. В моей версии среды слов bsave, xserial в
ptools.f нет.
Отпишусь о результатах в группу :-)

Peter Sovietov

unread,
Mar 25, 2010, 6:48:48 AM3/25/10
to SEAforth (Russian)
У меня в данный момент почему-то нет прав для добавления файлов в
группу.

Вставляю ptools.f прямо в сообщение:

\ Author: Peter Sovietov
\ tools

: fcreate ( "file" - fd) bl parse w/o bin create-file throw ;

: xsave ( "file")
fcreate >r 0 >t here cells r@ write-file throw
r> close-file throw ;

: bsave ( "file")
fcreate >r FileBuf BufSize r@ write-file throw
r> close-file throw ;

: nerase 0 #page scrub 0 org ;
: xerase 0 here 1+ scrub 0 org ;

: ,s ( # a n - #+n) dup >r bounds do i c@ c, loop r> + ;

create stickers stickers #nodes cells 2* dup allot erase

: >sticker ( s n) node @ cells 2* stickers + 2! ;
: sticker> ( - s n) node @ cells 2* stickers + 2@ ;

: sticker" ( "text")
[char] " parse [f] here swap
2dup 2>r dup allot move 2r> >sticker ;

: >serial ( n - s) $3ffff and 6 lshift $ffffd2 xor ;
: serial> ( s - n) $ffffd2 xor 6 rshift ;

: xserial ( "file")
fcreate here 0 ?do i m@ >serial pad ! pad over 3 swap
write-file throw loop close-file throw ;

diver

unread,
Mar 27, 2010, 12:20:07 PM3/27/10
to SEAforth (Russian)
Платки с процессорами запустил. Обе. :-). Правда пробовал только
через spi-память
за ptools.f отдельное спасибо!

Некоторые замечания касательно "железа".
- фронт сигнала сброса должен быть крутым. Скажем кривая заряда
конденсатора уже не подходит.
- при использовании загрузочной spi-памяти линию ~cs (выбор
микросхемы) лучше подтянуть резистором (~2K) к питанию.

diver

unread,
Mar 29, 2010, 6:18:49 AM3/29/10
to SEAforth (Russian)
Вот как в итоге железо выглядит:

http://www.asu.ru/structure/faculties/fiztech_dep/vych/works/seaforth/

forther

unread,
Mar 29, 2010, 2:05:00 PM3/29/10
to SEAforth (Russian)
Красота! Уже знаете, чем конкретно этого красавца грузить будете?

diver

unread,
Mar 29, 2010, 8:36:53 PM3/29/10
to seaforth...@googlegroups.com
О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫ О©╫О©╫О©╫.

diver

unread,
Apr 8, 2010, 4:23:20 AM4/8/10
to SEAforth (Russian)
Пока среди вариантов использования плат
- детектор речи;
- попробую также запустить нейросеть - были попытки в симуляторе
реализации сети Хопфилда, хотя интереснее попробовать слоистые сети
или сети и радиально-базисными функциями;
- есть и более странный вариант - интерпретарор Java байт-кода :-)
правда ещё оперативной памяти подцепить надо...
Reply all
Reply to author
Forward
0 new messages