Примеры кода из "32 уроков" не компилируются с sdc

Создание исполняемых модулей для электронных ключей SenseLock

Примеры кода из "32 уроков" не компилируются с sdc

Сообщение SNAFU » Вт, 25 сен 2007 15:53

Всем привет.
Я скачал "32 урока по применению электронных ключей SenseLock с примерами" и решил написать приложение, шифрующее с помощью RSA содержимое небольшого текстового файла. В уроке 27 рассматривается реализация похожего случая, однако скомпилировать его я не могу.

Строка компиляции:
C:\sdcc\bin\sdcc.exe --model-large -c -IC:\sdcc\include sample_27_hw.c

Вывод компилятора:
sample_27_hw.c:23: error 129: pointer types incompatible

Вывод sdcc -E в строках 20-24:
20: unsigned char last_ses_error = 0;
21: struct _IO_PACKAGE out_pkg;
22: struct _IO_PACKAGE *output = (struct _IO_PACKAGE *) &out_pkg;
23: struct _IO_PACKAGE *input = (struct _IO_PACKAGE *) ((BYTE xdata *)0x0801);
24: unsigned char tmp_buf[128];

Вывод sdcc --version
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.6.0 #4309 (Jul 28 2006) (MINGW32)

Эту версию я скачал с http://senselock.ru/support.php

То же самое воспроизводится на:
$ sdcc --version
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.7.3 #4919 (Sep 25 2007) (UNIX)

Может кто подскажет как подобное лечить?
SNAFU
 
Сообщения: 8
Зарегистрирован: Вт, 25 сен 2007 15:36
Откуда: Нижний Новгород

Сообщение hijaq » Вт, 25 сен 2007 16:22

Все компилируется, если использовать SDCC правильно. Для этого необходимо использовать make.exe и makefile, пример есть в комплекте с SDCC.

Код: Выделить всё
F:\Projects\case study\sample_27>f:\sdcc\2.6.0\bin\make
f:/sdcc/2.6.0/bin/sdcc.exe --model-large --no-xinit-opt -c -If:/sdcc/2.6.0/include sample_27_hw.c
echo -u> sample_27_hw.lnk
echo -m>> sample_27_hw.lnk
echo -x>> sample_27_hw.lnk
echo -i>> sample_27_hw.lnk
echo -k f:/sdcc/2.6.0/lib/ses/large>> sample_27_hw.lnk
echo -k f:/sdcc/2.6.0/lib/large>> sample_27_hw.lnk
echo -l libsdcc>> sample_27_hw.lnk
echo -l libint>> sample_27_hw.lnk
echo -l liblong>> sample_27_hw.lnk
echo -l libfloat>> sample_27_hw.lnk
echo -l mcs51>> sample_27_hw.lnk
echo -l sdcc_ses51>> sample_27_hw.lnk
echo -z>> sample_27_hw.lnk
echo sample_27_hw.rel>> sample_27_hw.lnk
f:/sdcc/2.6.0/bin/aslink.exe -f sample_27_hw.lnk
-u
-m
-x
-i
-k f:/sdcc/2.6.0/lib/ses/large
-k f:/sdcc/2.6.0/lib/large
-l libsdcc
-l libint
-l liblong
-l libfloat
-l mcs51
-l sdcc_ses51
-z
sample_27_hw.rel
f:/sdcc/2.6.0/bin/hexbin.exe sample_27_hw.ihx sample_27_hw.bin I 2
hijaq
Site Admin
 
Сообщения: 213
Зарегистрирован: Пт, 06 апр 2007 14:50

Сообщение SNAFU » Вт, 25 сен 2007 16:45

То есть проблема была именно в ключе --no-xinit-opt, спасибо

Для этого необходимо использовать make.exe и makefile, пример есть в комплекте с SDCC.

make.exe нашел, makefile - нашел только не относящийся к теме sdcc\doc\z80\Makefile. Впрочем, в публикуемых на вашем сайте биндингах к Visual Studio что-то похожее есть, надо теперь все собрать вместе и перенести на Linux :)

а есть ли планы написать introduction guide, где на пальцах расписано с чего начинать разработчику? планируется ли такой guide, а желательно еще и с компилируемыми и работающими примерами для разработчиков Linux?

еще раз спасибо за помощь.
SNAFU
 
Сообщения: 8
Зарегистрирован: Вт, 25 сен 2007 15:36
Откуда: Нижний Новгород

Сообщение hijaq » Вт, 25 сен 2007 16:52

Этот флаг тоже должен присутствовать, но проблема была в том, что при компиляции необходимо указывать имена дополнительных библиотек и создавать файл с параметрами, что и происходит при использовании makefile'а.
Пример makefile для SDCC лежит в архиве senselock_sdcc_2.6.0.rar в директории "demo"
senselock_sdcc_2.6.0.rar
\demo\
demo.c
makefile
\sdcc\

В данный момент мы уже закончили перевод Developer Guide'а и делаем его вычитку, скоро он станет доступным. Про Linux там, к сожеланию, ничего нет, но этому вопросу мы обязательно уделим время в самом ближайшем будущем.
hijaq
Site Admin
 
Сообщения: 213
Зарегистрирован: Пт, 06 апр 2007 14:50

Сообщение SNAFU » Вт, 25 сен 2007 17:33

hijaq писал(а):Этот флаг тоже должен присутствовать, но проблема была в том, что при компиляции необходимо указывать имена дополнительных библиотек и создавать файл с параметрами, что и происходит при использовании makefile'а.


могу показаться въедливым, но тем не менее "pointer types incompatible", который хотелось побороть изначально, лечился именно с помощью --no-xinit-opt. Взял сейчас неизмененный makefile из senselock_sdcc_2.6.0.rar поправил только путь к sdcc и имя проекта и получил ту же ошибку. с --no-xinit-opt в строке СС=... все ок

еще раз спасибо за все разъяснения
SNAFU
 
Сообщения: 8
Зарегистрирован: Вт, 25 сен 2007 15:36
Откуда: Нижний Новгород

Сообщение SNAFU » Пн, 01 окт 2007 07:43

hijaq писал(а):Про Linux там, к сожеланию, ничего нет, но этому вопросу мы обязательно уделим время в самом ближайшем будущем.


а рассматриваете ли вы возможность работы фрилансеров над всем, что касается Senselock в Linux? :) было бы интересно присоединиться.
SNAFU
 
Сообщения: 8
Зарегистрирован: Вт, 25 сен 2007 15:36
Откуда: Нижний Новгород

Сообщение hijaq » Пн, 01 окт 2007 15:44

На данный момент вопросы фрилансерства мы пока не рассматривали.
hijaq
Site Admin
 
Сообщения: 213
Зарегистрирован: Пт, 06 апр 2007 14:50


Вернуться в Исполняемые модули

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

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

cron