熔絲是一個保護知識產(chǎn)權的設計。簡單的說,你在特定的引腳上加電壓,足夠的電流,就可以燒斷里邊的這根 熔絲 ,燒斷以后,片里的程序就不可以被讀出來也不能改寫了,只能用來運行。一般成品出售時都這樣做。專用的寫片機支持這個功能。自己也可以根據(jù)芯片的官方文檔來操作。熔絲位是在一個特定的地址上可以讀到熔絲狀態(tài)的一個位。0表示已熔斷,1表示未熔斷。 英文-中文對照 On-Chip Debug Enabled 片內(nèi) 調(diào)試 使能 JTAG Interface Enabled JTAG 接口 使能 Serial program downloading (SPI) enabled 串行編程下載(SPI) 使能 (ISP下載時該位不能修改) Preserve EEPROM memory through the Chip Erase cycle; 芯片擦除時EEPROM的內(nèi)容保留 Boot Flash section size=xxxx words 引導(Boot)區(qū)大小為xxx個詞 Boot start address=$yyyy; 引導(Boot)區(qū)開始地址為 $yyyy Boot Reset vector Enabled 引導(Boot)、復位 向量 使能 Brown-out detection level at VCC=xxxx V; 掉電檢測的電平為 VCC=xxxx 伏 Brown-out detection enabled; 掉電檢測使能 Start-up time: xxx CK + yy ms 啟動時間 xxx 個時鐘周期 + yy 毫秒 Ext. Clock; 外部時鐘 Int. RC Osc. 內(nèi)部 RC(阻容) 振蕩器 Ext. RC Osc. 外部 RC(阻容) 振蕩器 Ext. Low-Freq. Crystal; 外部 低頻 晶體 Ext. Crystal/Resonator Low Freq 外部晶體/陶瓷振蕩器 低頻 Ext. Crystal/Resonator Medium Freq 外部晶體/陶瓷振蕩器 中頻 Ext. Crystal/Resonator High Freq 外部晶體/陶瓷振蕩器 高頻 好多人都存在燒新硬件的問題,本文以arduino UNO的atmega328P為例, 如果您有ISP程序員或正在使用另一個Arduino作為ISP程序員,則使用avrdude命令。 將編程器連接到ATmega16U2的ICSP接頭并上傳固件。 該命令冗長乏味,我需要在某處記錄命令,并將其復制并粘貼到命令行。 它太長了,我通常把它分成不同的行。 它是這樣的: 通過短接ATmega16U2的ICSP接頭上的引腳5和6來復位芯片,激活ATmega16U2芯片上的DFU引導加載程序后,Mac或Linux上的dfu-programmer命令用于使用USB電纜上傳固件。 由于所有AVR指令都是16或32位寬,因此Flash的結構為16K x 16.對于軟件安全性, 閃存程序存儲空間分為兩部分,引導程序部分和應用程序 部分。 引導程序部分的操作和 用于軟件保護的相關引導鎖定位在“存儲器編程”中有詳細描述 第353頁的“存儲器編程”包含有關Flash數(shù)據(jù)串行的詳細說明 使用SPI引腳或JTAG接口下載。 其中bootsz兩項為熔絲位大小配置,根據(jù)你的bootloader大小配置。 11 128B 10 256B 01 512B 00 1K 據(jù)說UNO的bootloader只有512字節(jié)不到,那把BOOTSZ置01即可。 如果出現(xiàn)無法編程的情況,也許是兩種可能:芯片已經(jīng)被鎖(新的不會);硬件焊接有問題(DIY經(jīng)常出現(xiàn)的問題)。 PS:沒打算學avr單片機的人,就別去深究每個熔絲位的作用了,arduino本來就是為了省去這些麻煩的過程,跑去深究就本末倒置了。 想弄得更清楚的孩子,那注意了,在此我重點說幾個熔絲位: CKSEL這幾個熔絲位為晶振配置,很多人遇到芯片被鎖的情況都是因為這個熔絲位配置出錯;一般arduino都使用16M晶振,所以全部置1即可。(如何解鎖?下次有時間我再寫~~~) CKOPT置0為開啟全幅震蕩,當你晶振大于8M時,就要開啟。 SPIEN,spi使能,這是唯一一個千萬不能置1的熔絲位,如果關了,那USBASP就無法使用了,這時只能通過并行編程或者JTAG來修改熔絲位了(mega8沒JTAG...) BOOTSZ,是對BOOT區(qū)大小進行配置的熔絲,根據(jù)相應bootloader大小配置。 BOOTRST,是對復位向量的配置,置0時復位向量指向BOOT起始位置,置1時指向APP區(qū)起始位置。很多人燒了bootloader后,不能下載或者只能下載一次,大多是因為BOOTRST沒有置0。(想搞懂什么是BOOT區(qū)?APP區(qū)?這些個XX區(qū)怎么分配?那去圖書管找本AVR的書認真學習吧,數(shù)據(jù)手冊上面也有,但非專業(yè)人士還是很難看懂) RSTDISBL,為硬復位功能使能端,如果置0,可以將reset端做數(shù)字IO使用,但在arduino上可能經(jīng)常用到復位按鍵,所以這里置1。 WTDON為看門狗設置,置0后將打開看門狗,如不進行喂狗操作,將無限復位。一般我們的非工業(yè)制作都不使用看門狗功能,所以這里置1即可。 |
|
來自: 旭日東升4k165w > 《文件夾1》