annotate target-utils/tf-breakin/mkembed.c @ 923:10b4bed10192

gsm-fw/L1: fix for the DSP patch corruption bug The L1 code we got from the LoCosto fw contains a feature for DSP CPU load measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the code dealing with that feature is conditionalized as #if (DSP >= 38), but one spot was missed, and the MCU code was writing into an API word dealing with this feature. In TCS211 this DSP API word happens to be used by the DSP code patch, hence that write was corrupting the patched DSP code.
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Mon, 19 Oct 2015 17:13:56 +0000
parents 22c6e39e1789
children 7166c8311b0d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
357
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
1 #include <sys/types.h>
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
2 #include <sys/file.h>
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
3 #include <sys/stat.h>
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
4 #include <stdio.h>
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
5 #include <stdlib.h>
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
6 #include <unistd.h>
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
7
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
8 #define PAYLOAD_SIZE 112
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
9 u_char payload_buf[PAYLOAD_SIZE];
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
10
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
11 read_binary(filename)
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
12 char *filename;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
13 {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
14 int fd;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
15 struct stat st;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
16
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
17 fd = open(filename, O_RDONLY);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
18 if (fd < 0) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
19 perror(filename);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
20 exit(1);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
21 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
22 fstat(fd, &st);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
23 if (!S_ISREG(st.st_mode)) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
24 fprintf(stderr, "error: %s is not a regular file\n", filename);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
25 exit(1);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
26 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
27 if (st.st_size != PAYLOAD_SIZE) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
28 fprintf(stderr, "error: %s size mismatch\n", filename);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
29 exit(1);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
30 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
31 if (read(fd, payload_buf, PAYLOAD_SIZE) != PAYLOAD_SIZE) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
32 perror("read error");
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
33 exit(1);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
34 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
35 close(fd);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
36 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
37
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
38 write_output(filename)
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
39 char *filename;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
40 {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
41 FILE *of;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
42 int i, j, idx;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
43
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
44 of = fopen(filename, "w");
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
45 if (!of) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
46 perror(filename);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
47 exit(1);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
48 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
49 fprintf(of, "u_char payload[%d] = {\n", PAYLOAD_SIZE);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
50 idx = 0;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
51 for (i = 0; i < 14; i++) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
52 for (j = 0; j < 8; j++) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
53 if (j)
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
54 putc(' ', of);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
55 else
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
56 putc('\t', of);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
57 fprintf(of, "0x%02X,", payload_buf[idx++]);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
58 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
59 putc('\n', of);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
60 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
61 fputs("};\n", of);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
62 fclose(of);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
63 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
64
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
65 main(argc, argv)
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
66 char **argv;
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
67 {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
68 if (argc != 3) {
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
69 fprintf(stderr, "usage: %s payload.bin output.c\n", argv[0]);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
70 exit(1);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
71 }
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
72 read_binary(argv[1]);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
73 write_output(argv[2]);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
74 exit(0);
22c6e39e1789 target-utils/tf-breakin: build embeddable form of the payload
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
75 }