1. 如何燒錄 arino 的 bootloader
為了恢復Arino的功能,必須得重新給ATMega328P單片機里燒寫bootloader(其實Arino就是在AVR單片機中胡答預置了一個bootloader程序,這樣再配合Arino開發環境就是所謂的Arino了,但Arino這個詞本身只留給官方使用)。當然在淘寶上也能買到已經燒寫好的AVR單片機,只是自己手上已經有了AVR單片機,就沒必要去花那冤枉錢了。
於是馬上打開萬能的網路,輸入關鍵字「Arino bootloader」果然,一大堆亂七八糟相關的問題就出來了,經過一輪的篩選,發現許多說的也並不是很清晰,不過讓我明白了個大概:一個普通的AVR單片機確實能燒寫bootloader之後作為Arino使用。那麼問題來了,如何把bootloader燒錄到AVR單片機中去了?這的確是個問題,反正對於不懂AVR開發的我來說是個問題。不過還好之前在淘寶上買了一個USBASP下載器,跟之前擦除bootloader一樣,也要用到progisp軟體(因為此時的ATMega328P只是一枯埋個普通的AVR單片機,用Arino開發軟體是燒寫不進去的)。
既然要燒沒做螞錄bootloader,那麼什麼是bootloader呢?正如你所想,bootloader當然是一個程序,既然要燒錄到單片機中去,應該是一個.HEX之類的文件。但是,bootloader文件從哪來呢?繼續網路。。。找到了,在Arino軟體安裝目錄中的hardwarearino中。此文件夾下的「boards.txt」文件很重要,是很重要,其他的或許都可以在網路上找到,但因為這個文件折騰了我大半個晚上,網路上也沒有明確的說明。打開文件,找到自己對應的Arino版本,因為我的是「Arino Uno」,於是鎖定「uno.name=Arino Uno」區域的說明,因為看上去很亂,一定要仔細去看。找到「uno.bootloader.low_fuses=0xff"指編程熔絲低位為FF,」uno.bootloader.high_fuses=0xde「指編程熔絲高位為DE,」uno.bootloader.extended_fuses=0x05「指擴展位為05。這三個值非常重要,是決定你燒錄bootloader成功的關鍵。至於這三個值具體是什麼意思,我也不是很不清楚,但AVR單片機的燒錄時需要設置熔絲位,而且不能亂設置,這也是AVR跟51單片機的不同之處。
用progisp軟體把這三個熔絲位的值寫入到AVR單片機中,然後繼續瀏覽」boards.txt「文件往下看,找到」uno.bootloade旦長測短爻的詫痊超花r.path=optiboot「這就是說要燒錄的bootloader文件在bootloadersoption文件夾中,「uno.bootloader.file=optiboot_atmega328.hex」文件名就是optiboot_atmega328.hex,這就是接下來需要燒錄到AVR單片機中的程序。用progisp軟體調入此文件,然後直接寫入到AVR單片機中就行了,一個支持Arino的AVR就做好了。。。
其實這個問題本身不難,但對於沒接觸過AVR的人來說,還是要花許多時間的,中間也會存在許許多多各種各樣的問題。至於progisp的使用方法很簡單,網路上的教程也很多,還有手上必須有一塊可以燒錄AVR單片機的下載器。我當時就是忽略了那三個熔絲位的值,所以反反復復也沒有成功,網路上面也沒有對」boards.txt「文件做詳細的解釋。沒設置熔絲位程序是可以正常的燒錄進去,但Arino是不能用的,所以必須要按照官網給出的說明操作。我當時大多數時間主要花在兩個問題上,一個是.HEX文件具體位置,因為Arino有不同的版本,所以.HEX文件也不同,還有一個就是熔絲位上。
2. arm體系單片機必須要bootloader嗎,需要是在什麼情況下,不需要又是在什麼情況下cortex-m0需要bootloader
bootloader本身也是一個局氏簡單的小系統,它實現了一些設備的簡單設備驅動(如串口、Flash、網卡、LCD等),能夠完成一定的功能。 當你的需求比較復雜,這類小系統不能滿足要求時(如文件系統、資料庫、WEB服務、多任務等),就需要一個功能更強的操作系統系統平台來支持(如Linux系統),這些操作系統本身需要一個引導工具,bootloader就扮演了這個引導工具的角色。
總之,如果你要實現系統的功能比較簡單,如只汪鄭是顯示一個跑馬燈、幻燈片什麼的,就沒有必須用復雜的操作系統,跑一個簡單的實時系統就桐陵散夠了(當然這些簡單的系統也沒有必須採用ARM晶元);反之還是需要這種組合的。
3. IAP,單片機bootloader跳轉的問題
既然你的app是從0xB000開始的,那仔芹么你應當修改其連接設置,將塊灶汪起始地址改為0xB000,否則編譯連接出來隱戚仔的程序根本沒法用,所有跳轉地址全都是錯的。
4. 比亞迪單片機怎麼下載程序
1、要運用JTAG方法下載程序,不管是運用J-LINK、ULINK、ST-LINK,只需求把單片機上相應的程序下載留出來,然後和編程器連接上燃塌就能夠下載程序了。
2、要經過ISP方法下載程序,需求用到單片機內部自帶的Bootloader,這個Bootloader是預段頃制在單片機內部的,出廠自帶的,在出廠握段陸後就不能修正或擦除。
5. 為什麼51單片機不要寫bootloader
因為51單片機運行的一般是前後台程序,程度一般比較小,而且單片機程序一般直接燒拆陪進程序存儲器里,執行的時候直接從程序存儲器里執行,無需旅叢將他們搬到RAM中去,旅鎮蠢並且一般51單片機RAM都比較小,所以無需寫BOOTLOADER.
6. STM32的BootLoader
這叫IAP。官方BootLoader是為了使用USART、USB等介面去燒寫整個FLASH。IAP升級程序是燒寫在FLASH里的。
7. 怎麼編寫pic 的bootloader
在PIC系列單片機中,只有PIC18系列和PIC16F87X系列的單片機才有IAP功能,才能夠使用BootLoader功能。下面只介紹PIC18的BootLoader,PIC16F87X的BootLoader與它類似。
1 BootLoader程序的工作原理
BootLoader是一段引導程序,在單片機上電/復位後在用戶程序之前先運行。運行後判斷當前是否需要進入升級狀態。如果不需要升級,就直接運行 Flash中原有的程序;如果需要升級,首先擦除舊的程序,然後從串口接收用戶程序,同時寫入Flash中。接收數據時,需要進行校驗,保證接收到的數據是正確的,避免將錯誤的程序寫入到晶元中。
PIC18單片機只有一塊Flash,可以在凱培Flash的任何位置擦寫(甚至可以將BootLoader自身擦除);而51單片機一般都是空鬧兩塊Flash,只能夠從一塊Flash上擦寫另一塊Flash,而不能擦寫自身。
BootLoader程序原則上是可以放在整個程序空間中的任何位置的,但是為了簡單方便、具有通用性和盡量減少對用戶程序的影響,使用了從0x00開始的一段程序空間。
BootLoader程序可以多種方式獲取數據,包括串口、並口、I2C、SPI、USB等;但是從實際使用來看,使用串口無疑是最方便的。
為了使得用戶程序可以獲得最大的程序空間,就需要BootLoader程序盡可能的簡短。在這里,Microchip和HI-TECH都將 BootLoader程序設計為小於200H個位元組(100H個字)。使用0x00~0x1FF這個區域還有一個重要原因是,斗孫罩這個地址的空間有特殊的防寫特性。
PIC18單片機雖然有多個中斷源,但只支持兩級中斷,有兩個中斷向量,分別位於0x08和0x18;而 BootLoader程序佔用了0x00~0x1FF的空間,這意味著需要重新定位中斷向量,使新的中斷向量指向用戶的中斷程序,這樣才能保證正常運行用戶程序的中斷程序。
8. 為什麼51單片機不要寫bootloader
51單片機的存儲器的空間,ROM和RAM
是分開的。
51單片機的程序是固定不變的。
所以簡亮祥,51單片機的功能是單攔搏一的,它不用像其它的計算機那樣笨,開鍵薯機後現找程序。
因此,51單片機也不會沾染病毒。
9. Stm8單片機bootloader中iap和app都要用中斷
把ZONE1作為運行區,ZONE2作為備份區,每次升級時先將代碼寫擾者臘在ZONE2,並設置標志緩滑,然後重啟,bootloader識別有升級標志,將ZONE2的代碼拷貝至ZONE1區,並清標志,就嫌雹可以了,每次都是跳轉至ZONE1運行。
10. AVR單片機如何合並bootloader程序和Flash程序為一個HEX文件,我想同時燒寫進單片機。用什麼方法
把bootloader和Flash都轉換為BIN文件格式,然後把Bootloader放在flash文件後面第120K開汪纖攔始的位置。然後困胡把這合並的文豎讓件少寫進單片機。