Skip to content

Commit 71f830d

Browse files
committed
Add utilitary to disable JTAG access via USB in ftdi device.
1 parent 9a70f47 commit 71f830d

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

scripts/log-serial/Makefile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CFLAGS = -Wall -Wextra -O2
2+
LDLIBS = -lftdi
3+
4+
EXE = disable-jtag
5+
6+
.PHONY: all clean
7+
8+
all: $(EXE)
9+
10+
clean:
11+
rm -f $(EXE)

scripts/log-serial/disable-jtag.c

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include <ftdi.h>
2+
#include <stdio.h>
3+
4+
int main() {
5+
struct ftdi_context *ftdi;
6+
int ret;
7+
8+
ftdi = ftdi_new();
9+
if ((ret = ftdi_init(ftdi)) < 0) {
10+
fprintf(stderr, "Failed to initialize FTDI context: %s\n",
11+
ftdi_get_error_string(ftdi));
12+
ftdi_free(ftdi);
13+
return 1;
14+
}
15+
16+
/* FT4232H
17+
* Vendor ID: 0403h
18+
* Device ID: 6011h
19+
*/
20+
if ((ret = ftdi_usb_open_desc(ftdi, 0x0403, 0x6011, NULL, NULL)) < 0) {
21+
fprintf(stderr, "Failed to open device: %s\n", ftdi_get_error_string(ftdi));
22+
return 1;
23+
}
24+
25+
// Device connected on Interface A
26+
if ((ret = ftdi_set_interface(ftdi, INTERFACE_A)) < 0) {
27+
fprintf(stderr, "Failed to select channel: %s\n",
28+
ftdi_get_error_string(ftdi));
29+
return 1;
30+
}
31+
32+
// ADBUS7 disables AMC access. Enable bitbang mode for it.
33+
if ((ret = ftdi_set_bitmode(ftdi, 0b10000000, BITMODE_BITBANG)) < 0) {
34+
fprintf(stderr, "Failed to enable bit-bang mode: %s\n",
35+
ftdi_get_error_string(ftdi));
36+
return 1;
37+
}
38+
39+
uint8_t value = 0b10000000;
40+
if ((ret = ftdi_write_data(ftdi, &value, 1)) < 0) {
41+
fprintf(stderr, "Failed to write data: %s\n", ftdi_get_error_string(ftdi));
42+
return 1;
43+
}
44+
45+
ftdi_usb_close(ftdi);
46+
ftdi_deinit(ftdi);
47+
48+
return 0;
49+
}

0 commit comments

Comments
 (0)