">
一些注意事項(xiàng):
1.熔絲位的燒寫:BOOTRST要進(jìn)行編程,這樣單片機(jī)在復(fù)位后自動(dòng)跳轉(zhuǎn)到bootloader區(qū)執(zhí)行bootloader的代碼,然后要根據(jù)自己bootloader的大小設(shè)置boot區(qū)的的熔絲位:具體設(shè)置如下圖,這里我選擇的是1024大?。ㄗ⒁?代表為編程,0代表已編程):
2.設(shè)置引導(dǎo)區(qū)鎖定位:為了保護(hù)bootloader不被應(yīng)用程序修改或者擦除,所以要對(duì)其進(jìn)行保護(hù),Atmega提供了熔絲位的保護(hù)方式,具體設(shè)置如下圖(我設(shè)置的為BLB0為11,BLB1為00):
3.Flash頁(yè)的設(shè)定:因flash的擦除和寫入是按照頁(yè)來(lái)操作的,看手冊(cè)上說(shuō)是1頁(yè)有128個(gè)字節(jié),但實(shí)際調(diào)試時(shí)候發(fā)現(xiàn)需要一次寫入256個(gè)字節(jié)才有效的,如果按照128來(lái)寫入,會(huì)將第二個(gè)128的內(nèi)容覆蓋掉第一個(gè)128字節(jié)的內(nèi)容,那就按照實(shí)際為準(zhǔn)了。
4.Xmodem協(xié)議的注意事項(xiàng):具體的xmodem不在本文敘述了,只說(shuō)一下要注意的地方,校驗(yàn)和是可以選擇的,我使用的是checksum(就是單純的累加),也可以選擇16為的CRC,這個(gè)是根據(jù)單片機(jī)第一次返回的響應(yīng)字節(jié)來(lái)確定的,另外當(dāng)包的序列號(hào)超過(guò)255時(shí)會(huì)重新從0開始而不是從1開始,首次傳輸是從1開始編號(hào)的,這個(gè)要注意一下。
5.文件格式文件:和網(wǎng)上好多人一樣,遇到同樣的文件,在bootloader將應(yīng)用程序燒寫到flash中后,發(fā)現(xiàn)沒(méi)有執(zhí)行應(yīng)用程序,開始我也以為是跳轉(zhuǎn)不成成功的問(wèn)題,上網(wǎng)查了半天都沒(méi)找到答案,都是問(wèn)問(wèn)題的L。沒(méi)辦法,靠自己了,一致納悶,燒寫到Flash中的程序和原始文件內(nèi)容一模一樣怎么就不能執(zhí)行啊,后來(lái)偶然用燒寫軟件打開要燒寫的固件,發(fā)現(xiàn)內(nèi)容和我用16進(jìn)制工具打開的并不一樣,Oh my god,豁然想到了問(wèn)題的關(guān)鍵,原來(lái)用ICC生成的hex文件是intel hex形式,Intel HEX文件是由一行行符合Intel HEX文件格式的文本所構(gòu)成的ASCII文本文件。在Intel HEX文件中,每一行包含一個(gè)HEX記錄。這些記錄由對(duì)應(yīng)機(jī)器語(yǔ)言碼和/或常量數(shù)據(jù)的十六進(jìn)制編碼數(shù)字組成。Intel HEX文件通常用于傳輸將被存于ROM或者EPROM中的程序和數(shù)據(jù)。大多數(shù)EPROM編程器或模擬器使用Intel HEX文件。而實(shí)際存儲(chǔ)到Flash中的數(shù)據(jù)是要從這個(gè)HEX文件中提取出來(lái),然后在通過(guò)xmodem發(fā)送到單片機(jī),不要直接發(fā)送ICC生成的HEX文件,轉(zhuǎn)換的話可以自己寫一個(gè)小工具或者上網(wǎng)搜類似功能的工具,為了省事,我找了一個(gè)叫hex2bin的工具做的轉(zhuǎn)換。
上海紫卓電子科技有限公司
地址:上海市嘉定工業(yè)區(qū)葉城路925號(hào)B區(qū)4幢J
網(wǎng)址:fashioncenter.cn
電話:021-31007998
傳真:021-31007998
郵件:569998567@qq.com
在線咨詢:
569998567
致力成為優(yōu)秀的IC供應(yīng)配單專家及IC代理商
竭力為客戶提供一站式電子元器件采購(gòu)及IC配套服務(wù)
上海紫卓電子科技有限公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像
CopyRight 2020-2025 fashioncenter.cn All rights reserved