Fixed flash utility for STM32F4
[fw/stlink] / src / test_usb.c
1 #include <stdio.h>
2 #include "stlink-common.h"
3
4
5 int main(int ac, char** av) {
6     stlink_t* sl;
7     reg regs;
8
9     /* unused */
10     ac = ac;
11     av = av;
12
13     sl = stlink_open_usb(10);
14     if (sl != NULL) {
15         printf("-- version\n");
16         stlink_version(sl);
17         
18         printf("mode before doing anything: %d\n", stlink_current_mode(sl));
19
20         if (stlink_current_mode(sl) == STLINK_DEV_DFU_MODE) {
21             printf("-- exit_dfu_mode\n");
22             stlink_exit_dfu_mode(sl);
23         }
24
25         printf("-- enter_swd_mode\n");
26         stlink_enter_swd_mode(sl);
27
28         printf("-- mode after entering swd mode: %d\n", stlink_current_mode(sl));
29
30         stlink_identify_device(sl);
31         printf("-- chip id: %#x\n", sl->chip_id);
32         printf("-- core_id: %#x\n", sl->core_id);
33
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);
38
39         printf("-- read_sram\n");
40         static const uint32_t sram_base = 0x8000000;
41         uint32_t off;
42         for (off = 0; off < 16; off += 4)
43             stlink_read_mem32(sl, sram_base + off, 4);
44
45         printf("FP_CTRL\n");
46         stlink_read_mem32(sl, CM3_REG_FP_CTRL, 4);
47         
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); */
54
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);
62         
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);
70
71         printf("-- status\n");
72         stlink_status(sl);
73
74         printf("-- reset\n");
75         stlink_reset(sl);
76         stlink_force_debug(sl);
77         /* Test reg write*/
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, &regs);
83         
84        
85         stlink_read_all_regs(sl, &regs);
86
87         printf("-- status\n");
88         stlink_status(sl);
89
90         printf("-- step\n");
91         stlink_step(sl);
92
93         printf("-- run\n");
94         stlink_run(sl);
95
96         printf("-- exit_debug_mode\n");
97         stlink_exit_debug_mode(sl);
98
99         stlink_close(sl);
100     }
101
102     return 0;
103 }