|
C8051f121、C8051F500串口升級成功
了解單片機(jī)如何在flash中運(yùn)行程序的
了解hex文件轉(zhuǎn)換成二進(jìn)制文件在flash中的情況。
了解flash擦除原理
了解單片機(jī)flash中的機(jī)器碼的含義
——————————————————————————————
1、單片機(jī)如何在flash中運(yùn)行程序
以C8051F系列為例,單片機(jī)的程序經(jīng)過keil等IDLE軟件編譯成hex文件,然后通過仿真器燒寫至單片機(jī)的flash里,hex首先得轉(zhuǎn)換成二進(jìn)制文件,然后寫入flash,以500為例,flash為64KB,從0x0000H起始到0xFFFF結(jié)束。
如表所示,程序正常的機(jī)器碼從地址0x0000H開始,最開頭的一般都是02,02代表跳轉(zhuǎn),跳轉(zhuǎn)到接下來的后兩個字節(jié)xx xx,第四個字節(jié)往后會配置一些中斷向量及其他一些操作。我們想要上電后執(zhí)行boot的程序就需要把boot的程序放置在02 xx xx 的這個xx xx位置,然后boot程序里執(zhí)行串口的接收程序,將串口接收的8位的數(shù)據(jù)(也就是機(jī)器碼)依次燒寫至flash的地址0x0003之后的位置,需要注意的是,boot程序執(zhí)行完之后需要跳轉(zhuǎn)的app的程序,而boot程序需要跳轉(zhuǎn)的位置就是儲存app跳轉(zhuǎn)命令的地方,要燒寫的程序分兩個部分,前三個字節(jié)和后面的部分,前三個字節(jié)的儲存位置解釋boot程序需要跳轉(zhuǎn)的位置。上電->boot->儲存app跳轉(zhuǎn)指令的位置->執(zhí)行app跳轉(zhuǎn)指令(這個指令本來應(yīng)該是在flash前三個字節(jié)),這樣就實(shí)現(xiàn)了boot。
未完待續(xù)。。。
————————————————
版權(quán)聲明:本文為CSDN博主「blueszhous」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/blueszhous/article/details/120049356
|
|