Страница 3 из 4

Re: Инструментальные средства

СообщениеДобавлено: 09 апр 2009, 14:02
Miller
Хмм...ни чего не получается :( Толи у меня руки кудрявые, толи стенд такой попался.
Порядок моих действий при попытке прошить загрузчик:
1. Включаю стенд, включается как всегда: пищит динамик, поморгают светодиоды, на жки выводится надпись Test
2. Одеваю перемычку на JP1
3. Жму reset. Ни каких действий из п.1 он не выполняет, только как и была так и остается надпись Test. Но это я думаю все так и должно быть?!
4. Запускаю файл upload.bat (см. вложения)
Файл upload.bat в себе содержит следующие:
Код: Выделить всё
rem C:1 - номер com-порта
dl main.hex /C:4

dl.rar
(58.55 Кб) Скачиваний: 275

5. Открывается естественно досовское окно и гласит как я понимаю следующие: Неудачная перезагрузка устройства (см.скриншот)
1.JPG
1.JPG (40.4 Кб) Просмотров: 11311


Что не так делаю, не могу понять?

Re: Инструментальные средства

СообщениеДобавлено: 09 апр 2009, 14:18
kluchev
Miller писал(а):Хмм...ни чего не получается
Что не так делаю, не могу понять?


У вас порт - com4, а dl.exe - древняя, досовская программа. Не факт, что адрес микросхемы 82450 и номер прерывания совпадут. Попробуйте запустить процесс прошивки SDK-1.1 на ПК, у которого есть обычный COM1.

Re: Инструментальные средства

СообщениеДобавлено: 09 апр 2009, 14:53
Miller
kluchev писал(а):Попробуйте запустить процесс прошивки SDK-1.1 на ПК, у которого есть обычный COM1.

Хорошо, попробую!

Re: Инструментальные средства

СообщениеДобавлено: 10 апр 2009, 01:36
Miller
Miller писал(а):
kluchev писал(а):Попробуйте запустить процесс прошивки SDK-1.1 на ПК, у которого есть обычный COM1.

Хорошо, попробую!

Попробовал и вправду всё получилось :!:
Теперь при включении не пищит и не моргает, просто выдается надпись “SDK-1.1 Waiting…”
:idea: Теперь какой командой в программе m3p мне загрузить hex файл???

Re: Инструментальные средства

СообщениеДобавлено: 10 апр 2009, 11:48
kluchev
Miller писал(а): Теперь какой командой в программе m3p мне загрузить hex файл???


Преобразование HEX->bin

Код: Выделить всё
m3p hb166 simple.hex simple.bin bye


Загрузка в контроллер

Код: Выделить всё
m3p lfile load.m3p


m3p является интерпретатором языка FORTH. Скрипт для m3p выглядит примерно так:

Код: Выделить всё
    terminateonerror
    9600 openchannel com1

: wait
   
    cr cr
    ." Включите питание и нажмите кнопку RESET на стенде SDK." cr cr
    ." Ожидание перезапуска... "

    begin rsio dup emit 109 == until

    ." Ok" cr cr
;

    wait

    T_RAM

    0x2100       write    simple.bin
    0x2100       jmp

    0 term

bye

Re: Инструментальные средства

СообщениеДобавлено: 10 апр 2009, 18:24
Miller
Как ни странно, но у меня не получилось! :sorry:
Проделал все действия, но на ЖКИ так и не появилась надпись Hello!
12345.rar
(143.88 Кб) Скачиваний: 277

Re: Инструментальные средства

СообщениеДобавлено: 10 апр 2009, 19:52
kluchev
Miller писал(а):Как ни странно, но у меня не получилось! :sorry:
Проделал все действия, но на ЖКИ так и не появилась надпись Hello!
12345.rar


Hello выводится в последовательный канал, а не на ЖКИ. Его как раз видно на вашем скриншоте.

Re: Инструментальные средства

СообщениеДобавлено: 10 апр 2009, 20:25
Miller
kluchev писал(а):Hello выводится в последовательный канал, а не на ЖКИ. Его как раз видно на вашем скриншоте.

Эээ... :oops: Тогда чем дальше в лес, тем больше для меня не понятностей. А как же тогда вывести на ЖКИ??

Re: Инструментальные средства

СообщениеДобавлено: 10 апр 2009, 21:21
kluchev
Miller писал(а):Эээ... :oops: Тогда чем дальше в лес, тем больше для меня не понятностей. А как же тогда вывести на ЖКИ??


http://embedded.ifmo.ru/sdk/sdk11/doc/s ... 1_0_11.pdf
http://embedded.ifmo.ru/sdk/sdk11/labs/ ... 3_lab7.pdf
lcd.zip
(6.87 Кб) Скачиваний: 303


Если не знаете пароль к документации, спросите у меня через личное сообщение.

Re: Инструментальные средства

СообщениеДобавлено: 03 май 2009, 23:38
Miller
Где можно скачать дистрибутивы программ:
- компилятор SDCC v2.7.0 или старше для вашей платформы;
- пакет cygwin;
- IDE Eclipse и CDT;

Искать в инете – не посылать! Искал, ни чего путного не нашел.

Re: Инструментальные средства

СообщениеДобавлено: 03 май 2009, 23:51
A.Sukhoy
SDCC. В разделе SDCC File Releases можно скачать последний стабильный. В разделе Snapshots ежедневные билды.
Eclipse. Можно сразу скачать сборку с CDT (Eclipse IDE for C/C++ Developers (68 MB))
Cygwin. Жмем на Install Cygwin now в правом верхнем углу и будет счастье в виде онлайн-инсталятора

Можно скачать только SDCC и компилировать проект простым командником. Так же можно использовать альтернативную среду разработки Keil µVision. Правда она платная, но есть пробная версия с некоторыми ограничениями. Кеил удобен наличией хорошего отладчика, чего не скажешь о SDCC. Программы придется заливать так же командником. Посмотрел щас, они хотят еще перед скачиванием чтобы я форму заполнил, раньше такого не было :(

Так что пользоваться поиском все-таки полезно, тем более что все это в первых строчках ответов поисковика лежит

Re: Инструментальные средства

СообщениеДобавлено: 08 май 2009, 13:07
Miller
kluchev писал(а):make - утилита для сборки проекта, на начальном этапе можно обойтись и без нее.

а где её можно скачать?

Re: Инструментальные средства

СообщениеДобавлено: 08 май 2009, 15:33
AlexNickolaenkov
Miller писал(а):
kluchev писал(а):make - утилита для сборки проекта, на начальном этапе можно обойтись и без нее.

а где её можно скачать?

http://savannah.gnu.org/projects/make/

Думаю эта информация будет здесь к месту.

СообщениеДобавлено: 02 окт 2009, 23:02
h0rr0rr_drag0n
В Debian-based дистрибутивах (как в остальных не знаю) есть два пакета с компилятором SDCC: sdcc и sdcc-nf. Первый пакет не содержит в себе поддержку mcs51, соответственно при попытке скомпилировать программу для SDK-1.1 вы получите кучу ошибок в aduc812.h :( . Для программирования под SDK-1.1 следует использовать sdcc-nf (SDCC non-free).

Re: Думаю эта информация будет здесь к месту.

СообщениеДобавлено: 04 окт 2009, 23:37
kluchev
h0rr0rr_drag0n писал(а):В Debian-based дистрибутивах (как в остальных не знаю)


Я вообще никогда не думал, что он есть в репозиториях...

Re: Инструментальные средства

СообщениеДобавлено: 14 апр 2010, 02:19
vvp666
Подскажите, как в m3p отправить символ в последовательный канал?

Скажем, подключено устройство через rs-232 (в моем случае SDK-6.1), которое принимает символы. Как отправить один символ из m3p в устройство? Чтение документации мало помогло, либо не там смотрю. Пишу: 9600 openchannel <адрес порта>, а что сделать дальше?
Команда wsio отзывается, что стек пуст.

И второй вопрос: для отправки символа надо, видимо, нажимать enter в итоге. Но разве символ переноса строки не будет интерпретироваться m3p как еще один символ и отправляться в последовательный канал вместе с первым посылаемым?

Re: Инструментальные средства

СообщениеДобавлено: 14 апр 2010, 02:46
A.Sukhoy
На сколько я помню надо включить эмулятор терминала, например командой
Код: Выделить всё
0 term

тогда по нажатию кнопки, соответствующий ей символ будет отправлен по последовательному каналу.

Насчет WSIO точно не могу сказать, но как я понял работает она так:

  • либо предварительно что-то кладем в стек, просто набором числа в консоли и нажатием enter,
  • либо вызываем wsio таким образом
Код: Выделить всё
<число> wsio

тогда команда не выдает ошибки :)

Содержимое стека можно посмотреть командой:
Код: Выделить всё
S.


Вывод команды WORDS говорит, что есть еще команды WSIOSTR, WSIOSTRSTACK, но они на столько засекречены (или не работают), что в доках про них ничего нет :D
P.S. Документация по M3P оставляет желать лучшего. :(

Re: Инструментальные средства

СообщениеДобавлено: 14 апр 2010, 12:09
kluchev
На стек кладется число, команда wsio берет с вершины стека число и отправляет в последовательный канал.

Реализация wsio тупа до безобразия.

f_Wsio - функция-обертка, передающая аргументы через стек данных Форт-системы в обычную сишную функцию Wsio().
Код: Выделить всё
void f_Wsio(void)
{
        Wsio(StackData.pop());
}


Wsio() - реализация функции записи байта в последовательный канал, в данном случае в варианте для Linux.

Код: Выделить всё
int rs_fd;

void Wsio(unsigned char cTmp)
{
   write( rs_fd, &cTmp, 1 );
}


добавление команды Wsio в текстовый интерпретатор выглядит так:
Код: Выделить всё
AddFunc(&f_Wsio,            (unsigned char *)"wsio",            T_COM, 0 );




см. также:
http://embedded.ifmo.ru/repos/gm3p/CORE/bindfunc.cpp
http://embedded.ifmo.ru/repos/gm3p/NET/sio.cpp
http://embedded.ifmo.ru/wiki/index.php5/M3P
http://embedded.ifmo.ru/sdk/sdk11/soft/ ... manual.pdf

Re: Инструментальные средства

СообщениеДобавлено: 14 апр 2010, 14:16
vvp666
Спасибо за ответы :)

Re: Инструментальные средства

СообщениеДобавлено: 15 апр 2010, 00:10
h0rr0rr_drag0n
Оказывается SDCC не может компилировать сразу несколько исходных файлов, как GCC (т.е. sdcc mainc. leds.c pld.c не выполнится успешно). Нужно сначала по отдельности создать объектные файлы для каждого из исходных файлов проекта. Затем уже можно транслировать их в бинарник, но следует учесть что объектный файл, в котором есть функция main(), должен быть первым в списке объектных файлов.
Информация отсюда: http://wiki.laptop.org/go/SDCC#Multiple_Source_file_projects
Я набросал небольшой Makefile, который позволяет компилировать проекты, состоящие из нескольких исходных файлов, причем поиск исходников происходит почти в автоматическом режиме - не нужно указывать каждый исходник поименно в Makefile'е.

Код: Выделить всё
# Имя исходного файла с фнукцией main() внутри                                                         
# Будет совпадать с именем загружаемого в стенд                                                       
# бинарника.                                                                                           
NAME = main                                                                                           
                                                                                                       
CC = sdcc                                                                                             
SRC_DIR = .                                                                                           
HEADERSDIR = .                                                                                         
CFLAGS = -I$(HEADERSDIR) -c                                                                           
LFLAGS = --code-loc 0x2100 --xram-loc 0x6000 --stack-loc 0x80                                         
M3P = m3p                                                                                             
LFILE = load.m3p                                                                                       
                                                                                                       
#---------------------------------------------------------------------------                           
                                                                                                       
all: project                                                                                           
                                                                                                       
# Минимальные необходимые условия для проведения                                                       
# компиляции - Makefile и файл с main() внутри.                                                       
#                                                                                                     
# Тут все просто -- так как SDCC не умеет компилировать                                               
# сразу нескольно файлов: он может компилить файлы только                                             
# по одному - то мы собираем объектные файлы сначала для всех                                         
# исходных файлов кроме $(NAME).c, затем для $(NAME).c                                                 
#                                                                                                     
# Затем мы собираем бинарник -- причем файл $(NAME).rel                                               
# должен ОБЯЗАТЕЛЬНО стоять первым в списке файлов.
#                                                                                                     
# http://wiki.laptop.org/go/SDCC#Multiple_Source_file_projects                                         
#                                                                                                     
project: Makefile $(NAME).c                                                                           
        for file in $(SRC_DIR)/*; do \                                                                 
                echo $$file | grep -q '.\{1,\}\.c'; \                                                 
                if [ "$$?" -eq "0" ] && [ "$$file" != "$(NAME).c" ]; then \                           
                        $(CC) $(CFLAGS) $(SRC_DIR)/$$file; \                                           
                fi \                                                                                   
        done; \                                                                                       
        $(CC) $(CFLAGS) $(SRC_DIR)/$(NAME).c; \                                                       
        OBJECT_FILES=`ls * | grep '.\{1,\}\.rel' | grep -v '$(NAME).rel'`; \                           
        $(CC) $(NAME).rel $$OBJECT_FILES -o $(NAME).hex $(LFLAGS)                                     
        $(M3P) hb166 $(NAME).hex $(NAME).bin bye                                                       
                                                                                                       
                                                                                                       
.PHONY: clean                                                                                         
clean:                                                                                                 
        rm -f *.asm *.lst *.rel *.rst \                                                               
                *.sym *.hex *.bin *.lnk \                                                             
                *.map *.mem pm3p*.txt                                                                 
                                                                                                       
.PHONY: load                                                                                           
load:                                                                                                 
        $(M3P) lfile $(LFILE)