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

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

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

Сообщение Владимир » 06 май 2008, 17:33

подскажите пожалуйста как работать с программами sdcc , make и gm3p
Документацию по ним читал, но не понятно как они взаимодействуют и вообще как запускаются. С чего начать?
Там же описано использование среды Eclipse, нужна ли она вообще?
Владимир
 
Сообщения: 9
Зарегистрирован: 05 май 2008, 16:59

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

Сообщение kluchev » 06 май 2008, 18:06

Владимир писал(а):подскажите пожалуйста как работать с программами sdcc , make и gm3p
Документацию по ним читал, но не понятно как они взаимодействуют и вообще как запускаются. С чего начать?
Там же описано использование среды Eclipse, нужна ли она вообще?


sdcc - свободно распространяемый компилятор языка Си.
make - утилита для сборки проекта, на начальном этапе можно обойтись и без нее.
gm3p - программа для загрузки исполняемого кода в учебный стенд через RS-232.

Без Eclipse можно совершенно спокойно обойтись, подойдет совершенно любой текстовый редактор, в котором можно редактировать обычный текст.

Компиляция
Без make компиляция примера http://embedded.ifmo.ru/sdk/sdk11/soft/examples/sdcc/linux/simple_sdk_1_1-1.0.0-0-l.tar.gz будет выглядеть примерно так:
sdcc simple.c -o simple.hex --code-loc 0x2100 --xram-loc 0x6000 --stack-loc 0x80

Для того, чтобы файл скомпилировался нужно переписать заголовочный файл aduc812.h в тот каталог, в котором будет находиться исходный текст на языке Си и будет осуществляться компиляция.

на выходе получится файл simple.hex

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

gm3p hb166 simple.hex simple.bin bye

на выходе получится файл simple.bin

Загрузка в стенд

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

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

Сообщение Владимир » 06 май 2008, 18:31

эти программы будут работать если не установлен cygwin? в описании тестовых драйверов и инструментального обеспечения написано как устанавливать cygwin, но gm3p не может найти _impure_ptr в библиотеке DLL cygwin1.dll
Нужна ли устанавливать cygwin через интернет?
Владимир
 
Сообщения: 9
Зарегистрирован: 05 май 2008, 16:59

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

Сообщение invaisor » 06 май 2008, 18:57

эти программы будут работать если не установлен cygwin?

sdcc точно будет, make и gm3p - нет
в описании тестовых драйверов и инструментального обеспечения написано как устанавливать cygwin, но gm3p не может найти _impure_ptr в библиотеке DLL cygwin1.dll
Нужна ли устанавливать cygwin через интернет?

Вероятнее всего у вас каким-то образом завелись две версии библиотеки cygwin1.dll. Сделайте поиск и оставьте только ту, что находится в <путь до установки Cygwin>\bin. Если это не поможет, то сделайте вывод команды
Код: Выделить всё
cygcheck -svr
(из сеанса cygwin) в файл и прикрепите его сюда.
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

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

Сообщение kluchev » 06 май 2008, 19:05

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

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

Сообщение Интегральный вычислитель » 06 май 2008, 20:17

Насколько я помню, gm3p криво работает под Windows. Есть Windows версия этой программы - m3p, она не имеет зависимостей от Cygwin'a.
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение kluchev » 06 май 2008, 20:22

Раб Лампы писал(а):Насколько я помню, gm3p криво работает под Windows. Есть Windows версия этой программы - m3p, она не имеет зависимостей от Cygwin'a.

Я не в курсе, какая версия нужна. Можешь сюда выложить версию m3p.exe без исходников, которая гарантированно работает с SDK-1.1? Можно прямо сюда, потом подумаем, куда её лучше пихнуть...

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

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

Сообщение Интегральный вычислитель » 06 май 2008, 20:25

Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение Интегральный вычислитель » 06 май 2008, 20:28

kluchev писал(а):Кстати, GNU make должен быть под Win32. Без всяких cygwin. Мне такое чудо попадалось, давно правда.

У Майкрософта есть аналог make'a. Называется nmake, входит в комплект поставки Visual Studio (но можно скачать отдельно, или в комплекте с бесплатной Visual Studio Express Edition). Я его использую под Windows.
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение kluchev » 06 май 2008, 20:35

