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

Учебный лабораторный комплекс SDK-1.1 на базе микроконтроллера ADuC812 с ядром MCS51 # RS-232C, I2C

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

Сообщение Miller » 09 апр 2009, 14:02

Хмм...ни чего не получается :( Толи у меня руки кудрявые, толи стенд такой попался.
Порядок моих действий при попытке прошить загрузчик:
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 Кб) Скачиваний: 242

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


Что не так делаю, не могу понять?
Miller
 
Сообщения: 21
Зарегистрирован: 28 мар 2009, 18:34

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

Сообщение kluchev » 09 апр 2009, 14:18

Miller писал(а):Хмм...ни чего не получается
Что не так делаю, не могу понять?


У вас порт - com4, а dl.exe - древняя, досовская программа. Не факт, что адрес микросхемы 82450 и номер прерывания совпадут. Попробуйте запустить процесс прошивки SDK-1.1 на ПК, у которого есть обычный COM1.
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

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

Сообщение Miller » 09 апр 2009, 14:53

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

Хорошо, попробую!
Miller
 
Сообщения: 21
Зарегистрирован: 28 мар 2009, 18:34

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

Сообщение Miller » 10 апр 2009, 01:36

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

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

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

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

Сообщение kluchev » 10 апр 2009, 11:48

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
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

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

Сообщение Miller » 10 апр 2009, 18:24

Как ни странно, но у меня не получилось! :sorry:
Проделал все действия, но на ЖКИ так и не появилась надпись Hello!
12345.rar
(143.88 Кб) Скачиваний: 251
Вложения
1.JPG
1.JPG (66.21 Кб) Просмотров: 9191
Miller
 
Сообщения: 21
Зарегистрирован: 28 мар 2009, 18:34

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

Сообщение kluchev » 10 апр 2009, 19:52

Miller писал(а):Как ни странно, но у меня не получилось! :sorry:
Проделал все действия, но на ЖКИ так и не появилась надпись Hello!
12345.rar


Hello выводится в последовательный канал, а не на ЖКИ. Его как раз видно на вашем скриншоте.
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

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

Сообщение Miller » 10 апр 2009, 20:25

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

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

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

Сообщение kluchev » 10 апр 2009, 21:21

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 Кб) Скачиваний: 277


Если не знаете пароль к документации, спросите у меня через личное сообщение.
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

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

Сообщение Miller » 03 май 2009, 23:38

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

Искать в инете – не посылать! Искал, ни чего путного не нашел.
Miller
 
Сообщения: 21
Зарегистрирован: 28 мар 2009, 18:34

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

Сообщение A.Sukhoy » 03 май 2009, 23:51

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

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

Так что пользоваться поиском все-таки полезно, тем более что все это в первых строчках ответов поисковика лежит
Аватара пользователя
A.Sukhoy
 
Сообщения: 182
Зарегистрирован: 08 апр 2008, 17:53

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

Сообщение Miller » 08 май 2009, 13:07

kluchev писал(а):make - утилита для сборки проекта, на начальном этапе можно обойтись и без нее.

а где её можно скачать?
Miller
 
Сообщения: 21
Зарегистрирован: 28 мар 2009, 18:34

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

Сообщение AlexNickolaenkov » 08 май 2009, 15:33

Miller писал(а):
kluchev писал(а):make - утилита для сборки проекта, на начальном этапе можно обойтись и без нее.

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

http://savannah.gnu.org/projects/make/
Аватара пользователя
AlexNickolaenkov
 
Сообщения: 435
Зарегистрирован: 02 май 2008, 21:40
Откуда: Санкт-Петербург

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

Сообщение h0rr0rr_drag0n » 02 окт 2009, 23:02

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

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

Сообщение kluchev » 04 окт 2009, 23:37

h0rr0rr_drag0n писал(а):В Debian-based дистрибутивах (как в остальных не знаю)


Я вообще никогда не думал, что он есть в репозиториях...
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

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

Сообщение vvp666 » 14 апр 2010, 02:19

Подскажите, как в m3p отправить символ в последовательный канал?

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

И второй вопрос: для отправки символа надо, видимо, нажимать enter в итоге. Но разве символ переноса строки не будет интерпретироваться m3p как еще один символ и отправляться в последовательный канал вместе с первым посылаемым?
bye
vvp666
 
Сообщения: 28
Зарегистрирован: 09 дек 2009, 17:37

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

Сообщение A.Sukhoy » 14 апр 2010, 02:46

На сколько я помню надо включить эмулятор терминала, например командой
Код: Выделить всё
0 term

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

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

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

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

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


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

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

Сообщение kluchev » 14 апр 2010, 12:09

На стек кладется число, команда 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
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

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

Сообщение vvp666 » 14 апр 2010, 14:16

Спасибо за ответы :)
bye
vvp666
 
Сообщения: 28
Зарегистрирован: 09 дек 2009, 17:37

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

Сообщение h0rr0rr_drag0n » 15 апр 2010, 00:10

Оказывается 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)                                                                         
Университет развивает все способности, в том числе — глупость.
-- Антон Павлович Чехов
Аватара пользователя
h0rr0rr_drag0n
 
Сообщения: 99
Зарегистрирован: 18 мар 2009, 22:27
Откуда: СПб

Пред.След.

Вернуться в SDK 1.1

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron