|
1 | 1 | # Sequence diagrams for pyOCD sub-commands |
2 | 2 |
|
3 | 3 | ## Erase |
4 | | -- Sessions starts |
| 4 | +<!-- - Sessions starts |
5 | 5 | - Set Debug enable |
6 | 6 | - Discovery phase: |
7 | 7 | - Use selected connect mode (normal, pre-reset, under reset) |
|
22 | 22 | - Clean-up phase: |
23 | 23 | - Put all cores in deadloops |
24 | 24 | - Session ends: |
25 | | - - Remove Debug enable on device |
| 25 | + - Remove Debug enable on device --> |
| 26 | + |
| 27 | +```mermaid |
| 28 | +flowchart TD |
| 29 | + %% ERASE |
| 30 | + A0([Session starts]) --> A1[Set Debug enable] |
| 31 | +
|
| 32 | + subgraph A_DISC[Discovery phase] |
| 33 | + direction TB |
| 34 | + A2[Select connect: mode normal , pre-reset , under-reset] --> A3{Debug sequence needed?} |
| 35 | + A3 -- Yes --> A4[Execute debug sequence] |
| 36 | + A3 -- No --> A5[Continue] |
| 37 | + end |
| 38 | + A1 --> A_DISC |
| 39 | +
|
| 40 | + subgraph A_ERASE[Erase phase] |
| 41 | + direction TB |
| 42 | + A6[Halt all cores] --> A7[Set vector catch on all cores] |
| 43 | + A7 --> A8[Reset device using reset_type - primary core] |
| 44 | + A8 --> A9[Clear vector catch on all cores] |
| 45 | + A9 --> A10[Collect memory regions to erase] |
| 46 | + A10 --> A11{Algorithms executable on primary core?} |
| 47 | + A11 -- Yes --> A12{Erase mode?} |
| 48 | + A11 -- No --> A15[Switch to required core and perform erase] |
| 49 | + A15 --> A12 |
| 50 | + A12 -- Chip erase --> A13[Run chipErase else fall back to sector erase] |
| 51 | + A12 -- Sector erase --> A14[Collect sectors and erase] |
| 52 | + A13 --> A16[Erase successful] |
| 53 | + A14 --> A16 |
| 54 | + end |
| 55 | + A_DISC --> A_ERASE |
| 56 | +
|
| 57 | + subgraph A_CLEAN[Clean-up phase] |
| 58 | + direction TB |
| 59 | + A17[Put all cores in deadloops] |
| 60 | + end |
| 61 | + A_ERASE --> A_CLEAN |
| 62 | +
|
| 63 | + A18([Session ends]) --> A19[Remove Debug enable] |
| 64 | + A_CLEAN --> A18 |
| 65 | +``` |
26 | 66 |
|
27 | 67 |
|
28 | 68 | ## Load |
29 | | -- Session starts |
| 69 | +<!-- - Session starts |
30 | 70 | - Set Debug enable |
31 | 71 | - Discovery phase: |
32 | 72 | - Use selected connect mode (normal, pre-reset, under-reset) |
|
50 | 90 | - Clean-up phase: |
51 | 91 | - Put all cores in deadloops |
52 | 92 | - Session ends: |
53 | | - - Remove Debug enable on device |
| 93 | + - Remove Debug enable on device --> |
| 94 | + |
| 95 | +```mermaid |
| 96 | +flowchart TD |
| 97 | + %% LOAD |
| 98 | + B0([Session starts]) --> B1[Set Debug enable] |
| 99 | +
|
| 100 | + subgraph B_DISC[Discovery phase] |
| 101 | + direction TB |
| 102 | + B2[Select connect mode: normal, pre-reset, under-reset] --> B3{Debug sequence needed?} |
| 103 | + B3 -- Yes --> B4[Execute debug sequence] |
| 104 | + B3 -- No --> B5[Continue] |
| 105 | + end |
| 106 | + B1 --> B_DISC |
54 | 107 |
|
| 108 | + subgraph B_FLASH[Flash phase] |
| 109 | + direction TB |
| 110 | + B6[Halt all cores] --> B7[Set vector catch on all cores] |
| 111 | + B7 --> B8[Reset device using reset_type - primary core] |
| 112 | + B8 --> B9[Clear vector catch on all cores] |
| 113 | + B9 --> B10[Collect memory regions to program] |
| 114 | + B10 --> B11{Algorithm usable on primary core?} |
| 115 | + B11 -- Yes --> B12[Flash application] |
| 116 | + B11 -- No --> B13[Switch to required core] |
| 117 | + B12 --> B14[Flash successful] |
| 118 | + B13 --> B12 |
| 119 | +
|
| 120 | + B14 --> B15{Optional post-flash reset?} |
| 121 | + B15 -- Yes --> B16[Set vector catch on all cores] |
| 122 | + B16 --> B17[Hardware reset device] |
| 123 | + B17 --> B18[Clear vector catch on all cores] |
| 124 | + B15 -- No --> B19[Skip] |
| 125 | + end |
| 126 | + B_DISC --> B_FLASH |
| 127 | +
|
| 128 | + subgraph B_CLEAN[Clean-up phase] |
| 129 | + direction TB |
| 130 | + B20[Put all cores in deadloops] |
| 131 | + end |
| 132 | + B_FLASH --> B_CLEAN |
| 133 | +
|
| 134 | + B21([Session ends]) --> B22[Remove Debug enable] |
| 135 | + B_CLEAN --> B21 |
| 136 | +``` |
55 | 137 |
|
56 | 138 | ## GDBServer |
57 | | -- Session start |
| 139 | +<!-- - Session start |
58 | 140 | - Set Debug enable |
59 | 141 | - Discovery phase: |
60 | 142 | - Use selected connect mode (normal, pre-reset, under-reset) |
|
68 | 150 | - Execute GDB init commands (monitor reset halt) |
69 | 151 | - Debug.. |
70 | 152 | - Debug session ends |
71 | | - - Remove Debug enable on device |
| 153 | + - Remove Debug enable on device --> |
| 154 | + |
| 155 | +```mermaid |
| 156 | +flowchart TD |
| 157 | + %% GDBSERVER |
| 158 | + C0([Session starts]) --> C1[Set Debug enable] |
| 159 | +
|
| 160 | + subgraph C_DISC[Discovery phase] |
| 161 | + direction TB |
| 162 | + C2[Select connect mode: normal, pre-reset, under-reset] --> C3{Debug sequence needed?} |
| 163 | + C3 -- Yes --> C4[Execute debug sequence] |
| 164 | + C3 -- No --> C5[Continue] |
| 165 | + end |
| 166 | + C1 --> C_DISC |
| 167 | +
|
| 168 | + subgraph C_GDB[GDB phase] |
| 169 | + direction TB |
| 170 | + C6[Halt all cores] --> C7[Create GDB servers for all cores] |
| 171 | + C7 --> C8{reset-run option?} |
| 172 | + C8 -- Yes --> C9[Reset device using reset_type - primary core] |
| 173 | + C8 -- No --> C10[Skip reset] |
| 174 | + C9 --> C11[Wait for GDB client] |
| 175 | + C10 --> C11 |
| 176 | + C11 --> C12[Client connected] |
| 177 | + C12 --> C13[Run GDB init commands - e.g., monitor reset halt] |
| 178 | + C13 --> C14[Debugging in progress] |
| 179 | + end |
| 180 | + C_DISC --> C_GDB |
| 181 | +
|
| 182 | + C15([Debug session ends]) --> C16[Remove Debug enable] |
| 183 | + C_GDB --> C15 |
| 184 | +``` |
0 commit comments