pico430prog/src/main.c

88 lines
2.2 KiB
C
Raw Normal View History

2021-09-26 22:45:46 +00:00
#include <stdio.h>
2021-09-27 14:10:02 +00:00
#include <hardware/gpio.h>
2021-09-26 22:45:46 +00:00
#include <pico/stdlib.h>
#include <pico/binary_info.h>
2021-09-27 15:58:53 +00:00
2021-09-26 22:45:46 +00:00
#include "pio_sbw.h"
2021-09-27 15:58:53 +00:00
#include "tap.h"
#include "msp430dbg.h"
2021-09-26 22:45:46 +00:00
void printbuf(const uint8_t* buf, size_t size) {
2021-09-27 14:10:02 +00:00
for (size_t i = 0; i < size; ++i)
2021-09-26 22:45:46 +00:00
printf("%02x%c", buf[i], i % 16 == 15 ? '\n' : ' ');
}
int main() {
2021-09-27 14:10:02 +00:00
gpio_init(PINOUT_SBW_TCK);
gpio_set_function(PINOUT_SBW_TCK, GPIO_FUNC_SIO);
gpio_set_dir(PINOUT_SBW_TCK, true);
gpio_put(PINOUT_SBW_TCK, true);
2021-09-26 22:45:46 +00:00
stdio_init_all();
/*sbw_preinit();
2021-09-27 14:29:45 +00:00
printf("%s\n", "preinited");
2021-09-26 22:45:46 +00:00
bool s = sbw_init();
printf("%s\n", s ? "inited" : "failure");*/
2021-09-27 14:10:02 +00:00
2021-09-27 15:58:53 +00:00
/*uint8_t tdi = 0x0f, tdo = 0;
2021-09-27 14:10:02 +00:00
sbw_sequence(8, true, &tdi, &tdo);
printf("seq done, tdo=%02x\n", tdo);
uint8_t tms = 0xf0;
sbw_tms_sequence(8, true, &tms);
printf("tmsseq done\n");
printf("%s tclk:\n", "set");
sbw_set_tclk();
printf("%s tclk:\n", "clr");
sbw_clr_tclk();
printf("%s tclk:\n", "set");
sbw_set_tclk();
printf("%s tclk:\n", "clr");
sbw_clr_tclk();
printf("doing a tclk burst now!\n");
sbw_tclk_burst(16);
2021-09-27 15:58:53 +00:00
printf("done.\n");*/
2021-09-29 15:18:18 +00:00
/*sbw_tap_reset();
sbw_check_fuse();
uint8_t id = sbw_tap_shift_ir(msp430_ir_bypass);
printf("JTAG ID=%02x\n", id);
sbw_tap_shift_ir(msp430_ir_ctrl_sig_16bit);
uint16_t dr = sbw_tap_read_dr();
printf("dr.0 = %04x\n", dr);
sbw_clr_tclk(); // FIXME: looks very bad
sbw_set_tclk(); // FIXME: looks very bad
dr = sbw_tap_read_dr();
printf("dr.1 = %04x\n", dr);
sbw_clr_tclk(); // FIXME: looks very bad
sbw_set_tclk(); // FIXME: looks very bad
dr = sbw_tap_read_dr();
printf("dr.2 = %04x\n", dr);
sbw_clr_tclk(); // FIXME: looks very bad
sbw_set_tclk(); // FIXME: looks very bad
sbw_tap_shift_ir(msp430_ir_data_16bit);
dr = sbw_tap_shift_dr(0x3fff); // "jmp ."
printf("dr.10 = %04x\n", dr);
sbw_clr_tclk(); // looks ok here?
sbw_tap_shift_ir(msp430_ir_ctrl_sig_16bit); // FIXME: a
dr = sbw_tap_shift_dr(0x2409); // JTAG halt // FIXME: a
printf("dr.11 = %04x\n", dr);
sbw_set_tclk(); // looks ok here?
printf("test done\n");*/
2021-09-27 15:58:53 +00:00
uint32_t initv = msp430_device_get(200e3);
printf("init -> %08lx\n", initv);
2021-09-26 22:45:46 +00:00
return 0;
}