avr單片機(jī)學(xué)習(xí)心得
可以通過(guò)熔絲設(shè)置時(shí)鐘,(外部晶體振蕩器,外部低頻晶振,外部RC振蕩器,標(biāo)定的內(nèi)部RC振蕩器,外部時(shí)鐘)。
本文引用地址:http://m.butianyuan.cn/article/201611/320545.htm各種功能模塊很全,有特色的是SPI模式,因?yàn)橄螺d程序就用這種模式。下載過(guò)程,flash分成兩個(gè)部分一個(gè)是應(yīng)用flash區(qū),另一個(gè)是bootloader區(qū),關(guān)于這兩部分的大小可以用編程熔絲來(lái)實(shí)現(xiàn),還可以編程熔絲定義復(fù)位向量的起始地址,是定位到應(yīng)用區(qū)還是bootloader區(qū)等。
其中bootloader可以以任何方式下載程序,串口,spi等。并且bootloader可以訪(fǎng)問(wèn)程序的任何部分,包括它自己。所以說(shuō)IAP功能應(yīng)運(yùn)而生。
回憶一下 PC 的體系結(jié)構(gòu)我們可以知道,PC 機(jī)中的引導(dǎo)加載程序由 BIOS(其本質(zhì)就是一段固件程序)和位于硬盤(pán)MBR中的OS Boot Loader(比如,LILO 和 GRUB 等)一起組成。Boot Loader 的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤(pán)上讀到RAM 中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,也即開(kāi)始啟動(dòng)操作系統(tǒng)。
而在嵌入式系統(tǒng)中,通常并沒(méi)有像BIOS 那樣的固件程序(注,有的嵌入式 CPU 也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由 Boot Loader 來(lái)完成。比如在一個(gè)基于 ARM7TDMI core 的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址 0x00000000 處開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的Boot Loader程序
大多數(shù) Boot Loader 都包含兩種不同的操作模式:"啟動(dòng)加載"模式和"下載"模式,這種區(qū)別僅對(duì)于開(kāi)發(fā)人員才有意義。但從最終用戶(hù)的角度看,Boot Loader 的作用就是用來(lái)加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式與下載工作模式的區(qū)別。
啟動(dòng)加載(Boot loading)模式:這種模式也稱(chēng)為"自主"(Autonomous)模式。也即 Boot Loader 從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶(hù)的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Boot Loader 顯然必須工作在這種模式下。
下載(Downloading)模式:在這種模式下,目標(biāo)機(jī)上的 Boot Loader 將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被 Boot Loader 保存到目標(biāo)機(jī)的 RAM 中,然后再被 Boot Loader 寫(xiě)到目標(biāo)機(jī)上的FLASH 類(lèi)固態(tài)存儲(chǔ)設(shè)備中。Boot Loader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會(huì)向它的終端用戶(hù)提供一個(gè)簡(jiǎn)單的命令行接口。
像 Blob 或 U-Boot 等這樣功能強(qiáng)大的 Boot Loader 通常同時(shí)支持這兩種工作模式,而且允許用戶(hù)在這兩種工作模式之間進(jìn)行切換。比如,Blob 在啟動(dòng)時(shí)處于正常的啟動(dòng)加載模式,但是它會(huì)延時(shí) 10 秒等待終端用戶(hù)按下任意鍵而將 blob 切換到下載模式。如果在 10 秒內(nèi)沒(méi)有用戶(hù)按鍵,則 blob 繼續(xù)啟動(dòng) Linux 內(nèi)核。
評(píng)論