Mercurial > louis > kiibohd-controller
comparison Bootloader/flash.c @ 337:932ef3bbd4d7
Working mk20dx256vlh7 usb flash support
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Sat, 30 May 2015 00:02:22 -0700 |
parents | 7be3475fc9fa |
children |
comparison
equal
deleted
inserted
replaced
336:7be3475fc9fa | 337:932ef3bbd4d7 |
---|---|
16 */ | 16 */ |
17 | 17 |
18 // ----- Local Includes ----- | 18 // ----- Local Includes ----- |
19 | 19 |
20 #include "mchck.h" | 20 #include "mchck.h" |
21 #include "debug.h" | |
21 | 22 |
22 | 23 |
23 | 24 |
24 // ----- Variables ----- | 25 // ----- Variables ----- |
25 | 26 |
71 return ftfl_submit_cmd(); | 72 return ftfl_submit_cmd(); |
72 } | 73 } |
73 | 74 |
74 int flash_erase_sector( uintptr_t addr ) | 75 int flash_erase_sector( uintptr_t addr ) |
75 { | 76 { |
77 #ifdef FLASH_DEBUG | |
78 // Debug | |
79 print("Erasing Sector: address("); | |
80 printHex( addr ); | |
81 printNL(")"); | |
82 #endif | |
83 | |
76 if ( addr < (uintptr_t)&_app_rom && flash_ALLOW_BRICKABLE_ADDRESSES != 0x00023420 ) | 84 if ( addr < (uintptr_t)&_app_rom && flash_ALLOW_BRICKABLE_ADDRESSES != 0x00023420 ) |
77 return (-1); | 85 return (-1); |
78 FTFL.fccob.erase.fcmd = FTFL_FCMD_ERASE_SECTOR; | 86 FTFL.fccob.erase.fcmd = FTFL_FCMD_ERASE_SECTOR; |
79 FTFL.fccob.erase.addr = addr; | 87 FTFL.fccob.erase.addr = addr; |
80 | 88 |
81 return ftfl_submit_cmd(); | 89 return ftfl_submit_cmd(); |
82 } | 90 } |
83 | 91 |
84 int flash_program_section_longwords( uintptr_t addr, size_t num_words ) | 92 int flash_program_section_longwords( uintptr_t addr, size_t num_words ) |
85 { | 93 { |
94 #ifdef FLASH_DEBUG | |
95 // Debug | |
96 print("Programming Sector: address("); | |
97 printHex( addr ); | |
98 print(") longwords("); | |
99 printHex( num_words ); | |
100 printNL(")"); | |
101 #endif | |
102 | |
86 FTFL.fccob.program_section.fcmd = FTFL_FCMD_PROGRAM_SECTION; | 103 FTFL.fccob.program_section.fcmd = FTFL_FCMD_PROGRAM_SECTION; |
87 FTFL.fccob.program_section.addr = addr; | 104 FTFL.fccob.program_section.addr = addr; |
88 FTFL.fccob.program_section.num_words = num_words; | 105 FTFL.fccob.program_section.num_words = num_words; |
89 | 106 |
90 return ftfl_submit_cmd(); | 107 return ftfl_submit_cmd(); |
91 } | 108 } |
92 | 109 |
93 int flash_program_section_phrases( uintptr_t addr, size_t num_phrases ) | 110 int flash_program_section_phrases( uintptr_t addr, size_t num_phrases ) |
94 { | 111 { |
112 #ifdef FLASH_DEBUG | |
113 // Debug | |
114 print("Programming Sector: address("); | |
115 printHex( addr ); | |
116 print(") phrases("); | |
117 printHex( num_phrases ); | |
118 printNL(")"); | |
119 #endif | |
120 | |
95 FTFL.fccob.program_section.fcmd = FTFL_FCMD_PROGRAM_SECTION; | 121 FTFL.fccob.program_section.fcmd = FTFL_FCMD_PROGRAM_SECTION; |
96 FTFL.fccob.program_section.addr = addr; | 122 FTFL.fccob.program_section.addr = addr; |
97 FTFL.fccob.program_section.num_words = num_phrases; | 123 FTFL.fccob.program_section.num_words = num_phrases; |
98 | 124 |
99 return ftfl_submit_cmd(); | 125 return ftfl_submit_cmd(); |
100 } | 126 } |
101 | 127 |
102 int flash_program_sector( uintptr_t addr, size_t len ) | 128 int flash_program_sector( uintptr_t addr, size_t len ) |
103 { | 129 { |
104 if ( len != FLASH_SECTOR_SIZE ) | 130 if ( len != USB_DFU_TRANSFER_SIZE ) |
105 return 1; | 131 return 1; |
106 | 132 |
107 #if defined(_mk20dx128vlf5_) | 133 #if defined(_mk20dx128vlf5_) |
108 // Check if this is the beginning of a sector | 134 // Check if this is the beginning of a sector |
109 // Only erase if necessary | 135 // Only erase if necessary |
138 return (0); | 164 return (0); |
139 } | 165 } |
140 | 166 |
141 void *flash_get_staging_area( uintptr_t addr, size_t len ) | 167 void *flash_get_staging_area( uintptr_t addr, size_t len ) |
142 { | 168 { |
143 if ( (addr & (FLASH_SECTOR_SIZE - 1)) != 0 || len != FLASH_SECTOR_SIZE ) | 169 if ( (addr & (USB_DFU_TRANSFER_SIZE - 1)) != 0 || len != USB_DFU_TRANSFER_SIZE ) |
144 return (NULL); | 170 return (NULL); |
145 return (FlexRAM); | 171 return (FlexRAM); |
146 } | 172 } |
147 | 173 |