Skip to content

Commit be116a7

Browse files
author
Clément Léger
committed
HostBootloader: first working version. no opts yet.
1 parent 23328ed commit be116a7

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

src/cyhostboot.c

100644100755
+22-14
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@
1111
#include <cybtldr_api.h>
1212
#include <cybtldr_api2.h>
1313

14+
15+
#ifdef DEBUG
16+
# define dbg_printf printf
17+
#else
18+
# define dbg_printf
19+
#endif
20+
1421
static char* g_tty_device = "/dev/ttyACM2";
1522
static int g_serial_fd = -1;
1623

@@ -23,7 +30,7 @@ static int serial_open()
2330
{
2431
struct termios tty;
2532

26-
printf("Opening serial %s\n", g_tty_device);
33+
dbg_printf("Opening serial %s\n", g_tty_device);
2734

2835
g_serial_fd = open(g_tty_device, O_RDWR | O_NOCTTY);
2936
if (g_serial_fd < 0) {
@@ -54,7 +61,7 @@ static int serial_open()
5461

5562
static int serial_close()
5663
{
57-
printf("Closing serial\n");
64+
dbg_printf("Closing serial\n");
5865
close(g_serial_fd);
5966

6067
return CYRET_SUCCESS;
@@ -66,7 +73,7 @@ static int serial_read(unsigned char *bytes, int size)
6673
unsigned long long start_milli = 0, end_milli = 0;
6774
ssize_t read_bytes;
6875
struct pollfd fds[1];
69-
int poll_ret;
76+
int poll_ret, i;
7077
unsigned int cur_byte = 0;
7178

7279
while(1) {
@@ -76,8 +83,8 @@ static int serial_read(unsigned char *bytes, int size)
7683

7784
clock_gettime(CLOCK_MONOTONIC, &tp);
7885
end_milli = timespec_milliseconds(&tp);
79-
if (start_milli && (end_milli - start_milli) > 1000)
80-
return CYRET_SUCCESS;
86+
if (start_milli && (end_milli - start_milli) > 100)
87+
break;
8188

8289
poll_ret = poll(fds, 1, 0);
8390
if (poll_ret == 0) {
@@ -92,7 +99,10 @@ static int serial_read(unsigned char *bytes, int size)
9299

93100
read_bytes = read(g_serial_fd, &bytes[cur_byte++], 1);
94101
}
95-
102+
dbg_printf("Read %d bytes\n", cur_byte);
103+
for(i = 0; i < cur_byte; i++)
104+
dbg_printf(" 0x%02x ", bytes[i]);
105+
dbg_printf("\n");
96106
return CYRET_SUCCESS;
97107
}
98108

@@ -101,7 +111,10 @@ static int serial_write(unsigned char *bytes, int size)
101111
int i;
102112
ssize_t write_bytes;
103113

104-
printf("Serial: writing %d bytes to bootloader\n", size);
114+
dbg_printf("Serial: writing %d bytes to bootloader\n", size);
115+
for(i = 0; i< size; i++)
116+
dbg_printf(" 0x%02x ", bytes[i]);
117+
dbg_printf("\n");
105118
write_bytes = write(g_serial_fd, bytes, size);
106119
if (write_bytes != size) {
107120
printf("Error when writing bytes\n");
@@ -116,7 +129,7 @@ CyBtldr_CommunicationsData serial_coms = {
116129
.CloseConnection = serial_close,
117130
.ReadData = serial_read,
118131
.WriteData = serial_write,
119-
.MaxTransferSize = 256,
132+
.MaxTransferSize = 64,
120133
};
121134

122135

@@ -136,11 +149,6 @@ int main(int argc, char **argv)
136149
printf("Programming failed: %d\n", ret);
137150
return 1;
138151
}
139-
printf("Starting verifying\n");
140-
ret = CyBtldr_RunAction(VERIFY, argv[1], NULL, 1, &serial_coms, serial_progress_update);
141-
if (ret != CYRET_SUCCESS) {
142-
printf("Programming failed: %d\n", ret);
143-
return 1;
144-
}
152+
printf("programming OK !\n");
145153
return 0;
146154
}

0 commit comments

Comments
 (0)