?? readme.txt
字號:
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆☆ AVR 通用 Bootloader 使用說明 ☆☆ AVR Common Bootloader Readme ☆☆ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆基本介紹========這個程序的主要目的是為了提供一個具有通用性的AVR Bootloader,不同型號的AVR單片機只需要修改一下幾個簡單的配置參數就可以直接使用了,不用再修改主程序。因為現在網上流傳的很多Bootloader程序都是針對某幾個特定型號的,在換用其它型號后,需要對程序進行較多的修改,使用起來不太方便,所以我寫了這個程序。它是在網上流傳的馬潮老師的ATmega128 Bootloader程序的基礎上,結合了我以前在PIC18單片機中使用Bootloader的一點經驗,以及學習自AVR USB中一些使用宏定義的技巧,再經過多次優化后得到的。這個通用的Bootloader可以支持目前的大部分具有自編程功能,帶有Boot區和UART串口的AVR單片機(主要是Mega系列)。如果是帶有多串口的單片機,可以任意選擇使用其中的一個串口。程序也支持RS485/RS422方式,如果程序稍加修改,也應當可以很容易的支持USI、SPI、I2C等接口。這個Bootloader已經在ATmega8、ATmega64、ATMega168、ATmega169(Butterfly)等型號的AVR單片機上測試通過。對于其它型號,也基本都編譯通過。雖然如此,也無法保證對其它沒有經過完全測試的型號上使用不出現問題。如果你發現這個程序在某個型號的單片機上存在問題,請與我聯系以便及時修正。整個Bootloader最大占用不到1K Word的空間。在最小情況下,占用的空間不到300 Word(具體占用空間的大小與單片機的型號、配置的參數、功能裁剪的多少以及程序的優化等級有關)。主要特點========*支持多種型號的AVR單片機*支持多串口的AVR單片機*支持RS232/RS485/RS422模式*支持多種通信波特率和時鐘頻率*自動計算波特率誤差,如果波特率誤差>2%,將給出錯誤提示*完全C語言編寫,容易修改*為移植做了很多優化,將移植的工作量減少到了最低*代碼高度優化,占用空間小*方便的功能裁剪,適應不同的要求*支持看門狗*支持使用LED指示升級狀態*支持超級終端下載 ...程序版本========v1.0 2007.Mar.22 第一版,實現全部基本功能,并擴展了XModem協議以適合不同的 應用(可變緩沖區長度和多種校驗方式)。特別感謝========在此特別感謝下面這些為此程序做出貢獻的人:劉海濤 我的同事,在程序編寫和調試時提供了很多幫助和資料開發環境========本項目的開發環境是:WinAVR + AVR StudioWinAVR版本: 20070122AVR Studio版本: 4.13.258本項目中所有文件都以AVR Studio作為IDE進行調試,可以使用mk-II仿真器或其他仿真工具調試。使用AVR Studio的好處是可以不用手工修改makefile文件,不容易出錯,降低了初學者上手的難度。WinAVR可以在 http://winavr.sourceforge.net/ 下載,AVR Studio可以在 http://www.atmel.com/ 下載,它們都是免費軟件。項目文件========整個Bootloader主要由以下幾個文件組成:bootldr.c 主程序bootldr.h 主程序的頭文件bootcfg.h 主程序的用戶配置文件test.c 串口通信的測試程序testcfg.h test.c的配置文件readme.txt 本說明文件使用方法========1.建立一個新的項目,并將上面的文件復制到新項目的文件夾中;2.添加bootldr.c、bootldr.h、bootcfg.h三個文件到項目中;3.在bootcfg.h中修改配置參數;4.設置項目的內存段地址為Bootloader的起始地址,在AVR Studio中設置時注意地址是 按照字(word)計算的;5.編譯項目,產生目標文件;6.使用編程器燒錄HEX目標文件到單片機;7.設置相應的加密位和熔絲位,設置Boot區大小和Boot Reset向量;8.通過串口聯機,進行升級測試。主要參數========下面的參數很重要,請按照用戶系統的要求仔細設置:BUFFERSIZE 串口緩沖區大小,使用超級終端時=128。這個參數應當是單片機頁面大 小SPM_PAGESIZE的倍數或約數F_CPU 系統時鐘頻率(Hz)BAUDRATE 串口波特率(bps)LEVELMODE Bootloader觸發模式 0=串口 1=電平timeclk 基本時間間隔(ms)TimeOutCnt Bootloader啟動超時計數<=255TimeOutCntC 等待接收文件的超時計數<=255CONNECTCNT 聯機密碼長度KEY 聯機密碼,任意16進制數或字符串COMPORTNo 串口號,多串口的單片機是串口號(0/1/2...),單串口的單片機一般 是空,也有的需要設置為0(特別是新的型號,如ATmega168)WDGEn 使能看門狗RS485 使能RS485/RS422RS485PORT RS485/RS422發送控制端口=A/B/C/D...RS485TXEn RS485/RS422發送控制引腳=PC0/PC1/PC2...LEDEn LED狀態指示使能LEDPORT LED使用的端口LEDPORTNo LED使用的引腳InitDelay 額外的延時(某些型號的單片機需要)VERBOSE 提示模式,顯示更多的提示信息,方便超級終端下的交互輸入CRCMODE 校驗模式,0=XMODEM的CRC校驗 1=簡單的累加和支持型號========目前已經完全測試過的AVR單片機的型號: ATmega8 ATmeag64 ATmega168 ATmega169(Bufferfly)如果你成功使用了不在上面列表中型號,請給我發EMail,以便及時添加到列表中。常見問題========1.問:怎樣保護Bootloader區? 答:為了保護Bootloader區本身不被意外改寫,需要設置Bootloader區的保護。通常 是將BLB1鎖定位設置成模式2或3,禁止對Bootloader區寫。2.問:為什么需要在bootloader中使用看門狗? 答:為了增加系統的穩定性,通常應當允許看門狗,這樣在意外情況下可以由看門狗 將系統復位,防止在升級過程中進入死循環。3.問:是否支持使用超級終端作為上位機軟件進行升級? 答:這個程序支持使用超級終端作為上位機軟件進行下載。如果使用超級終端下載, 那么串口緩沖區的大小必須定義為128,同時要將等待密鑰和等待文件的超時時間 設置大一些(TimeOutCnt/TimeOutCntC和timeclk的乘積),避免來不及輸入而超 時造成不能進入Bootloader模式;否則可以設置小一些,縮短啟動帶來的延時。 此外校驗方式CRCMODE需要設置為0。在超級終端中輸入聯機密碼后,在發送文件 時選擇標準XMODEM協議就可以下載BIN格式的用戶程序了。 其實本項目中帶的專用上位機下載軟件也不錯的,可以自動轉換HEX為BIN格式, 推薦使用。4.問:怎樣判斷串口通信是否正常(硬件連接是否正常)? 答:示例程序test.c可以用于測試系統的串口通信是否正常。程序運行時不斷向串口 發送數據,同時檢測串口是否收到數據。如果接收到數據,就將發送的數據改為 新收到的數據。可以用超級終端和這個程序聯機調試。如果在調試Bootloader遇 到問題,可以先試試這個程序是否可以正常運行。如果test可以正常運行,那么 一般就沒有太大的問題了。5.問:為什么升級完后不能跳轉到用戶程序? 答:如果不能正確跳轉到用戶程序,往往是使用的GCC編譯器存在bug,造成某些型號 的單片機不能正確跳轉。可以嘗試升級GCC到新版本。也可以查看反匯編代碼進行 分析。6.問:怎樣減少Bootloader代碼的大小,留出更多空間給用戶程序? 答:可以裁減掉不必要的功能,如提示信息、LED狀態指示、將CRC校驗改為累加和校 驗等。還可以打開程序的優化選項,選擇代碼大小優化。因為C語言優化時具有 一定的不確定性,選用代碼大小優化得到的最終代碼有時并不是最小的。7.問:是否可以支持其它C編譯器? 答:本項目使用了WinAVR帶有的GCC編譯器,其它編譯器目前沒有試驗過。IAR C編譯 器和GCC最為接近,我想只要做很小的修改就可以了(AVR USB就是可以同時GCC和 IAR C編譯器);其它編譯器應當也可以,因為我在編寫代碼時,是盡量按照ANSI C的規范編寫。最容易出問題的地方應該在頭文件部分,不同的C編譯器在聲明同 樣的寄存器或參數時存在一些差異。8.問:在什么地方可以下載本程序的最新版本? 答:在 http://shaoziyang.bloger.com.cn 上可以下載到最新版本,我也會在OURAVR 上提供最新的版本。如果有任何建議,歡迎發EMail到 shaoziyang@126.com。使用許可========1.本程序以開源方式提供,任何人都可以1. 自由使用、復制、傳播,而無需事先獲取 作者的同意。2.你可以按照自己的要求對本程序進行修改,但是必須保持整個項目文件的完整,也必 須保留原始的版權信息。3.不能通過銷售本程序進行盈利。4.因為用戶系統和環境的復雜性和多樣性,作者不保證在任何情況下本程序都能正常運 行。任何由于使用本程序引起的后果,均由使用者自行承擔。5.一旦你開始使用本程序,就意味著你接受了上面的許可。如果你不同意這個許可,請 不要使用這個程序。 邵子揚 2007.3 于武漢 e Y8b Y8b Y88888P888 88e d8b Y8b Y8b Y888P 888 888D d888b Y8b Y8b Y8P 888 88" d8WuHan888b Y8b Y 888 b, d8888888b Y8b Y8P 888 88b, e88'Y88 d888 'Y e88 88e 888 888 8e 888 888 8e e88 88e 888 8e C8888 d888 888b888 888 88b888 888 88bd888 888b888 88b Y888 ,dY888 8Shao88 zi8 8yang8 888 888Y888 888P888 888 "88,d88 "88 88" 888 888 888888 888 888 "88 88" 888 888 888 88b, d8 888 888 888 88P' e88 88e e88 88e d88 888 e88 88e ,"Y88b e88 888 ,e e, 888,8, 888 8K d888 888bd888 888bd20078888 d888 888b"8" 888d888 888d88 88b888 " 888 88b,Y888 888PY888 888P 888 888 ,dY888 888P,ee 888Y888 888888 ,888 888 88P' "88 88" "88 88" 888 888,d88 "88 88" "88 888 "88 888 "YeeP"888 __ / _) /(_)(/ __ / (_ |_ _. _ _ o _.._ _ __)| |(_|(_) /_|\/(_|| |(_| / _|
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -