[an error occurred while processing this directive]
Мой рецептик :)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Мартовский Котяра 15 апреля 2004 г. 02:32
В ответ на: Очень интересует :) Заранее благодарен :) отправлено MegaVolt 14 апреля 2004 г. 09:03

У меня триальная ISE 5.2, естественно же вылеченная от 90-дневности.
Так что не гарантирую что у тебя все это будет работать, но попытаться можно. Итак, патчим _impact.exe
Первый кусок:
000001F4: 20 60
000001F7: 60 E0
000368E2: 5A 1A
000368E3: 2E D3
000368E4: 00 04
00036FB2: 8A 4A
00036FB3: 27 CC
00036FB4: 00 04
Тут как всегда, смещение в файле, ранее стоявший байт, замена.
Второй кусок прописывается со смещения 83BC0. Там в родном файле одни нули. Вот он :
4C 49 42 43 4F 4D 4D 55 4E 49 43 41 54 49 4F 4E
53 2E 44 4C 4C 00 00 00 44 3A 5C 53 50 59 00 00
77 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
51 B9 C0 3B 48 00 51 FF 15 30 40 48 00 50 05 E0
60 01 00 A3 F4 3B 48 00 58 50 05 60 61 01 00 A3
F8 3B 48 00 58 05 78 61 01 00 B9 E0 3B 48 00 51
B9 D8 3B 48 00 51 FF 10 A3 F0 3B 48 00 59 59 59
58 A3 EC 3B 48 00 E8 F5 5A FB FF 60 A1 F0 3B 48
00 50 A1 F4 3B 48 00 FF 10 59 61 8B 0D EC 3B 48
00 51 33 C9 EB 38 90 90 60 8B 44 24 3C 8B 5C 24
40 8B 0D F0 3B 48 00 3D 38 00 45 01 90 90 51 53
6A 01 50 A1 F8 3B 48 00 FF 10 83 C4 10 61 85 DB
C3 8B 3D F0 3B 48 00 85 FF 75 CD 85 DB C3 89 0D
F0 3B 48 00 C3

Патчим libCommunications.dll
00005097: 90 BF
00005098: 90 91
00005099: 90 3C
0000509A: 90 48
0000509B: 90 00
0000509C: 90 FF
0000509D: 90 D7
0000509E: 90 EB
0000509F: 90 5D
000050FB: 85 EB
000050FC: DB 9A
В результате все что пишется и читается с jtag будет слито в файл с именем d:\spy состоящий из структур вида:
typedef struct
{
DWORD cmd; //0d - out port, 0a in port disp 0
DWORD port; //378 for out, 379 for in disp 4
DWORD rsv1; // disp 8
DWORD rsv2; // disp c
DWORD rsv3; // disp 10
DWORD val; // outp(port, val) for out, val=inp(port) for in
}
JtagOp;
Программируем и проверяем микросхему по отдельности. Сначала program. После этого переименовываем d:\spy во что-то другое. Потом verify и опять переименовываем d:\spy. Добиваемся чтобы не было ошибок. Слитые файлы получаются очень большими. 200 с лишним метров на program и verify для XC2S200. Поэтому сжимаем их, оставляя на одно событие jtag-a 4 бита вместо 24 байт. Полученные после такого сжатия файлы все равно сильно избыточны и прекрасно жмутся pkzip-ом

#define RD_OP 0x0a
int GetKey(JtagOp *op)
{
if(op->cmd==RD_OP) return 8 | ((op->val >> 4)&1);
else return op->val & 7;
}
void main(int argc, char *argv[])
{
FILE *in, *out;
JtagOp op;
int i, r;
if((in=fopen(argv[1], "rb"))==0)
{
printf("Cannot open input %s\n", argv[1]);
return;
}
out=fopen("jtag.bin", "wb");
i=0;
while(fread(&op, 1, sizeof(op), in)==sizeof(op))
{
if(!i) r=GetKey(&op);
else fputc(r | (GetKey(&op) << 4), out);
i=(i+1)&1;
}
if(!i) fputc(r | 0xf0, out);
else fputc(0xff, out);
fcloseall();
}
Дальше можем грузить эти файлы из под DOS тем же кабелем каким грузили под impact.
#define WR_PORT 0x378
#define RD_PORT 0x379
int PlayKey(int k, long *err)
{
char p;
long e = *err;
if(k&8)
{
if((k&7)==7) return 0;
if( ((inp(RD_PORT)>>4)&1) != (k&1)) *err = e+1;
}
else outp(WR_PORT, k | 0x50);
return 1;
}
void main(int argc, char *argv[])
{
FILE *f;
long n, err=0;
int k, r;
if((f=fopen(argv[1],"rb"))==NULL)
{printf("Cannot open input\n"); return;}
n=0;
while((k=fgetc(f)) != EOF)
{
if(!PlayKey(k&15, &err)) break;
n++;
if(!PlayKey((k>>4)&15, &err)) break;
n++;
}
printf("Complete. Keys: %ld, errors: %ld\n", n, err);
fclose(f);
}

У меня машина работает под DOS в задаче реального времени, вообще без клавы и монитора, поддерживая связь только по локалке. И если раньше я грузил прошивку с другой машины через impact, то теперь все происходит в пределах одной. Что и красиво и удобно.
Удачи !


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru