Распознать загрузчик SDK1.1

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

Распознать загрузчик SDK1.1

Сообщение vktp » 17 сен 2009, 15:17

Здравствуйте!
Что я хочу сделать? Я хочу из под Linux загружать в стенд программы своими средствами. Для этого мне нужно знать какой версии загрузчик используется в стенде.
Описание используемого мною стенда:
- SDK1.1R4 (маркировка)
- контроллер ADuC842
- дата выпуска 09.06.2004

На основе примеров взятых с http://roman.khimov.ru/2006/07/02/sdknet/ с внесенными изменениями написал программу следующего содержания на Си для проверки что выдает SDK:

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <termios.h>
#include <unistd.h>

#define BAUDRATE B9600
#define BOARDTTY "/dev/ttyS0"
#define ACK '\x06'
#define NACK '\x15'
#define PING '.'
#define OPROS '\x21'

struct ramdata {
unsigned short int addr;
unsigned char data[16];
unsigned char length;
};
int main(int argc, char** argv)
{
int ttyd, c, i, ret;
short int runstart;
FILE *fd;
struct termios oldtio,newtio;
char buf;
char *hexfile = 0, *pkbuf, *ptr, *sendfile = 0;
char runstart_stub[] = ":02AAAA060000SS\r";
unsigned char databuf[25], line[255];
struct ramdata rdata;
struct termios stdin_tio, stdin_tio_old;


ttyd = open(BOARDTTY, O_RDWR | O_NOCTTY );

if (ttyd <0) {
perror(BOARDTTY);
exit(-1);
}

tcgetattr(ttyd,&oldtio); //save current port settings

bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0; // inter-character timer unused
newtio.c_cc[VMIN] = 1; //byte-by-byte

tcflush(ttyd, TCIFLUSH);
tcsetattr(ttyd, TCSANOW, &newtio);

printf("Is there anybody out there?\n");

for (i=0; i<=19;i++) {
read(ttyd, &buf, 1);
printf("SDK: %c",buf);
}
return 0;
}

После запуска программы, и нажатия на кнопку сброса стенд выдает следующую сроку:
SDK: C
SDK: H
SDK: I
SDK: P
SDK: I
SDK: D
SDK: =
SDK: :
SDK: 5
SDK:
SDK: .
SDK: .
SDK: .
SDK: .
SDK: .
SDK: .
SDK: .
SDK: .
SDK: .
SDK: .

Хотя по документации должно выдавать примерно следующее: HEX202-xx где хх - номер версии загрузчика, и далее точки.

1) По какому протоколу передавать программы в стенд?
2) Допустим там используется загрузчик которому нужно передавать .hex файл в неизменном виде, значит ли это что я должен считывать из хекс файла байты и записывать их в порт или нужно преобразовать хекс файл в бинарный формат и затем с него считывать байт за байтом и передавать в порт?

Помогите пожалуйста разобраться.
vktp
 
Сообщения: 1
Зарегистрирован: 17 сен 2009, 14:34

Re: Распознать загрузчик SDK1.1

Сообщение Shico » 18 сен 2009, 15:15

Здравствуйте!

Видится два варианта:
1. Воспользоваться загрузчиком от производителя (Analog Devices). Описание протокола http://embedded.ifmo.ru/sdk/sdk11/components/mcu_aduc812_eng/uC004.pdf.
2. Использовать загрузчик HEX202. Для этого потребуется сначала загрузить его в стенд (в среде Windows). Утилита для программирования находится внутри архива. Протокол можно уточнить по прилагемым исходникам HEX 202.
aduc842_loader.rar
HEX 202 для ADuc842
(3.5 Мб) Скачиваний: 175
"Раньше гусиными перьями писали вечные мысли, а теперь вечными перьями пишут гусиные мысли". В. Солоухин
Аватара пользователя
Shico
 
Сообщения: 301
Зарегистрирован: 06 апр 2008, 16:15
Откуда: Санкт-Петербург

Re: Распознать загрузчик SDK1.1

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

Пример реализации протокола встроенного загрузчика от AD:
http://embedded.ifmo.ru/viewvc/TOOLS/gd ... &root=gm3p
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса


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

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

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

cron