Раб Лампы писал(а):У Майкрософта есть аналог make'a. Называется nmake, входит в комплект поставки Visual Studio (но можно скачать отдельно, или в комплекте с бесплатной Visual Studio Express Edition). Я его использую под Windows.

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

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

Сообщение Интегральный вычислитель » 06 май 2008, 20:42

Хочу обратить ваше внимание на то, что для работы с m3p во flash память стенда нужно прошить загрузчик ul, который поддерживает протокол pm3p. Также он поддерживает и старый протокол HEX-202, поэтому его можно использовать и с утилитами t176b , t2
Скачать исходные коды можно из репозитория:
http://194.85.162.173/repos/ul3/

p/s наверное надо написать путеводитель по исходному коду gm3p и загрузчика ul, чтобы было понятно как работают протоколы, и как добавлять новые функции...
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение Владимир » 06 май 2008, 20:48

поясните пожалуйста ещё раз про sdcc, в какой каталог нужно помещать файлы для компиляции? пробывал по всякому но всегда одна ошибка: error 4: 'fopen' failed on file 'simple.c'
Владимир
 
Сообщения: 9
Зарегистрирован: 05 май 2008, 16:59

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

Сообщение Интегральный вычислитель » 06 май 2008, 21:07

Владимир писал(а):поясните пожалуйста ещё раз про sdcc, в какой каталог нужно помещать файлы для компиляции? пробывал по всякому но всегда одна ошибка: error 4: 'fopen' failed on file 'simple.c'

Прежде всего добавьте путь к sdcc в переменную окружения Path. Это можно сделать при установке windows-дистрибутива sdcc
или вручную:
2.JPG
2.JPG (12.73 Кб) Просмотров: 14446


Теперь можно запустить компилятор из любого каталога. Перейдите в каталог с программой (из консоли, или в FAR)
Сборка программы с одним исходным файлом
Код: Выделить всё
sdcc simple.c -o simple.hex --code-loc 0x2100 --xram-loc 0x6000 --stack-loc 0x80

3.JPG
3.JPG (38.47 Кб) Просмотров: 14453


После сборки программы имеем следующие файлы:
4.JPG
4.JPG (41.04 Кб) Просмотров: 14450
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение invaisor » 06 май 2008, 21:09

Владимир писал(а):поясните пожалуйста ещё раз про sdcc, в какой каталог нужно помещать файлы для компиляции? пробывал по всякому но всегда одна ошибка: error 4: 'fopen' failed on file 'simple.c'


Перемещаете файлы simple.c и aduc812.h в единый каталог, к примеру work_sdk
Вызываете консоль - (Пуск->Выполнить (cmd))
Переходите в этот каталог (cd <имя каталога>)
И выполняете
sdcc simple.c -o simple.hex --code-loc 0x2100 --xram-loc 0x6000 --stack-loc 0x80


PS Опередили :cry:
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

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

Сообщение Владимир » 06 май 2008, 22:47

Спасибо! Теперь то уж разобрался...=)
Владимир
 
Сообщения: 9
Зарегистрирован: 05 май 2008, 16:59

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

Сообщение Владимир » 07 май 2008, 22:07

Еще вопрос по SDCC:
после компиляции пытался загрузить hex-файл с помощью t167b, программа загрузилась но со стендом ничего не происходит, видимо проблема со стартовым адресом, хотя указывал тот же адрес 0x2100 что и при компиляции...
Вопрос по М3Р:
в примерах программ есть файл load.m3p , после команды lfile пишется включить питание и нажать reset, через демо-программу зупускаю загрузчик hex-202, но М3Р пишет "ожидание перезапуска.....HEX-202........."
Выше было написано что нужен загрузчик ul, загружаемый во флеш, получается что с помощью м3р нельзя загружать программы в ОЗУ из демо-программы?
Владимир
 
Сообщения: 9
Зарегистрирован: 05 май 2008, 16:59

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

Сообщение Интегральный вычислитель » 07 май 2008, 22:50

Владимир писал(а):Еще вопрос по SDCC:
Выше было написано что нужен загрузчик ul, загружаемый во флеш, получается что с помощью м3р нельзя загружать программы в ОЗУ из демо-программы?

Да, все верно. Загрузчик в демо-программе работает по протоколу HEX-202, m3p его не поддерживает.
Загрузчик ul поддерживает 2 протокола: HEX-202 и pm3p (протокол программы m3p), используйте его.
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение Интегральный вычислитель » 07 май 2008, 23:01

