@@ -37,35 +37,35 @@ This example will demonstrate:
37
37
38
38
- PIC18F56Q24 Curiosity Nano [ (EV01E86A)] ( https://www.microchip.com/en-us/development-tool/ev01e86a )
39
39
40
- [ ![ PIC18F56Q24_CNano] ( images\ 230928-mcu8-photo-ev01e86a-front-transparent.PNG )] ( images\ 230928-mcu8-photo-ev01e86a-front-transparent.PNG )
40
+ [ ![ PIC18F56Q24_CNano] ( images/ 230928-mcu8-photo-ev01e86a-front-transparent.PNG )] ( images/ 230928-mcu8-photo-ev01e86a-front-transparent.PNG )
41
41
42
42
---
43
43
## Setup
44
44
45
45
The following project setup is the same for all the example project pairs. If something goes wrong while running these examples, confirm that the settings in the projects are consistent with the options seen in this section.
46
46
47
47
### Client Setup
48
- [ ![ mdfu-builder] ( images\ ProjectConfigurationOverview.PNG )] ( images\ ProjectConfigurationOverview.PNG )
48
+ [ ![ mdfu-builder] ( images/ ProjectConfigurationOverview.PNG )] ( images/ ProjectConfigurationOverview.PNG )
49
49
50
50
** Configuration Bits**
51
51
- External Oscillator Selection bits: Oscillator not enabled
52
52
- Reset Oscillator Selection bits: HFINTOSC with HFFRQ = 64 MHz and CDIV = 1:1
53
53
54
- [ ![ CFG] ( images\ ConfigBitsSetup.PNG )] ( images\ ConfigBitsSetup.PNG )
54
+ [ ![ CFG] ( images/ ConfigBitsSetup.PNG )] ( images/ ConfigBitsSetup.PNG )
55
55
56
56
** Clock Control**
57
57
- Clock Source: HFINTOSC
58
58
- HF Internal Clock: 8_MHz
59
59
- Clock Divider: 1
60
60
61
- [ ![ CLK] ( images\ ClockSetup.PNG )] ( images\ ClockSetup.PNG )
61
+ [ ![ CLK] ( images/ ClockSetup.PNG )] ( images/ ClockSetup.PNG )
62
62
63
63
** NVM**
64
64
- Generate Flash APIs: Enabled
65
65
- Generate EEPROM APIs: Enabled
66
66
- Generate Device ID APIs: Enabled
67
67
68
- [ ![ NVM] ( images\ NVMSetup.PNG )] ( images\ NVMSetup.PNG )
68
+ [ ![ NVM] ( images/ NVMSetup.PNG )] ( images/ NVMSetup.PNG )
69
69
70
70
** UART**
71
71
- Custom Name: UART2
@@ -79,7 +79,7 @@ The following project setup is the same for all the example project pairs. If so
79
79
- Redirect Printf to UART: Disabled
80
80
- Interrupt Driven: Disabled
81
81
82
- [ ![ UART] ( images\ UARTDriverSetup.PNG )] ( images\ UARTDriverSetup.PNG )
82
+ [ ![ UART] ( images/ UARTDriverSetup.PNG )] ( images/ UARTDriverSetup.PNG )
83
83
84
84
** UART PLIB**
85
85
- Actual Baud Rate: 9615.385
@@ -88,13 +88,13 @@ The following project setup is the same for all the example project pairs. If so
88
88
- Enable UART: Enable
89
89
- Enable Transmit: Enabled
90
90
91
- [ ![ UART_PLIB] ( images\ UARTPLIBSetup.PNG )] ( images\ UARTPLIBSetup.PNG )
91
+ [ ![ UART_PLIB] ( images/ UARTPLIBSetup.PNG )] ( images/ UARTPLIBSetup.PNG )
92
92
93
93
** UART Pins**
94
94
- UART TX: RB5
95
95
- UART RX: RB4
96
96
97
- [ ![ UART_Pins] ( images\ UARTPortsSetup.PNG )] ( images\ UARTPortsSetup.PNG )
97
+ [ ![ UART_Pins] ( images/ UARTPortsSetup.PNG )] ( images/ UARTPortsSetup.PNG )
98
98
99
99
** 8-Bit MDFU Client**
100
100
- Communication Protocol: UART
@@ -106,43 +106,43 @@ The following project setup is the same for all the example project pairs. If so
106
106
107
107
* Example for CRC32 Verification*
108
108
109
- [ ![ MDFU] ( images\ MDFUClientSetup.PNG )] ( images\ MDFUClientSetup.PNG )
109
+ [ ![ MDFU] ( images/ MDFUClientSetup.PNG )] ( images/ MDFUClientSetup.PNG )
110
110
111
111
** 8-Bit MDFU Client I/O**
112
112
- BOOT INDICATE: RF2
113
113
- BOOT ENTRY: RF3
114
114
115
- [ ![ IO-Pins] ( images\ IOPortSetup.PNG )] ( images\ IOPortSetup.PNG )
115
+ [ ![ IO-Pins] ( images/ IOPortSetup.PNG )] ( images/ IOPortSetup.PNG )
116
116
- BOOT INDICATE: Start High
117
117
- BOOT ENTRY: Weak Pullup
118
118
119
- [ ![ IO-Settings] ( images\ IOPinsSetup.PNG )] ( images\ IOPinsSetup.PNG )
119
+ [ ![ IO-Settings] ( images/ IOPinsSetup.PNG )] ( images/ IOPinsSetup.PNG )
120
120
121
121
** 8-Bit MDFU Client Project Properties**
122
122
- ROM Ranges: This option is configured based on the start address of the application
123
123
- For example, if the application starts at 0x2000 then this value will reflect as ` 0-1FFF `
124
124
125
- [ ![ IO-Settings] ( images\ MemoryModelSettings.PNG )] ( images\ MemoryModelSettings.PNG )
125
+ [ ![ IO-Settings] ( images/ MemoryModelSettings.PNG )] ( images/ MemoryModelSettings.PNG )
126
126
127
127
---
128
128
### Application Setup
129
- [ ![ app-builder] ( images\ AppConfigurationOverview.PNG )] ( images\ AppConfigurationOverview.PNG )
129
+ [ ![ app-builder] ( images/ AppConfigurationOverview.PNG )] ( images/ AppConfigurationOverview.PNG )
130
130
131
131
** I/O Pins**
132
132
- GPIO Output: RF2
133
133
134
- [ ![ app_io] ( images\ AppPortSetup.PNG )] ( images\ AppPortSetup.PNG )
134
+ [ ![ app_io] ( images/ AppPortSetup.PNG )] ( images/ AppPortSetup.PNG )
135
135
- Custom Name: LED
136
136
137
- [ ![ app_io_settings] ( images\ LEDSetup.PNG )] ( images\ LEDSetup.PNG )
137
+ [ ![ app_io_settings] ( images/ LEDSetup.PNG )] ( images/ LEDSetup.PNG )
138
138
139
139
** Project Properties**
140
140
141
141
Linker Additional Options
142
142
- Codeoffset: 0x<APP_START> = 0x2000
143
143
- Checksum: Dependant on the verification scheme
144
144
145
- [ ![ app_offset] ( images\ AppOffset.PNG )] ( images\ AppOffset.PNG )
145
+ [ ![ app_offset] ( images/ AppOffset.PNG )] ( images/ AppOffset.PNG )
146
146
147
147
Note:* Check the table below to understand how the CRC32 option must be configured in the application projects*
148
148
@@ -161,7 +161,7 @@ Fill Flash Memory
161
161
- Increment/Decrement: No Incrementing
162
162
- Memory address range: 0x<APP_START>:0x<FLASH_END> = 0x2000:0xFFFF
163
163
164
- [ ![ app_fill] ( images\ AppFill.PNG )] ( images\ AppFill.PNG )
164
+ [ ![ app_fill] ( images/ AppFill.PNG )] ( images/ AppFill.PNG )
165
165
166
166
## Operation
167
167
In this section, we will walkthrough how to run the examples in this repository. This example shows how to execute the CRC32 verification example and update the device flash memory with the CRC32 application image to demonstrate a successful device firmware update (DFU).
@@ -170,40 +170,40 @@ In this section, we will walkthrough how to run the examples in this repository.
170
170
171
171
1 . Open the MDFU Client Project.
172
172
173
- [ ![ OpenMDFUProject] ( images\ openProjectMDFU.png )] ( images\ openProjectMDFU.png )
173
+ [ ![ OpenMDFUProject] ( images/ openProjectMDFU.png )] ( images/ openProjectMDFU.png )
174
174
175
175
2 . Set MDFU Client Project as Main Project.
176
176
177
- [ ![ OpenMDFUProject] ( images\ setAsMainProject.png )] ( images\ setAsMainProject.png )
177
+ [ ![ OpenMDFUProject] ( images/ setAsMainProject.png )] ( images/ setAsMainProject.png )
178
178
179
179
3 . Right click, then select Clean and Build.
180
180
181
- [ ![ CleanBuild] ( images\ CleanAndBuildMDFU.png )] ( images\ CleanAndBuildMDFU.png )
181
+ [ ![ CleanBuild] ( images/ CleanAndBuildMDFU.png )] ( images/ CleanAndBuildMDFU.png )
182
182
183
183
4 . Program the MDFU Client Project
184
184
185
- [ ![ ProgramMDFU] ( images\ ProgramMDFU.PNG )] ( images\ ProgramMDFU.PNG )
185
+ [ ![ ProgramMDFU] ( images/ ProgramMDFU.PNG )] ( images/ ProgramMDFU.PNG )
186
186
187
187
** Bootloader Operation After Initial Programming**
188
188
189
189
After the initial programming, the LED must be on.
190
190
191
- [ ![ MDFU_BootMode] ( images\ PIC18F56Q24_BootMode.png )] ( images\ PIC18F56Q24_BootMode.png )
191
+ [ ![ MDFU_BootMode] ( images/ PIC18F56Q24_BootMode.png )] ( images/ PIC18F56Q24_BootMode.png )
192
192
193
193
** Application Operation**
194
194
1 . Open the Application Project that is configured for your selected verification scheme.
195
195
196
- [ ![ OpenAppProject] ( images\ openProjectApp.png )] ( images\ openProjectApp.png )
196
+ [ ![ OpenAppProject] ( images/ openProjectApp.png )] ( images/ openProjectApp.png )
197
197
198
198
2 . Set the application project as the Main Project.
199
199
200
- [ ![ MainAppProject] ( images\ setAppAsMainProject.png )] ( images\ setAppAsMainProject.png )
200
+ [ ![ MainAppProject] ( images/ setAppAsMainProject.png )] ( images/ setAppAsMainProject.png )
201
201
202
202
3 . Build the required Application project.
203
203
204
204
Right click, then select Clean and Build
205
205
206
- [ ![ CleanBuild_App] ( images\ CleanAndBuildApp.png )] ( images\ CleanAndBuildApp.png )
206
+ [ ![ CleanBuild_App] ( images/ CleanAndBuildApp.png )] ( images/ CleanAndBuildApp.png )
207
207
208
208
4 . Build the Application Image File using ** pyfwimagebuilder** .
209
209
@@ -213,7 +213,7 @@ Right click, then select Clean and Build
213
213
214
214
` pyfwimagebuilder build -i "application_hex_file.hex" -c "mdfu_config_file.toml" -o output.img `
215
215
216
- [ ![ build_img] ( images\ BuildTheImage.PNG )] ( images\ BuildTheImage.PNG )
216
+ [ ![ build_img] ( images/ BuildTheImage.PNG )] ( images/ BuildTheImage.PNG )
217
217
218
218
5 . Use the ** pymdfu** host tool to transfer the application image file to the bootloader.
219
219
@@ -223,11 +223,11 @@ Right click, then select Clean and Build
223
223
224
224
` pymdfu update serial ./crc32.img --baudrate 9600 --port COM## `
225
225
226
- [ ![ transfer_img] ( images\ SendTheImage.PNG )] ( images\ SendTheImage.PNG )
226
+ [ ![ transfer_img] ( images/ SendTheImage.PNG )] ( images/ SendTheImage.PNG )
227
227
228
228
** Application Has Been Updated Successfully**
229
229
230
- [ ![ MDFU_AppMode] ( images\ PIC18F56Q24_AppMode.gif )] ( images\ PIC18F56Q24_AppMode.gif )
230
+ [ ![ MDFU_AppMode] ( images/ PIC18F56Q24_AppMode.gif )] ( images/ PIC18F56Q24_AppMode.gif )
231
231
232
232
## Summary
233
233
0 commit comments