1. bootloader在mcu的哪片存儲區怎麼看
Bootloader放在哪裡要看軟體工程師的習慣,Boot區理論上可以自定義放置的,通常工程師會把它放在程序區末尾。如果MCU的代碼保護了,你是看不到的。
2. 嵌入式linux的bootloader的啟動流程是怎樣的
嵌入式 Linux 系統從軟體角度看可以分為四個部分:引導載入程序(Bootloader), Linux 內核,文件系統,應用程序。
當系統首次引導時,或系統被重置時,處理器會執行一個位於Flash/ROM中的已知位置處的代碼,Bootloader就是這第一段代碼。它主要用來初始化處理器及外設,然後調用 Linux 內核。Linux 內核在完成系統的初始化之後需要掛載某個文件系統作為根文件系統(Root Filesystem),然後載入必要的內核模塊,啟動應用程序。這就是嵌入式Linux系統啟動過程 Linux 引導的整個過程。
Bootloader 的啟動方式:
網路啟動方式。這種方式的開發板不需要較大的存儲介質,跟無盤工作站有點類似,但是使用這種啟動方式之前,需要把Bootloader安裝到板上的EPROM或者Flash中。Bootloader通過乙太網介面遠程下載Linux內核映像或者文件系統。Bootloader下載文件一般都使用TFTP網路協議,還可以通過DHCP的方式動態配置IP地址。
硬碟啟動方式
傳統的Linux系統運行在台式機或者伺服器上,這些計算機一般都使用BIOS引導,並使用磁碟作為存儲介質。Linux傳統上是LILO (Linux Loader) 引導,後來又出現了GUN的軟體 (Grand Unified Bootloader) 。 這兩種Bootloader廣泛應用在X86的Linux系統上。Flash啟動方式。大多數嵌入式系統上都使用Flash存儲介質。Flash有很多類型,包括NOR Flash、NAND Flash和其它半導體盤。它們之間的不同在於: NOR Flash 支持晶元內執行(XIP, eXecute In Place),這樣代碼可以在Flash上直接執行而不必拷貝到RAM中去執行。而NAND Flash並不支持XIP,所以要想執行 NAND Flash 上的代碼,必須先將其拷貝到 RAM中去,然後跳到 RAM 中去執行。NOR Flash 使用最為普遍。Bootloader一般放在Flash的底端或者頂端,這需要根據處理器的復位向量來進行設置。可以配置成MTD設備來訪問Flash分區。
3. 單片機串口下載的過程
STC系列單片機有一個特殊的標記,並有一段特殊的程序。當加上電源瞬間,判斷到有串口有規定的通訊命令,就將隨後的數據,作為程序代碼寫到程序存儲區(EEPROM),這個過程無需用戶干預,用戶所做的僅僅是:1。連接好PC機和單片機的串口,2。運行下載程序,3。將編譯好的機器碼讀到下載軟體中,4。點擊下載鈕,5。打開單片機電源,6。觀察下載進度條,待下載完成
4. AVR單片機MEGA328上的BOOTLOAD是用來干什麼的有什麼作用
可以理解為mega328內有兩個存儲區,一個是bootloader區,一個是你正常運行的程序區。 bootloader是用來監控或是下載用的,比如Arino UNO中的mega328就燒錄了相應的bootloader,之後,可直接用相應的arino IDE 一體化的編譯下載,很方便
5. stm32的bootloader程序是出廠自帶的還是後來燒錄的
一般STM32的bootloader本來就已經通過編譯環境做好了,若你想自己了解活著寫一下試試的話,其實編寫bootloader主要事項有以下:
1、為你的bootloader程序選擇存儲器地址,因為STM32的存儲器FLASH存儲程序代碼空間為512K,需要進行劃分。
2、如果需要使用JTAG在線調試,則需要配置區域:
3、為您的用戶程序選擇合適的存儲空間:
同時配置在線調試區域:
4、bootloader程序編寫基本流程如下:
1)檢測有無需要更新的標志,用戶可自定義。比如說讀取flash某位置存儲的位元組作為標志位。
2)如需更新,則調用STM32的FLASH程序擦鞋用戶代碼部分。
3)將新的bin文件(即2進制文件直接燒寫進去,需要將keil生成的hex文件轉換為bin文件,然後存儲到外擴展的flash中)寫入到STM32自帶的FLASH中去,記住需要與上述設置的用戶代碼存儲區一致。
4)更新成功後再跳轉至用戶程序。
5、用戶程序需要注意一點,需要在程序運行前重新設置中斷向量表,即:NVIC_SetVectorTable()。
6、用STM32自帶的燒錄軟體進行燒錄時,需要修改項目如下:
1)打開安裝後目標文件中的map文件夾,我們所用的STM32為512Kflash,所以選取STM32_High-density_512K.STmap,將其分解為兩個STmap文件(此文件可用記事本 打開)
STmap文件中,扇區是以每2K為一page來顯示的,所以boot區我們只需要到page7,用戶區我們需要page8到最後。
修改完成後再次打開此軟體會發現多出了兩個flash選項,可以根據此處來選擇需要存儲的代碼區
6. BootLoader是什麼怎麼解鎖
啟動程序(英語:boot loader,也稱啟動載入器,引導程序)位於電腦或其他計算機應用上,是指引導操作系統啟動的程序。引導程序啟動方式及程序視應用機型種類而不同。BIOS開機完成後,bootloader就接手初始化硬體設備、創建存儲器空間的映射,以便為操作系統內核准備好正確的軟硬體環境。BootLoader是依賴於硬體而實現的,特別是在嵌入式領域,為嵌入式系統建立一個通用的BootLoader是很困難的。
7. 什麼是bootloader
Bootloader是嵌入式系統在加電後執行的第一段代碼,在它完成CPU和相關硬體的初始化之後,再將操作系統映像或固化的嵌入式應用程序裝在到內存中然後跳轉到操作系統所在的空間,啟動操作系統運行。[1]
對於嵌入式系統,Bootloader是基於特定硬體平台來實現的。因此,幾乎不可能為所有的嵌入式系統建立一個通用的Bootloader,不同的處理器架構都有不同的Bootloader。Bootloader不但依賴於CPU的體系結構,而且依賴於嵌入式系統板級設備的配置。對於2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運行在一塊板子上的Bootloader程序也能運行在另一塊板子上,一般也都需要修改Bootloader的源程序。
反過來,大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支持多種體系結構的嵌入式系統。例如,U-Boot就同時支持PowerPC、ARM、MIPS和X86等體系結構,支持的板子有上百種。通常,它們都能夠自動從存儲介質上啟動,都能夠引導操作系統啟動,並且大部分都可以支持串口和乙太網介面。
在專用的嵌入式板子運行GNU/Linux系統已經變得越來越流行。一個嵌入式Linux系統從軟體的角度看通常可以分為四個層次:
1、 引導載入程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。
2、Linux內核。特定於嵌入式板子的定製內核以及內核的啟動參數。
3、 文件系統。包括根文件系統和建立於Flash內存設備之上文件系統。通常用ramdisk來作為rootfs。
4、 用戶應用程序。特定於用戶的應用程序。有時在用戶應用程序和內核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。
通常,BootLoader是嚴重地依賴於硬體而實現的,特別是在嵌入式世界。因此,在嵌入式世界裡建立一個通用的BootLoader幾乎是不可能的。盡管如此,我們仍然可以對bootloader歸納出一些通用的概念來,以指導用戶特定的BootLoader設計與實現。
8. bootloader初識
作為一個嵌入式工程師,如果不能寫bootloader程序,那就不能成為一個真正的嵌入式工程師。最近在做arm項目,也會用到uboot,但是對於bootloader,我還是處於一知半解的狀態。。
要了解arm的bootloader,得先了解arm體系結構。arm主要由arm內核單元,vector interface,coprocessor,兩種cache(指令和數據cache),兩種TCM(指令和數據TCM),MMU(內存管理),power management(電量管理)。
cache是為了平衡數據之間的速度而使用的,TCM則是為了存儲一些頻繁使用的數據,如中斷向量等。TCM和cache是有區別的,雖然都是為了加快速度,但是TCM必須給它指定地址。TCM和cache的用途也不一樣,TCM保存常用到的數據如中斷向量和realtime數據,而cache只是為了加快處理器和外設之間的數據處理。
MMU主要處理虛擬地址到物理地址的轉換,起到對數據的保護作用,用在操作系統的體系中。
很顯然,bootloader程序就是要對後來的程序提供一個良好的運行環境,這里對arm architecture的幾個組成單元進行必要的配置。
對於嵌入式系統,Bootloader是基於特定硬體平台來實現的。因此,幾乎不可能為所有的嵌入式系統建立一個通用的Bootloader,不同的處理器架構都有不同的Bootloader。 Bootloader不但依賴於CPU的體系結構,而且依賴於嵌入式系統板級設備的配置。對於2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運行在一塊板子上的Bootloader程序也能運行在另一塊板子上,一般也都需要修改Bootloader的源程序。
反過來,大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支持多種體 系結構的嵌入式系統。例如,U-Boot就同時支持PowerPC、ARM、MIPS和X86等體系結構,支持的板子有上百種。通常,它們都能夠自動從存儲介質上啟動,都能夠引導操作系統啟動,並且大部分都可以支持串口和乙太網介面。
9. 為什麼bootloader要去Flash上讀入Linux內核
你這個問題應該分為幾個部分
1 bootloader主要是負責系統初始化和系統載入的 嵌入式系統一般會把bootloader和系統內核分開存放,這樣的話 系統內核損壞了的話 還可以通過bootloader進行恢復
2 linux內核一般比bootloader大很多。一個嵌入式系統,在系統剛通電的時候,根據cpu的不同,他們是從一個固定的內存地址開始運行的。一般情況下,這個固定地址會是一個ROM,其存儲空間一般較小,一般用來存放bootloader。而根據板子設計的不同,系統內核是保持在flash或者其他存儲介質上的。
3 bootloader在完成硬體初始化後,從存儲介質上把系統內核讀入到指定的內存區域,然後用一個跳轉指令跳轉到系統內核處開始執行 。注意,這個存儲介質不一定是flash
10. 安卓手機bootrom是什麼意思
BOOTROM BOOTROM插座也就是常說的無盤啟動ROM介面,其是用來通過遠程啟動服務構造無盤工作站的。遠程啟動服務(Remoteboot,通常也叫 BOOTROM插槽
RPL)使通過使用伺服器硬碟上的軟體來代替工作站硬碟引導一台網路上的工作站成為可能。網卡上必須裝有一個RPL(Remote Program Load遠程初始程序載入)ROM晶元才能實現無盤啟動,每一種RPL ROM晶元都是為一類特定的網路介面卡而製作的,它們之間不能互換。帶有RPL的網路介面卡發出引導記錄請求的廣播(broadcasts),伺服器自動的建立一個連接來響應它,並載入MS-DOS啟動文件到工作站的內存中。 此外,在BOOTROM插槽中心一般還有一顆93C46、93LC46或93c56的EEPROM晶元(93C56是128*16bit的EEPROM,而93C46是64*16bit的EEPROM),它相當於網卡的BIOS,裡面記錄了網卡晶元的供應商ID、子系 帶有BOOTROM插槽的網卡
統供應商ID、網卡的MAC地址、網卡的一些配置,如匯流排上PHY的地址,BOOTROM的容量,是否啟用BOOTROM引導系統等內容。主板板載網卡的EEPROM信息一般集成在主板BIOS中。 在VxWorks嵌入式開發中,也會有BootRom,這里的BootRom是VxWorks操作系統集成的啟動代碼,在Tomado集成開發環境的Build菜單中可以直接編譯BootRom,它的功能和U-boot類似,都是Bootloader程序。只是BootRom是由VxWorks提供的一個bootloader程序,通過它可以和Tomado集成的一些工具進行VxWorks內核的下載和調試工作。 通常,BootRom軟體有以下功能: (1)通過串口下載操作系統映像; (2)通過串口升級自身映像; (3)通過串口下載系統配置文件、系統信息文件; (4)載入操作系統映像,使其正常啟動; (5)其他的輔助功能,如地址內容查看功能、地址內容修改功能和bootrom菜單顯示信息控制功能。 在VxWorks嵌入式開發中. Bootrom和Boot image的區別,Boot image和VxWorks image的聯系和區別bootrom 是指on-chip bootrom,在CPU晶元內部,內嵌有小的boot程序(bootloader),類似於PC機主板上的BIOS的存儲區域。和boot image不是一回事。VxWorks文檔中的bootrom區是指boot image存放的位置。
擴展閱讀:
1
BootLoader
2
U-boot
開放分類:
計算機,網卡