Владимир писал(а):Еще вопрос по SDCC:
после компиляции пытался загрузить hex-файл с помощью t167b, программа загрузилась но со стендом ничего не происходит, видимо проблема со стартовым адресом, хотя указывал тот же адрес 0x2100 что и при компиляции...

Приложите пожалуйста архив с проектом (исходные коды, командый файл (.bat) для компиляции/загрузки). Либо я завтра выложу проект SDCC с загрузкой через t167b (если найду sdk1.1 чтобы протестировать).

Владимир писал(а):Вопрос по М3Р:
в примерах программ есть файл load.m3p , после команды lfile ...

load.m3p - это скрипт на языке Форт. Программа m3p - это интерпретатор языка форт с поддержкой команд для работы с последовательным каналом и протоколом pm3p.

Если вы запускаете m3p с параметром lfile имя_файла.m3p, тогда m3p будет выполнять команды из заданного файла.
К примеру:
Код: Выделить всё
m3p lfile load.m3p


Описание языка Форт и протокола pm3p можно найти здесь: http://embedded.ifmo.ru/sdk/sdk11/soft/gm3p/gm3p_user_manual.pdf
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение Интегральный вычислитель » 07 май 2008, 23:12

Владимир писал(а):А с чем может быть связано, что программы не запускаются из ОЗУ после компиляции sdcc и загрузке с помощью t167b

Есть 2 варианта:
1. Вы просто где-то ошиблись, либо что-то недопоняли
2. Если ваша программа использует прерывания, возможно вы напоролись на ошибку в SDCC при установке адреса функции-обработчика прерывания. Её можно обойти поменяв местами байты в 16 битном указателе на функцию-обработчик прерывания

Дальше привожу комментарии одного из наших студентов:
Код: Выделить всё
Ошибки компилятора при генерации кода для mcs51-совместимых ядер. Демонстрационные примеры рассмотрены для SDK-1.1, базирующегося на mcs51-совместимом контроллере ADuC812

В связи со спецификой работы с таблицей векторов прерываний стенда SDK-1.1, требуется по соответствующим адресам в "верхней" области памяти кода (0x2000) записывать команду перехода к обработчику прерывания - ljmp(OPCODE=0x2), в которой необходимо указать 2-х байтный адрес перехода, причём запись адреса должна производиться в соответсвии с принципом big-endian (старший байт по меньшему адресу, младший по большему), иначе говоря, формат следующий: OPCODE ADR16-8 ADR7-0.

При использовании указателя на short:

unsigned short xdata* adress_short=0x200B;

запись ведётся в обратном порядке - младший байт по младшему адресу, старший по большему.


Листинг примера использования short-указателя:

*adress_short = (unsigned short) vector;

mov   dptr,#0x200B
mov   a,_set_vector_PARM_2 ; младший байт
movx   @dptr,a
inc   dptr
mov   a,(_set_vector_PARM_2 + 1) ; старший байт
movx   @dptr,a

Для разрешения ошибочной ситуации рекомендуется использовать char-указатели и записывать байты отдельно, в соответствии с правильным порядком следования:

unsigned char xdata* adress_short=0x200B;


Листинг примера использования char-указателя:

*adress_char=(unsigned char) (vector>>8); // первым - старший байт

mov   dptr,#0x200B
mov   a,(_set_vector_PARM_2 + 1)
movx   @dptr,a

*(adress_char+1)=(unsigned char) vector; // вторым - младший байт

mov   dptr,#0x200C
mov   a,_set_vector_PARM_2
movx   @dptr,a
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

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

Сообщение Владимир » 07 май 2008, 23:25

я в этом деле новичок, только начинаю изучать микроконтроллеры...в программе не используются прерывания, она довольна простая со светодиодами
Не подскажите где можно еще найти примеры программ для SDK 1.1, а также какую нибудь литературу? на сайте всё облазил
Вложения
dip2.rar
(41.2 Кб) Скачиваний: 465
Последний раз редактировалось Владимир 08 май 2008, 00:00, всего редактировалось 1 раз.
Владимир
 
Сообщения: 9
Зарегистрирован: 05 май 2008, 16:59

След.

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

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

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

cron