MrYuran 27 21 июня, 2009 Опубликовано 21 июня, 2009 · Жалоба Да, обратите внимание (если еще не зарегистрировались на Forth форуме), что регистрация не автоматическая - надо писать письмо админу (бо спамерюги замучили) Да я вроде уж пытался, да что-то помешало... А может, не помешало, надо бы почту проверить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 22 июня, 2009 Опубликовано 22 июня, 2009 · Жалоба Да я вроде уж пытался, да что-то помешало... А может, не помешало, надо бы почту проверить. Аккаунт уже активирован:) P.S. Один из возможных вариантов сделать Форт для MSP430 это использовать базис PDP-11 для tinyboot т.к. архитектуры близкие. n-ое время назад была первая, не завершённая, попытка сделать это:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 23 июня, 2009 Опубликовано 23 июня, 2009 · Жалоба Всё, временно перемещаюсь на fforum , а сюда выложу конечный результат (если будет), ну или промежуточный. (ые) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 7 июля, 2009 Опубликовано 7 июля, 2009 · Жалоба Запись в регистры ADC12 произведена с консоли, напрямую, соответственно таким же образом и считаны ( приведенный "код" - копипаст с форт-консоли ). А каким фортом для MSP пользуетесь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба А каким фортом для MSP пользуетесь? Вынужден огорчить :laughing: , никакого особого форта для MSP430 у меня нет, пишу на ассемблере. НО! Forth - это прежде всего технология программирования ( философия решения задач ), и уже затем - язык и всё такое прочее... Первый источник идеи - A 3-INSTRUCTION FORTH FOR EMBEDDED SYSTEMS WORK http://pygmy.utoh.org/3ins4th.html Второй - виртуальная форт-машина, аналогичная имеющейся в SwiftX MSP430, а также небольшой набор традиционных для форта примитивов, реализованных на ассемблере. Плюс форт-сервер ( в терминологии не уверен) созданный в ростокском универе во времена оно. Высокоуровневое определение этого сервера : : Server BEGIN addr execute ACK char_send AGAIN ; Как это работает. Иаровский асм генерит код , который шьется в чип, кроме этого генерит "таблицу перекрестных ссылок" ( my_application.map ), в которой приводится однозначное соответствие цепочка_символов == число. Вырезка из этого файлика скармливается SPF4: \ \ \ в словаре XTARGET создаются словари MSP430, TARGET, XDEBUG \ VOCABULARY XTARGET ALSO XTARGET DEFINITIONS VOCABULARY MSP430 \ определения регистров и битов процессора VOCABULARY TARGET \ application. слова-константы содержат адреса целевых п/п VOCABULARY XDEBUG \ обмен с target, отладочные\тестовые "скрипты" \ \ ALSO MSP430 DEFINITIONS : EQU CONSTANT ; S" E:\vm_working\mast_tst\f235\Host\msp430x23x.f" INCLUDED \ \ ALSO TARGET DEFINITIONS TRUE VALUE MAP? \ Благодарность VoidVolker. С его великодушной помощью написано следующее: : NUMBER 0 0 2SWAP >NUMBER NIP IF 2DROP FALSE ELSE D>S TRUE THEN ; : DO-MY CREATED BASE @ HEX NextWord NUMBER 0= THROW , BASE ! DOES> @ ; : NOTFOUND ( a u -- ) 2DUP 2>R ['] NOTFOUND CATCH IF 2DROP MAP? IF 2R@ DO-MY ELSE -2003 THROW THEN THEN RDROP RDROP ; S" E:\vm_working\mast_tst\f235\Host\app.f" INCLUDED FALSE TO MAP? MSP430 по сбросу и после необходимой инициализации крутится в п/п Server - ожидает 16-бит слово и делает переход по этому адресу. ; ; execute_: ; ( xt -- ) mov T,W tpop br W ; ACK EQU 0x90 ; server: bis.b #BIT0,&P1OUT ; LED+ call #addr bic.b #BIT0,&P1OUT ; LED- call #execute_ tpush mov #ACK,T call #char_out jmp server ; Всё! :07: Остальным я рулю из консоли SPF4. ALSO XDEBUG DEFINITIONS \ ********************************************************* \ работа с целевым процессором \ 0x90 VALUE ACK \ подтверждение от target device : ok? ( c -- ) CommIn DUP ACK = NOT IF CR ." target no ACK,received=" SPACE . ABORT ELSE DROP THEN ; : c>t ( c -- ) \ переслать байт, принять эхо, сравнить DUP CommOut CommIn 2DUP = NOT IF CR . ." <-<" . CR ." bad connection. need to reset target" ABORT THEN 2DROP ; : >t ( n -- ) \ переслать слово (2бйта) DUP 0xFF AND c>t 8 RSHIFT c>t ; : t> ( -- n ) \ принять 2байта от target device CommIn 0xFF AND CommIn 0xFF AND 8 LSHIFT + ; : >x >t ok? ; \ выполнить п/п в target device : >s ( n -- ) \ положить слово на верхушку целевого стека параметров addr >t >t ok? ; : s> ( -- n ) \ eword >t t> ok? ; : t! ( n a -- ) \ записать n по адресу a DUP RAMEND > ABORT" address not valid" \ ОЗУ и периферия SWAP >s DUP >s 0x00 0x100 WITHIN IF cstore ELSE store THEN >x ; : t@ ( a -- n ) \ прочитать содержимое a DUP >s 0x00 0x100 WITHIN \ байт? IF cfetch ELSE fetch THEN >x s> ; Такой ( наверное довольно громоздкий ) подход позволяет не прошив ни байта кода сверх имеющегося, прощупать каждый регистр, каждый бит HW периферии ( как на борту процессора так и вовне ), настроить периферию на любой режим работы и выбрать оптимальный\целесообразный и только потом написать фрагмент кода ( на асме ) с последующим тестированием ( обязательно ). Зачастую этот процесс идет параллельно с изучением datasheet на соответствующий периферийный модуль. Конечно, дело не ограничивается установкой битов, чтением регистров и тд. Взможность писать форт-определения ( в SPF4 ), реализующие какие-то более сложные алгоритмы работы target device, присутствуют в полной мере. Ну вот, как-то так. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Ну вот, как-то так. ;) Понятно, спасибо. Я примерно то же в CamelForth проделывал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Как это работает.Правильно ли я понял, что сам шитый код и стек формируются и существуют на хост-машине, а таргет только исполняет базовый набор примитивов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Правильно ли я понял, что сам шитый код и стек формируются и существуют на хост-машине, а таргет только исполняет базовый набор примитивов? Да, практически так и есть. Кроме базового набора примитивов имеется также коллекция ассемблерных подпрограмм, обслуживающих аппаратные модули контроллера. Вероятно позже будет реализован внутренний ( адресный ) интерпертатор ШК для обеспечения верхнего уровня функциональности создаваемого прибора. Иными словами, в МК форта в чистом виде как бы и нет, но дух форта - присутствует B) В основном эксплуатируется заточенность форта для тестирования/отладки "железа". PS. Moving Forth Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Интересный подход... А что если прогнать через SPF сишный листинг (см. ниже) и заставить его сделать зеркало целевой системы на писишном хосте. 1102U_430_00_00.elf: file format elf32-msp430 SYMBOL TABLE: 00001100 l d .text 00000000 .text 00000200 l d .data 00000000 .data 0000020c l d .bss 00000000 .bss 0000ffe0 l d .vectors 00000000 .vectors 00000000 l d .stab 00000000 .stab 00000000 l d .stabstr 00000000 .stabstr 00000130 l *ABS* 00000000 MPY 00000132 l *ABS* 00000000 MPYS 00000134 l *ABS* 00000000 MAC 00000136 l *ABS* 00000000 MACS 00000138 l *ABS* 00000000 OP2 0000013a l *ABS* 00000000 RESLO 0000013c l *ABS* 00000000 RESHI 0000013e l *ABS* 00000000 SUMEXT 00000020 l *ABS* 00000000 P1IN 00000021 l *ABS* 00000000 P1OUT 00000022 l *ABS* 00000000 P1DIR 00000023 l *ABS* 00000000 P1IFG 00000024 l *ABS* 00000000 P1IES 00000025 l *ABS* 00000000 P1IE 00000026 l *ABS* 00000000 P1SEL 00000028 l *ABS* 00000000 P2IN 00000029 l *ABS* 00000000 P2OUT 0000002a l *ABS* 00000000 P2DIR 0000002b l *ABS* 00000000 P2IFG 0000002c l *ABS* 00000000 P2IES 0000002d l *ABS* 00000000 P2IE 0000002e l *ABS* 00000000 P2SEL 00000018 l *ABS* 00000000 P3IN 00000019 l *ABS* 00000000 P3OUT 0000001a l *ABS* 00000000 P3DIR 0000001b l *ABS* 00000000 P3SEL 0000001c l *ABS* 00000000 P4IN 0000001d l *ABS* 00000000 P4OUT 0000001e l *ABS* 00000000 P4DIR 0000001f l *ABS* 00000000 P4SEL 00000030 l *ABS* 00000000 P5IN 00000031 l *ABS* 00000000 P5OUT 00000032 l *ABS* 00000000 P5DIR 00000033 l *ABS* 00000000 P5SEL 00000034 l *ABS* 00000000 P6IN 00000035 l *ABS* 00000000 P6OUT 00000036 l *ABS* 00000000 P6DIR 00000037 l *ABS* 00000000 P6SEL 00000070 l *ABS* 00000000 U0CTL 00000071 l *ABS* 00000000 U0TCTL 00000072 l *ABS* 00000000 U0RCTL 00000073 l *ABS* 00000000 U0MCTL 00000074 l *ABS* 00000000 U0BR0 00000075 l *ABS* 00000000 U0BR1 00000076 l *ABS* 00000000 U0RXBUF 00000077 l *ABS* 00000000 U0TXBUF 00000070 l *ABS* 00000000 UCTL 00000071 l *ABS* 00000000 UTCTL 00000072 l *ABS* 00000000 URCTL 00000073 l *ABS* 00000000 UMCTL 00000074 l *ABS* 00000000 UBR0 00000075 l *ABS* 00000000 UBR1 00000076 l *ABS* 00000000 RXBUF 00000077 l *ABS* 00000000 TXBUF 00000070 l *ABS* 00000000 UCTL0 00000071 l *ABS* 00000000 UTCTL0 00000072 l *ABS* 00000000 URCTL0 00000073 l *ABS* 00000000 UMCTL0 00000074 l *ABS* 00000000 UBR00 00000075 l *ABS* 00000000 UBR10 00000076 l *ABS* 00000000 RXBUF0 00000077 l *ABS* 00000000 TXBUF0 00000070 l *ABS* 00000000 UCTL_0 00000071 l *ABS* 00000000 UTCTL_0 00000072 l *ABS* 00000000 URCTL_0 00000073 l *ABS* 00000000 UMCTL_0 00000074 l *ABS* 00000000 UBR0_0 00000075 l *ABS* 00000000 UBR1_0 00000076 l *ABS* 00000000 RXBUF_0 00000077 l *ABS* 00000000 TXBUF_0 00000050 l *ABS* 00000000 I2CIE 00000051 l *ABS* 00000000 I2CIFG 00000052 l *ABS* 00000000 I2CNDAT 00000071 l *ABS* 00000000 I2CTCTL 00000072 l *ABS* 00000000 I2CDCTL 00000073 l *ABS* 00000000 I2CPSC 00000074 l *ABS* 00000000 I2CSCLH 00000075 l *ABS* 00000000 I2CSCLL 00000076 l *ABS* 00000000 I2CDRB 00000076 l *ABS* 00000000 I2CDRW 00000118 l *ABS* 00000000 I2COA 0000011a l *ABS* 00000000 I2CSA 0000011c l *ABS* 00000000 I2CIV 00000076 l *ABS* 00000000 I2CDR 00000078 l *ABS* 00000000 U1CTL 00000079 l *ABS* 00000000 U1TCTL 0000007a l *ABS* 00000000 U1RCTL 0000007b l *ABS* 00000000 U1MCTL 0000007c l *ABS* 00000000 U1BR0 0000007d l *ABS* 00000000 U1BR1 0000007e l *ABS* 00000000 U1RXBUF 0000007f l *ABS* 00000000 U1TXBUF 00000078 l *ABS* 00000000 UCTL1 00000079 l *ABS* 00000000 UTCTL1 0000007a l *ABS* 00000000 URCTL1 0000007b l *ABS* 00000000 UMCTL1 0000007c l *ABS* 00000000 UBR01 0000007d l *ABS* 00000000 UBR11 0000007e l *ABS* 00000000 RXBUF1 0000007f l *ABS* 00000000 TXBUF1 00000078 l *ABS* 00000000 UCTL_1 00000079 l *ABS* 00000000 UTCTL_1 0000007a l *ABS* 00000000 URCTL_1 0000007b l *ABS* 00000000 UMCTL_1 0000007c l *ABS* 00000000 UBR0_1 0000007d l *ABS* 00000000 UBR1_1 0000007e l *ABS* 00000000 RXBUF_1 0000007f l *ABS* 00000000 TXBUF_1 00000055 l *ABS* 00000000 SVSCTL 00000128 l *ABS* 00000000 FCTL1 0000012a l *ABS* 00000000 FCTL2 0000012c l *ABS* 00000000 FCTL3 00000059 l *ABS* 00000000 CACTL1 0000005a l *ABS* 00000000 CACTL2 0000005b l *ABS* 00000000 CAPD 0000012e l *ABS* 00000000 TA0IV 00000160 l *ABS* 00000000 TA0CTL 00000170 l *ABS* 00000000 TA0R 00000162 l *ABS* 00000000 TA0CCTL0 00000164 l *ABS* 00000000 TA0CCTL1 00000172 l *ABS* 00000000 TA0CCR0 00000174 l *ABS* 00000000 TA0CCR1 00000166 l *ABS* 00000000 TA0CCTL2 00000176 l *ABS* 00000000 TA0CCR2 0000011e l *ABS* 00000000 TBIV 00000180 l *ABS* 00000000 TBCTL 00000190 l *ABS* 00000000 TBR 00000182 l *ABS* 00000000 TBCCTL0 00000184 l *ABS* 00000000 TBCCTL1 00000186 l *ABS* 00000000 TBCCTL2 00000192 l *ABS* 00000000 TBCCR0 00000194 l *ABS* 00000000 TBCCR1 00000196 l *ABS* 00000000 TBCCR2 00000188 l *ABS* 00000000 TBCCTL3 0000018a l *ABS* 00000000 TBCCTL4 0000018c l *ABS* 00000000 TBCCTL5 0000018e l *ABS* 00000000 TBCCTL6 00000198 l *ABS* 00000000 TBCCR3 0000019a l *ABS* 00000000 TBCCR4 0000019c l *ABS* 00000000 TBCCR5 0000019e l *ABS* 00000000 TBCCR6 00000056 l *ABS* 00000000 DCOCTL 00000057 l *ABS* 00000000 BCSCTL1 00000058 l *ABS* 00000000 BCSCTL2 000001a0 l *ABS* 00000000 ADC12CTL0 000001a2 l *ABS* 00000000 ADC12CTL1 000001a4 l *ABS* 00000000 ADC12IFG 000001a6 l *ABS* 00000000 ADC12IE 000001a8 l *ABS* 00000000 ADC12IV 00000140 l *ABS* 00000000 ADC12MEM0 00000142 l *ABS* 00000000 ADC12MEM1 00000144 l *ABS* 00000000 ADC12MEM2 00000146 l *ABS* 00000000 ADC12MEM3 00000148 l *ABS* 00000000 ADC12MEM4 0000014a l *ABS* 00000000 ADC12MEM5 0000014c l *ABS* 00000000 ADC12MEM6 0000014e l *ABS* 00000000 ADC12MEM7 00000150 l *ABS* 00000000 ADC12MEM8 00000152 l *ABS* 00000000 ADC12MEM9 00000154 l *ABS* 00000000 ADC12MEM10 00000156 l *ABS* 00000000 ADC12MEM11 00000158 l *ABS* 00000000 ADC12MEM12 0000015a l *ABS* 00000000 ADC12MEM13 0000015c l *ABS* 00000000 ADC12MEM14 0000015e l *ABS* 00000000 ADC12MEM15 00000080 l *ABS* 00000000 ADC12MCTL0 00000081 l *ABS* 00000000 ADC12MCTL1 00000082 l *ABS* 00000000 ADC12MCTL2 00000083 l *ABS* 00000000 ADC12MCTL3 00000084 l *ABS* 00000000 ADC12MCTL4 00000085 l *ABS* 00000000 ADC12MCTL5 00000086 l *ABS* 00000000 ADC12MCTL6 00000087 l *ABS* 00000000 ADC12MCTL7 00000088 l *ABS* 00000000 ADC12MCTL8 00000089 l *ABS* 00000000 ADC12MCTL9 0000008a l *ABS* 00000000 ADC12MCTL10 0000008b l *ABS* 00000000 ADC12MCTL11 0000008c l *ABS* 00000000 ADC12MCTL12 0000008d l *ABS* 00000000 ADC12MCTL13 0000008e l *ABS* 00000000 ADC12MCTL14 0000008f l *ABS* 00000000 ADC12MCTL15 000001c0 l *ABS* 00000000 DAC12_0CTL 000001c2 l *ABS* 00000000 DAC12_1CTL 000001c8 l *ABS* 00000000 DAC12_0DAT 000001ca l *ABS* 00000000 DAC12_1DAT 00000122 l *ABS* 00000000 DMACTL0 00000124 l *ABS* 00000000 DMACTL1 000001e0 l *ABS* 00000000 DMA0CTL 000001e2 l *ABS* 00000000 DMA0SA 000001e4 l *ABS* 00000000 DMA0DA 000001e6 l *ABS* 00000000 DMA0SZ 000001e8 l *ABS* 00000000 DMA1CTL 000001ea l *ABS* 00000000 DMA1SA 000001ec l *ABS* 00000000 DMA1DA 000001ee l *ABS* 00000000 DMA1SZ 000001f0 l *ABS* 00000000 DMA2CTL 000001f2 l *ABS* 00000000 DMA2SA 000001f4 l *ABS* 00000000 DMA2DA 000001f6 l *ABS* 00000000 DMA2SZ 00000120 l *ABS* 00000000 WDTCTL 00000000 l *ABS* 00000000 IE1 00000002 l *ABS* 00000000 IFG1 00000001 l *ABS* 00000000 IE2 00000003 l *ABS* 00000000 IFG2 00000004 l *ABS* 00000000 ME1 00000005 l *ABS* 00000000 ME2 00000000 l df *ABS* 00000000 gen.c 00000130 l *ABS* 00000000 __MPY 00000132 l *ABS* 00000000 __MPYS 00000134 l *ABS* 00000000 __MAC 00000136 l *ABS* 00000000 __MACS 00000138 l *ABS* 00000000 __OP2 0000013a l *ABS* 00000000 __RESLO 0000013c l *ABS* 00000000 __RESHI 0000013e l *ABS* 00000000 __SUMEXT 00001132 l O .text 00000040 SinTableData 00000000 l df *ABS* 00000000 dco.c 00000130 l *ABS* 00000000 __MPY 00000132 l *ABS* 00000000 __MPYS 00000134 l *ABS* 00000000 __MAC 00000136 l *ABS* 00000000 __MACS 00000138 l *ABS* 00000000 __OP2 0000013a l *ABS* 00000000 __RESLO 0000013c l *ABS* 00000000 __RESHI 0000013e l *ABS* 00000000 __SUMEXT 00000202 l O .data 00000002 Last_TB_Tkts 00000204 l O .data 00000002 LastTBR 00000206 l O .data 00000002 DeltaTBR 00000208 l O .data 00000001 NeedToCalibrateDCO 00000000 l df *ABS* 00000000 main.c 00000130 l *ABS* 00000000 __MPY 00000132 l *ABS* 00000000 __MPYS 00000134 l *ABS* 00000000 __MAC 00000136 l *ABS* 00000000 __MACS 00000138 l *ABS* 00000000 __OP2 0000013a l *ABS* 00000000 __RESLO 0000013c l *ABS* 00000000 __RESHI 0000013e l *ABS* 00000000 __SUMEXT 00000000 l df *ABS* 00000000 measure.c 00000130 l *ABS* 00000000 __MPY 00000132 l *ABS* 00000000 __MPYS 00000134 l *ABS* 00000000 __MAC 00000136 l *ABS* 00000000 __MACS 00000138 l *ABS* 00000000 __OP2 0000013a l *ABS* 00000000 __RESLO 0000013c l *ABS* 00000000 __RESHI 0000013e l *ABS* 00000000 __SUMEXT 00000000 l df *ABS* 00000000 utils.c 00000130 l *ABS* 00000000 __MPY 00000132 l *ABS* 00000000 __MPYS 00000134 l *ABS* 00000000 __MAC 00000136 l *ABS* 00000000 __MACS 00000138 l *ABS* 00000000 __OP2 0000013a l *ABS* 00000000 __RESLO 0000013c l *ABS* 00000000 __RESHI 0000013e l *ABS* 00000000 __SUMEXT 00000000 l df *ABS* 00000000 TimerB.c 00000130 l *ABS* 00000000 __MPY 00000132 l *ABS* 00000000 __MPYS 00000134 l *ABS* 00000000 __MAC 00000136 l *ABS* 00000000 __MACS 00000138 l *ABS* 00000000 __OP2 0000013a l *ABS* 00000000 __RESLO 0000013c l *ABS* 00000000 __RESHI 0000013e l *ABS* 00000000 __SUMEXT 0000020a l O .data 00000002 uiMainInterval 0000020c l .bss 00000000 ulRealTime 00000000 l df *ABS* 00000000 AD7708.c 00000130 l *ABS* 00000000 __MPY 00000132 l *ABS* 00000000 __MPYS 00000134 l *ABS* 00000000 __MAC 00000136 l *ABS* 00000000 __MACS 00000138 l *ABS* 00000000 __OP2 0000013a l *ABS* 00000000 __RESLO 0000013c l *ABS* 00000000 __RESHI 0000013e l *ABS* 00000000 __SUMEXT 00001696 l F .text 0000004c WriteByte 000016e2 l F .text 00000036 ReadByte 00001718 l F .text 00000030 ReadWord 00000000 l df *ABS* 00000000 libgcc2.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 00000000 l df *ABS* 00000000 fp-bit.c 0000000c g *ABS* 00000000 __data_size 00001540 g F .text 000000d8 Init_7708 00001686 g F .text 00000010 StartContConversion 00001172 g F .text 0000002c Timerb_ccr1 000014b8 g F .text 00000088 GenInit 000002b4 g O .bss 00000008 ADC 00000210 g O .bss 00000002 eStatus 000002bc g O .bss 0000000c Urt 00001748 g .text 00000000 __udivmodhi4 00000200 g O .data 00000002 TB_Tkts_In_ms 00001790 g .text 00000000 _etext 0000030e g O .bss 0000000c Timers 00000128 g *ABS* 00000000 __bss_size 0000178e w .text 00000000 __stop_progExec__ 0000112c g .text 00000000 _unexpected_1_ 0000146a g .text 00000000 vector_ffe0 000002c8 g O .bss 0000000c Xslow 000012ec g F .text 00000044 ADC_ZeroCal 000013fa g F .text 0000000a Pause 00001330 g F .text 00000094 ADC_FullCal 00001404 g F .text 0000000e InitWatchDogPort 0000031a g O .bss 0000001a tempFlashData 0000119e g F .text 00000078 CalibrateDCO 00001468 g .text 00000000 vector_ffec 0000112c w .text 00000000 vector_fff0 00001790 g *ABS* 00000000 __data_load_start 0000112c g .text 00000000 __dtors_end 0000112c w .text 00000000 vector_fffc 000002d4 g O .bss 00000003 UsingChannelFlag 000002d8 g O .bss 00000012 T 0000112c w .text 00000000 vector_ffe4 00001644 g F .text 00000042 Calibrate 000002ea g O .bss 0000000c Urcab 00000212 g O .bss 00000004 RealTime 0000ffe0 g O .vectors 00000020 InterruptVectors 00001118 w .text 00000000 __do_clear_bss 0000142c g F .text 00000014 TimerBInit 00001618 g F .text 0000002c ReadRegister 0000112c w .text 00000000 vector_ffe2 0000112c w .text 00000000 vector_ffe8 00001130 w .text 00000000 _unexpected_ 000002f6 g O .bss 0000000c Xfast 0000141c g .text 00000000 vector_fffa 00001216 g F .text 0000002a SetDCO 00001478 g F .text 00000040 SetGenFreq 00001100 w .text 00000000 _reset_vector__ 0000112c g .text 00000000 __ctors_start 0000146a g F .text 0000000e DMA_isr 00001106 w .text 00000000 __do_copy_data 0000020c g .bss 00000000 __bss_start 0000112c w .text 00000000 vector_ffee 0000112c w .text 00000000 vector_fff4 00001240 g F .text 000000ac main 00001172 g .text 00000000 vector_fff8 0000112c w .text 00000000 vector_fff2 00010000 g .vectors 00000000 _vectors_end 0000112c w .text 00000000 vector_ffe6 00000302 g O .bss 0000000c Uref 0000112c g .text 00000000 __dtors_start 0000112c g .text 00000000 __ctors_end 00000a00 g *ABS* 00000000 __stack 000013c4 g F .text 00000002 PrepareBuffers 0000141c g F .text 00000010 Timerb_ccr0 0000020c g .data 00000000 _edata 00000334 g .bss 00000000 _end 00001440 g F .text 00000028 GetRealTime 000013c6 g F .text 00000034 ADC_StartUp 00001764 g .text 00000000 __udivmodsi4 0000112c w .text 00000000 vector_fff6 00000216 g O .bss 00000066 usRegInputBuf 0000027c g O .bss 00000038 usRegHoldingBuf 00001100 w .text 00000000 __low_level_init 00001128 w .text 00000000 __jump_to_main 00000200 g .data 00000000 __data_start 0000112c w .text 00000000 vector_ffea 00001412 g F .text 0000000a ClearWatchDog 00001468 g F .text 00000002 TA0_isr То есть, например, на входе имеем 00001216 g F .text 0000002a SetDCO 00001478 g F .text 00000040 SetGenFreq А на выходе: : SetDCO 1216 CALL ; : SetGenFreq 1478 CALL ; Просьба модераторам: Перенесите, пожалуйста, обсуждение начиная с поста №4 в тему про форт, ибо есть желание продолжить, а тут не совсем к месту Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Правильно ли я понял, что сам шитый код и стек формируются и существуют на хост-машине, а таргет только исполняет базовый набор примитивов? Виноват, был невнимателен. Прошу прощения. Стек параметров в target присутствует . Интересный подход... Не уверен в удовлетворительном результате. Заковыристая заковыка зарыта в передаче параметров С-функциям компилятором. В случае с ассемблером - все проще: я сам организовываю передачу параметров п/программам ( через стек параметров ). Собственно это и есть виртуальная форт-машина. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Заковыристая заковыка зарыта в передаче параметров С-функциям компилятором. В случае с ассемблером - все проще: я сам организовываю передачу параметров п/программам НУ ладно. Оставим пока функции. Но переменные и регистры запросто можно проиндексировать. Хотя и с функциями тоже не так всё сложно. У меня например, обычно большинство функций типа viod(void), параметры модулей хранятся в локальных static-переменных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 9 июля, 2009 Опубликовано 9 июля, 2009 · Жалоба Просьба модераторам: Перенесите, пожалуйста, обсуждение начиная с поста №4 в тему про форт, ибо есть желание продолжить, а тут не совсем к месту Темы разделил, но объединить с указанной не могу. Не хватает полномочий. Обратитесь с этой просьбой к супермодераторам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 15 июля, 2009 Опубликовано 15 июля, 2009 (изменено) · Жалоба Правильно ли я понял, что сам шитый код и стек формируются и существуют на хост-машине, а таргет только исполняет базовый набор примитивов? Шитого кода может и не существовать:) ( зависит от реализации Форта на хост машине ) При описанной схеме, предположу что, стек существует в таргете и скорее всего , при необходимости, передаётся отдельными примитивами на хост. ( или управлятся командами чтения/записи ячеек памяти с хост машины ) При отладке слова управляющие конструкции такие как IF, WHILE ... лучше не исполнять в таргете, а симулировать псевдо-исполнение в хосте. ( примерно такая схема принята в ff303 при исполнении байт-кода) P.S. Оставлять ли топик в данной ветке или присоединить к существующему обсуждению Форт тематики в разделе "Все остальные контроллеры" на усмотрение модераторов. Изменено 15 июля, 2009 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 15 июля, 2009 Опубликовано 15 июля, 2009 · Жалоба Темы разделил, но объединить с указанной не могу. Не хватает полномочий. Обратитесь с этой просьбой к супермодераторам. Объединил, полномочий хватило :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 9 июля, 2010 Опубликовано 9 июля, 2010 · Жалоба А какие нынче контроллеры есть со встроенным FORTH или же компилятором FORTH удачным? Amforth is a Forth system for the AVR ATmega microcontroller family. It works on the controller itself and does not depend on any additional hard- or software. amforth can be downloaded from the http://sourceforge.net/projects/amforth/files/ занимает менее 8К Flash, около 50 байт EEPROM и 100-150 байт RAM. последняя версия 2010-07-01 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться