aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-04-25 21:23:00 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-04-25 22:03:25 -0400
commit95af192c99459c56bb30763afd93582a524efc3a (patch)
treee664f8366a82181a8e1a5e42f514651f90b72888 /examples
parentbf72983543f446026556e13f62d63aad2092f1ec (diff)
downloadlibrambutan-95af192c99459c56bb30763afd93582a524efc3a.tar.gz
librambutan-95af192c99459c56bb30763afd93582a524efc3a.zip
Better debug port support.
- gpio.h: afio_mapr_swj_config() renamed afio_cfg_debug_ports() - [new] wirish_debug.h: disableDebugPorts(), enableDebugPorts() - Maple, Maple Native, and Maple RET6 PIN_MAPs are now larger by 5, have mappings for the extra JTAG/SW pins. Documentation was updated appropriately.
Diffstat (limited to 'examples')
-rw-r--r--examples/test-session.cpp79
1 files changed, 76 insertions, 3 deletions
diff --git a/examples/test-session.cpp b/examples/test-session.cpp
index d97d0ca..1d9daf0 100644
--- a/examples/test-session.cpp
+++ b/examples/test-session.cpp
@@ -27,8 +27,10 @@ void cmd_serial1_echo(void);
void cmd_gpio_monitoring(void);
void cmd_sequential_adc_reads(void);
void cmd_gpio_qa(void);
-void cmd_sequential_gpio_writes(void);
+void cmd_sequential_gpio_toggling(void);
void cmd_gpio_toggling(void);
+void cmd_sequential_debug_gpio_toggling(void);
+void cmd_debug_gpio_toggling(void);
void cmd_but_test(void);
void cmd_sequential_pwm_test(void);
void cmd_servo_sweep(void);
@@ -148,13 +150,21 @@ void loop () {
break;
case 'g':
- cmd_sequential_gpio_writes();
+ cmd_sequential_gpio_toggling();
break;
case 'G':
cmd_gpio_toggling();
break;
+ case 'j':
+ cmd_sequential_debug_gpio_toggling();
+ break;
+
+ case 'J':
+ cmd_debug_gpio_toggling();
+ break;
+
case 'B':
cmd_but_test();
break;
@@ -266,6 +276,8 @@ void cmd_print_help(void) {
SerialUSB.println("\tU: dump data as fast as possible on USB");
SerialUSB.println("\tg: toggle GPIOs sequentially");
SerialUSB.println("\tG: toggle GPIOs at the same time");
+ SerialUSB.println("\tj: toggle debug port GPIOs sequentially");
+ SerialUSB.println("\tJ: toggle debug port GPIOs simultaneously");
SerialUSB.println("\tB: test the built-in button");
SerialUSB.println("\tf: toggle pin 4 as fast as possible in bursts");
SerialUSB.println("\tr: monitor and print GPIO status changes");
@@ -534,7 +546,7 @@ void cmd_gpio_qa(void) {
}
}
-void cmd_sequential_gpio_writes(void) {
+void cmd_sequential_gpio_toggling(void) {
SerialUSB.println("Sequentially toggling all unused pins. "
"Press any key for next pin, ESC to stop.");
@@ -582,6 +594,67 @@ void cmd_gpio_toggling(void) {
}
}
+uint8 debugGPIOPins[] = {BOARD_JTMS_SWDIO_PIN,
+ BOARD_JTCK_SWCLK_PIN,
+ BOARD_JTDI_PIN,
+ BOARD_JTDO_PIN,
+ BOARD_NJTRST_PIN};
+
+#define N_DEBUG_PINS 5
+
+void cmd_sequential_debug_gpio_toggling(void) {
+ SerialUSB.println("Toggling all debug (JTAG/SWD) pins sequentially. "
+ "This will permanently disable debug port "
+ "functionality.");
+ disableDebugPorts();
+
+ for (int i = 0; i < N_DEBUG_PINS; i++) {
+ pinMode(debugGPIOPins[i], OUTPUT);
+ }
+
+ for (int i = 0; i < N_DEBUG_PINS; i++) {
+ int pin = debugGPIOPins[i];
+ SerialUSB.print("Toggling pin ");
+ SerialUSB.print(pin, DEC);
+ SerialUSB.println("...");
+
+ pinMode(pin, OUTPUT);
+ do {
+ togglePin(pin);
+ } while (!SerialUSB.available());
+
+ digitalWrite(pin, LOW);
+ if (SerialUSB.read() == ESC)
+ break;
+ }
+
+ for (int i = 0; i < N_DEBUG_PINS; i++) {
+ digitalWrite(debugGPIOPins[i], 0);
+ }
+}
+
+void cmd_debug_gpio_toggling(void) {
+ SerialUSB.println("Toggling debug GPIO simultaneously. "
+ "This will permanently disable JTAG and Serial Wire "
+ "debug port functionality. "
+ "Press any key to stop.");
+ disableDebugPorts();
+
+ for (uint32 i = 0; i < N_DEBUG_PINS; i++) {
+ pinMode(debugGPIOPins[i], OUTPUT);
+ }
+
+ while (!SerialUSB.available()) {
+ for (uint32 i = 0; i < N_DEBUG_PINS; i++) {
+ togglePin(debugGPIOPins[i]);
+ }
+ }
+
+ for (uint32 i = 0; i < N_DEBUG_PINS; i++) {
+ digitalWrite(debugGPIOPins[i], LOW);
+ }
+}
+
void cmd_but_test(void) {
SerialUSB.println("Press the button to test. Press any key to stop.");
pinMode(BOARD_BUTTON_PIN, INPUT);