|
|
  |
Форт (Forth) и MSP430 для изучения, Программирование и исследование на Форт |
|
|
|
Nov 16 2012, 13:50
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Nov 16 2012, 17:23)  Таки извратился  Код : #define :; ok #define abc 123; ok abc . 123 ok Осталось придумать, кто будет ; дописывать в конце каждой строки Чегт, ещё одна засада! Код #define ADC10CTL1_ 0x01B2 /* ADC10 Control 1 */ 0X01B2? Как бы объяснить, что 0x == hex Может не дописывать ; а дополнительно (принудительно) или POSTPONE ; или [ Для определения 0х проще всего пересобрать Форт систему c изменённым NUMBER определителем, если это слово не векторизовано. А так, скорее всего, придётся читать в слове входной поток SOURCE TIB >IN или работа со строками и определять 0х и переключившись в шестнадцатиричную систему вводить остаток слова как цифру. P.S. Как то так можно попробовать. Цитата(MrYuran @ Nov 16 2012, 17:23)  Таки извратился  Код : #define :; ok #define abc 123; ok abc . 123 ok Осталось придумать, кто будет ; дописывать в конце каждой строки а если так прикинуть? Код : #define POSTPONE; POSTPONE :;
Сообщение отредактировал Kopa - Nov 16 2012, 14:46
|
|
|
|
|
Nov 16 2012, 13:53
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Kopa @ Nov 16 2012, 17:50)  а если так прикинуть? Код : #define POSTPONE; POSTPONE :; у, шайтан! Код : #define postpone; postpone :; ok #define abcd 1234 ok . 1234 ok Не, это я поторопился  Код abcd ok . -5433 ok abcd .s <3> 123 ABCD ABCD ok Ну да ладно, хватит наводок на выходные
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Nov 16 2012, 14:42
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Nov 16 2012, 17:37)  ok, попробую  Слова есть такие: Из этих слов сначало необходимо убрать "общепринятые" (стандартные) и посмотреть на введённые варианты 4e4th слов. P.S. Особо посмотреть на работу с разной памятью в контроллере. Цитата(Kopa @ Nov 16 2012, 16:38)  Самое простое, без обработки входного потока и "извращений" [code] : /* POSTPONE \ ; : #define , POSTPONE ; CREATE DOES> POSTPONE CONSTANT ; \ будет ли и с этим загадка? 0 #define ABC 123 , ; А так? Для компиляции в тело кода могут быть введены аналоги слов , @ и вероятно стоит использовать слово LITERAL для компиляции чисел со стека внутри слова Бывает, что тело кода отделяют от заголовков (хранимых отдельно) и связь между частями слова можно установить словами CFA>NFA >BODY навыки в "боди-билдинге" данной Форт системы могут помочь понять, что не "срослось" P.S. Жаль нет матчасти под рукой, надо идти покупать, заказывать или сделать симулятор МSP430 или приспособить существующий, а в Proteus-е вроде есть MSP430. Цитата(MrYuran @ Nov 16 2012, 17:53)  Не, это я поторопился  Что предсказуемо т.к. создалось пустое слово Цитата(MrYuran @ Nov 16 2012, 17:37)  ok, попробую  Хотя, полюбому матчасть учить. Слова есть такие: Чем помочь с словами? P.S. Можно непосредственно изменить буфер входного потока записав вместо 0х например H с пробелом, при этом : H HEX ;
Сообщение отредактировал Kopa - Nov 16 2012, 15:21
|
|
|
|
|
Nov 17 2012, 06:57
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
прошу пардону, это не флуд, это - "поэтическая минутка" в топик, графоманское рукоблудие: Код \ Thinking Forth : ЗАДАЧА СЛОВА ОПИСАНИЯ ПРОБЛЕМЫ;
|
|
|
|
|
Nov 17 2012, 08:22
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
Цитата(Kopa @ Nov 16 2012, 21:42)  P.S. Жаль нет матчасти под рукой, надо идти покупать, заказывать или сделать симулятор МSP430 или приспособить существующий, а в Proteus-е вроде есть MSP430. Есть. В коробочке лежат. Могу поделиться, на выбор - MSP430F235 либо MSP430F149, ( 235-х у меня несколько) ( либо отдам оба сразу ). Но, - ни обвязки ни макетки ни программатора ни коммуникаций. В хорошие руки - не жалко. Ваш выбор. Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт. Похоже для сборки camelforth430 не годиться. Что делать? ( 30-дневную версию не предлагать: копаться буду долго, и мне не нужна неожиданное "опа!", когда "уже вот-вот"  ) Или это ограничение только на кодогенерацию компилятора С ? Просветите, темный я.
Сообщение отредактировал chu - Nov 17 2012, 08:57
|
|
|
|
|
Nov 17 2012, 14:08
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(chu @ Nov 17 2012, 11:22)  Есть. В коробочке лежат. Могу поделиться, на выбор - MSP430F235 либо MSP430F149, ( 235-х у меня несколько) ( либо отдам оба сразу ). Но, - ни обвязки ни макетки ни программатора ни коммуникаций. В хорошие руки - не жалко. Ваш выбор. Спасибо, но думаю с моими "не совсем прямыми руками" и базовыми знаниями архитектуры MSP430, в данном вопросе, это не выход  (пока на столе лежит, по случаю купленный, Atмega 8535) Цитата(chu @ Nov 17 2012, 11:22)  Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт. Похоже для сборки camelforth430 не годиться. Что делать? Как вариант, ограничиться объёмом кода Форт ядра в 4 Кбайт  А Си обязательно использовать?
Сообщение отредактировал Kopa - Nov 17 2012, 14:10
|
|
|
|
|
Nov 17 2012, 14:23
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
Цитата(Kopa @ Nov 17 2012, 21:08)  (пока на столе лежит, по случаю купленный, Atмega 8535) 8K Flash - маловато будет. Для amforth'a. Илья на робофоруме на таком http://devicter.ru/goods/Arduino-Nano-V3-ATmega amforth гоняет. Строит что-то с часами (ds1307), однопроводными http://devicter.ru/goods/sensor-temperatur...chnyj?from=MDg3 , rfid считывателем пластиковых карт http://devicter.ru/goods/datchik-schityvan...-kart?from=MDg3и, кажется GSM модемом. с интересом наблюдаю. Цитата(Kopa @ Nov 17 2012, 21:08)  А Си обязательно использовать? Свят-свят, ассемблер, только ассемблер  Верблюжьи исходники - на асме.
Сообщение отредактировал chu - Nov 17 2012, 14:35
|
|
|
|
|
Nov 17 2012, 14:47
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(chu @ Nov 17 2012, 18:23)  8K Flash - маловато будет. Для amforth'a. Для встроенного варианта Форт системы, может быть и мало, но есть ещё кросс-компиляция с "убиранием" в целевом коде не задействованных слов. (а текущий базис рабочих слов, можно при необходимости и постепенно прошивать) и управление выполнением целевого кода в кросс-среде + использовать не один, а два и более (может и разных), например, контроллеров (варианты их совместного использования можно продумать) кол-во интерфейсов и линий ввода/вывода будет больше и можно распределить "вычилительные" задачи удобно. Цитата(chu @ Nov 17 2012, 18:23)  Свят-свят, ассемблер, только ассемблер  Верблюжьи исходники - на асме. Тогда может проще их "пересобрать", например, с использованием SPF4 (с пониманием ассемблерных команд у MSP30 всё неплохо) были вроде уже сделаны некоторые варианты от Михаила.
Сообщение отредактировал Kopa - Nov 17 2012, 15:00
|
|
|
|
|
Nov 17 2012, 15:10
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
Цитата(Kopa @ Nov 17 2012, 21:47)  Тогда может проще их "пересобрать", например, с использованием SPF4 (с пониманием ассемблерных команд у MSP30 всё неплохо) Да, буду пересобирать camelforth430 сам. Кросс пока не интересует. Интересует полноценная форт-система на кристалле. Аналогичная amforth"у. Вот MrYuran говорит: нет прерываний. Будем поглядеть что можно сделать. Опять же, round-robin multitasker. А так же встроенный ассемблер. Но это уже кажется невпихуемо. Или впихуемо, но несуразно для 16 Кбайт у F235-го. Вот, както так, почти "свой"  форт, но не сразу...
Сообщение отредактировал chu - Nov 17 2012, 15:13
|
|
|
|
|
Nov 17 2012, 22:25
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384

|
Цитата(chu @ Nov 17 2012, 12:22)  Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт. Похоже для сборки camelforth430 не годиться. Что делать? ( 30-дневную версию не предлагать: копаться буду долго, и мне не нужна неожиданное "опа!", когда "уже вот-вот"  ) Или это ограничение только на кодогенерацию компилятора С ? Просветите, темный я. Kickstart обязан собирать camelforth430, форт-система на ассемблере, а ограничение по коду только для С. Под эту среду он же и сделан. Цитата The IDE includes a code size limited C-Compiler/Unlimited Assembler/FET Debugger/Simulator. T Прерывания форту ортогональны, вектора в camelforth430 перенесены в RAM и заглушены. Нужно написать свой обработчик на ассемблере. Если есть форт-асссемблер, то можно обработчики ваять прямо в интерпретаторе. ИМХО 16К флеша для MSP430 для забав с фортом более чем достаточно, скорее всего в любом варианте. На меньшее для начала лучше не ориентироваться. В принципе форт-систему можно запустить на IAR и из-под эмулятором, без железки. Терминал в отладчике C-Spy есть, нужно только stdio прикрутить. В ограниченной версии может не выйти из-за ограничений по C. Кросс-компиляция она полезна и для полноценной системы на кристале. Без нее новые слова добавлять только через компиляцию на железке (или ручками делать кросс-компиляцию), а это способ пригодный только для простых случаев, типа обучения.
|
|
|
|
|
Nov 19 2012, 06:17
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(chu @ Nov 17 2012, 18:10)  А так же встроенный ассемблер. Имеется в репозитории в виде файла was4.f, а также в виде асм-модуля Ещё у немцев на сайте есть интересные примеры, в т.ч дизасм Код ; This small 430 assembler produces code at IHERE ; WAS means Willems ASsembler for MSP430 and 4E4th
; Complete security by checking for valid registers ; and extended checking on addressing errors ; 4 nibbles form dual opcode | instr. | S-reg. | modes | D-reg. | ; Single opcode | 9-bit instruc. | mode | D/S-reg | ; Conditionals | 6-bit instr | 10-bit rel. branch | ; Only basic opcodes: 03DE bytes ; With corrected and shrinked an control structs: 05C0 bytes ; Together with DAS6.F only 0A16 bytes ; When used together with DAS, first compile DAS !!!! DAS - я так понимаю, дизасм. Вместе с асмом 2,5 кила из оставшихся восьми. Мне проблема на данном этапе видится несколько в другом. Очень мало ОЗУ оставили пользователю, несколько десятков байт. Без переразметки ничего более-менее путного не создать. Логично было бы урезать стеки и особенно входной буфер, заодно будет стимул вводить как можно более короткие слова. В качестве лирического отступления: Принес в выходные платку ланчпада домой, показал 10-летнему сыну, как "мозги для нашего будущего робота". Несколько строчек в терминале Код : зелёный green; : красный red; : вкл cset; : выкл cclr;
красный вкл зелёный вкл красный выкл зелёный выкл
...
красный мигнуть итд произвели неизгладимое впечатление: "круто, он учится понимать новые слова!"
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Nov 19 2012, 15:33
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246

|
Цитата(MrYuran @ Nov 19 2012, 13:17)  Мне проблема на данном этапе видится несколько в другом. Очень мало ОЗУ оставили пользователю, несколько десятков байт. Без переразметки ничего более-менее путного не создать. Логично было бы урезать стеки и особенно входной буфер, заодно будет стимул вводить как можно более короткие слова. Код ; ---------------------------------------------------------------------- ; init430G2553.s43 - reset interupt service routine - MSP430G2553 ; ----------------------------------------------------------------------
; CamelForth RAM memory map: ; UP User Pointer, 2 bytes ; UAREA User area, 32 bytes ; UAREA+20h HOLD area, 40 bytes, grows down from end ; UAREA+48h PAD buffer, 88 bytes, must follow HOLD area ; UAREA+A0h Parameter stack, 128 B, grows down from end ; UAREA+120h Return stack, 128 B, grows down from end ; UAREA+1A0h TIB Terminal Input Buffer, 88 bytes Действительно, стеки можно сократить, раза в четыре...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|