-
Notifications
You must be signed in to change notification settings - Fork 67
/
qflashparm.c
91 lines (75 loc) · 2.27 KB
/
qflashparm.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "include.h"
// Установка параметров flash-контроллера
//
void main(int argc, char* argv[]) {
#ifndef WIN32
char devname[20]="/dev/ttyUSB0";
#else
char devname[20]="";
#endif
// локальные параметры для установки
int lud=-1, lecc=-1, lspare=-1, lbad=-1;
int sflag=0;
int opt;
int badloc;
while ((opt = getopt(argc, argv, "hp:s:u:e:d:")) != -1) {
switch (opt) {
case 'h':
printf("\n Утилита предназначена установки параметров NAND-контроллера\n\n\
Допустимы следующие ключи:\n\n\
-p <tty> - указывает имя устройства последовательного порта для общения с загрузчиком\n\
-s nnn - установка размера поля spare на сектор\n\
-u nnn - установка размера поля данных сектора\n\
-e nnn - установка размера поля ECC на сектор\n\
-d [L]xxx- установка маркера дефектных блоков на байт xxx (hex), L=U(user) или S(spare)\n\
");
return;
case 'p':
strcpy(devname,optarg);
break;
case 's':
sscanf(optarg,"%d",&lspare);
sflag=1;
break;
case 'u':
sscanf(optarg,"%d",&lud);
sflag=1;
break;
case 'e':
sscanf(optarg,"%d",&lecc);
sflag=1;
break;
case 'd':
parse_badblock_arg(optarg, &lbad, &badloc);
sflag=1;
break;
case '?':
case ':':
return;
}
}
#ifdef WIN32
if (*devname == '\0')
{
printf("\n - Последовательный порт не задан\n");
return;
}
#endif
if (!open_port(devname)) {
#ifndef WIN32
printf("\n - Последовательный порт %s не открывается\n", devname);
#else
printf("\n - Последовательный порт COM%s не открывается\n", devname);
#endif
return;
}
if (!sflag) {
hello(1);
return;
}
hello(0);
if (lspare != -1) set_sparesize(lspare);
if (lud != -1) set_udsize(lud);
if (lecc != -1) set_eccsize(lecc);
if (lbad != -1) set_badmark_pos (lbad, badloc);
}