2 #include "stlink-common.h"
5 int main(int ac, char** av) {
13 sl = stlink_open_usb(10);
15 printf("-- version\n");
18 printf("mode before doing anything: %d\n", stlink_current_mode(sl));
20 if (stlink_current_mode(sl) == STLINK_DEV_DFU_MODE) {
21 printf("-- exit_dfu_mode\n");
22 stlink_exit_dfu_mode(sl);
25 printf("-- enter_swd_mode\n");
26 stlink_enter_swd_mode(sl);
28 printf("-- mode after entering swd mode: %d\n", stlink_current_mode(sl));
30 stlink_identify_device(sl);
31 printf("-- chip id: %#x\n", sl->chip_id);
32 printf("-- core_id: %#x\n", sl->core_id);
34 cortex_m3_cpuid_t cpuid;
35 stlink_cpu_id(sl, &cpuid);
36 printf("cpuid:impl_id = %0#x, variant = %#x\n", cpuid.implementer_id, cpuid.variant);
37 printf("cpuid:part = %#x, rev = %#x\n", cpuid.part, cpuid.revision);
39 printf("-- read_sram\n");
40 static const uint32_t sram_base = 0x8000000;
42 for (off = 0; off < 16; off += 4)
43 stlink_read_mem32(sl, sram_base + off, 4);
46 stlink_read_mem32(sl, CM3_REG_FP_CTRL, 4);
48 // no idea what reg this is.. */
49 // stlink_read_mem32(sl, 0xe000ed90, 4);
50 // no idea what register this is...
51 // stlink_read_mem32(sl, 0xe000edf0, 4);
52 // offset 0xC into TIM11 register? TIMx_DIER?
53 // stlink_read_mem32(sl, 0x4001100c, 4); */
55 /* Test 32 bit Write */
56 write_uint32(sl->q_buf,0x01234567);
57 stlink_write_mem32(sl,0x200000a8,4);
58 write_uint32(sl->q_buf,0x89abcdef);
59 stlink_write_mem32(sl,0x200000ac, 4);
60 stlink_read_mem32(sl, 0x200000a8, 4);
61 stlink_read_mem32(sl, 0x200000ac, 4);
63 /* Test 8 bit write */
64 write_uint32(sl->q_buf,0x01234567);
65 stlink_write_mem8(sl,0x200001a8,3);
66 write_uint32(sl->q_buf,0x89abcdef);
67 stlink_write_mem8(sl, 0x200001ac, 3);
68 stlink_read_mem32(sl, 0x200001a8, 4);
69 stlink_read_mem32(sl, 0x200001ac, 4);
71 printf("-- status\n");
76 stlink_force_debug(sl);
78 stlink_write_reg(sl, 0x01234567, 3);
79 stlink_write_reg(sl, 0x89abcdef, 4);
80 stlink_write_reg(sl, 0x12345678, 15);
81 for (off = 0; off < 21; off += 1)
82 stlink_read_reg(sl, off, ®s);
85 stlink_read_all_regs(sl, ®s);
87 printf("-- status\n");
96 printf("-- exit_debug_mode\n");
97 stlink_exit_debug_mode(sl);