File tree 1 file changed +28
-5
lines changed
1 file changed +28
-5
lines changed Original file line number Diff line number Diff line change @@ -1203,6 +1203,7 @@ static void print_help(const char *name)
1203
1203
printf ("\n" );
1204
1204
printf ("Arguments:\n" );
1205
1205
printf (" -l [logfile] Log boot output to the specified file\n" );
1206
+ printf (" -w Wait for serial port to appear\n" );
1206
1207
printf (" -s Enter boot shell\n" );
1207
1208
printf (" -h Print this help\n" );
1208
1209
printf ("\n" );
@@ -1222,8 +1223,9 @@ int main(int argc, char **argv) {
1222
1223
uint32_t ret ;
1223
1224
int opt ;
1224
1225
int shell = 0 ;
1226
+ int wait_serial = 0 ;
1225
1227
1226
- while ((opt = getopt (argc , argv , "hl:s " )) != -1 ) {
1228
+ while ((opt = getopt (argc , argv , "hl:sw " )) != -1 ) {
1227
1229
switch (opt ) {
1228
1230
1229
1231
case 'l' :
@@ -1234,6 +1236,10 @@ int main(int argc, char **argv) {
1234
1236
shell = 1 ;
1235
1237
break ;
1236
1238
1239
+ case 'w' :
1240
+ wait_serial = 1 ;
1241
+ break ;
1242
+
1237
1243
default :
1238
1244
case 'h' :
1239
1245
print_help (argv [0 ]);
@@ -1251,10 +1257,27 @@ int main(int argc, char **argv) {
1251
1257
exit (1 );
1252
1258
}
1253
1259
1254
- serfd = open (argv [1 ], O_RDWR );
1255
- if (-1 == serfd ) {
1256
- perror ("Unable to open serial port" );
1257
- exit (1 );
1260
+ if (wait_serial ) {
1261
+ printf ("Waiting for serial port to connect: ." );
1262
+ fflush (stdout );
1263
+ }
1264
+ while (1 ) {
1265
+ serfd = open (argv [1 ], O_RDWR );
1266
+ if (-1 == serfd ) {
1267
+ if (wait_serial ) {
1268
+ printf ("." );
1269
+ fflush (stdout );
1270
+ sleep (1 );
1271
+ continue ;
1272
+ } else {
1273
+ perror ("Unable to open serial port" );
1274
+ exit (1 );
1275
+ }
1276
+ }
1277
+ break ;
1278
+ }
1279
+ if (wait_serial ) {
1280
+ printf ("\n" );
1258
1281
}
1259
1282
1260
1283
s1blfd = open (argv [2 ], O_RDONLY );
You can’t perform that action at this time.
0 commit comments