eddiewwm 发表于 2019-1-9 14:42:39

8F328-U 程序和bootloader合併燒寫

本帖最后由 eddiewwm 于 2020-3-7 17:12 编辑

如想用小白盒一次過將程序和bootloader合併燒寫,則需先把程序和bootloader合併。按LGT8F328P生產商的提示,可用以下步驟完成一個合併 hex 檔:

1) 把bootloader 的 hex檔 除第一行外(即從:107400 開始),全部複制到程序hex檔的最後一行(不包括最後一行的End of file 檢查行)
2) 把 程序hex檔的第一行第一個復位向量(一般是0C947300)取代第七個的復位向量(即第二行第三個的復位向量)
3) 把 bootloader的復位向量(一般是0C94003A)取代程序hex檔的第一個復位向量(一般是0C947300)
4) 第一行和第二行最後兩位的校驗字節可以不改(因小白盒的程序不會檢查這兩字節的),但若希望能更完美一點,可以用網上的校驗碼產生器(如 https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/)產生正確校驗碼並改回。

以下是第一步驟完成後的一個範例:
..........
:100A70000590F491E02D099481E090E0F8940C94B5 (程序的最後一行)
:1074000011248FEF98E09EBF8DBF94B714BE892FD3   (bootloader的第二行)
.........

以下是第二步驟完成後的一個範例:
未改前:
:100000000C9473000C9443030C949B000C949B0081
:100010000C949B000C949B000C949B000C949B00F4
更改後:
:100000000C9473000C9443030C949B000C949B0081
:100010000C949B000C949B000C9473000C949B00F4

以下是第三步驟完成後的一個範例:
未改前:
:100000000C9473000C9443030C949B000C949B0081
更改後:
:100000000C94003A0C9443030C949B000C949B0081

以下是第四步驟完成後的一個範例:
未改前:
:100000000C94003A0C9443030C949B000C949B0081
:100010000C949B000C949B000C9473000C949B00F4

需輸入的校驗資料:
第一行的:
100000000C94003A0C9443030C949B000C949B00
得到的CheckSum8 2s Complement的校驗碼:
BA
第二行的:
100010000C949B000C949B000C9473000C949B00
得到的CheckSum8 2s Complement的校驗碼:
1C

更改後:
:100000000C94003A0C9443030C949B000C949B00BA
:100010000C949B000C949B000C9473000C949B001C

得出合併 hex檔後,便可用小白盒燒寫了!
页: [1]
查看完整版本: 8F328-U 程序和bootloader合併燒寫