Fix off-by-one errors in calculating UFM start page.
This commit is contained in:
parent
d8bc361e7f
commit
5e98333a8d
|
|
@ -1294,9 +1294,13 @@ uint16_t Lattice::getUFMStartPageFromJEDEC(JedParser *_jed, int id)
|
||||||
/* In general, Lattice tools try to fill UFM from the highest
|
/* In general, Lattice tools try to fill UFM from the highest
|
||||||
page to lowest. JEDEC files will give a starting bit offset. */
|
page to lowest. JEDEC files will give a starting bit offset. */
|
||||||
uint32_t bit_offset = _jed->offset_for_section(id);
|
uint32_t bit_offset = _jed->offset_for_section(id);
|
||||||
/* Convert to starting page, which seems to be one more than the number
|
/* Convert to starting page, relative to Configuration Flash's page 0.
|
||||||
of Configuration Flash pages, based on looking at Diamond-generated
|
For 7000 parts only, first UFM page starts 16 bytes (1 page) after
|
||||||
JEDECs. */
|
the last Configuration Flash page, based on looking at
|
||||||
|
Diamond-generated JEDECs.
|
||||||
|
|
||||||
|
For all other parts, the first UFM page immediately follows the last
|
||||||
|
Configuration Flash page. */
|
||||||
uint16_t raw_page_offset = bit_offset / 128;
|
uint16_t raw_page_offset = bit_offset / 128;
|
||||||
|
|
||||||
/* Raw page offsets won't overlap- see Lattice TN-02155, page 49. So we
|
/* Raw page offsets won't overlap- see Lattice TN-02155, page 49. So we
|
||||||
|
|
@ -1308,13 +1312,13 @@ uint16_t Lattice::getUFMStartPageFromJEDEC(JedParser *_jed, int id)
|
||||||
if(raw_page_offset > 9211) {
|
if(raw_page_offset > 9211) {
|
||||||
return raw_page_offset - 9211 - 1; // 7000
|
return raw_page_offset - 9211 - 1; // 7000
|
||||||
} else if(raw_page_offset > 5758) {
|
} else if(raw_page_offset > 5758) {
|
||||||
return raw_page_offset - 5758 - 1; // 4000, 2000U
|
return raw_page_offset - 5758; // 4000, 2000U
|
||||||
} else if(raw_page_offset > 3198) {
|
} else if(raw_page_offset > 3198) {
|
||||||
return raw_page_offset - 3198 - 1; // 2000, 1200U
|
return raw_page_offset - 3198; // 2000, 1200U
|
||||||
} else if(raw_page_offset > 2175) {
|
} else if(raw_page_offset > 2175) {
|
||||||
return raw_page_offset - 2175 - 1; // 1200, 640U
|
return raw_page_offset - 2175; // 1200, 640U
|
||||||
} else if(raw_page_offset > 1151) {
|
} else if(raw_page_offset > 1151) {
|
||||||
return raw_page_offset - 1151 - 1; // 640
|
return raw_page_offset - 1151; // 640
|
||||||
} else {
|
} else {
|
||||||
// 256- We should bail if we get here! No UFM!
|
// 256- We should bail if we get here! No UFM!
|
||||||
return 0xffff;
|
return 0xffff;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue