精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

對于系統啟動,bootloader的功能的簡單分析

Q4MP_gh_c472c21 ? 來源:互聯網 ? 作者:佚名 ? 2018-02-05 10:23 ? 次閱讀

這幾天一直在糾結于系統啟動,bootloader的功能等等,沒有系統學過所以總是想不明白,也沒有系統的文章,總是對一些細節困惑。最近又被分配了應用程序的任務,擔心以后再也沒機會看驅動這邊的東西了...

今天看了一下mmu相關的,都是嵌入式系統的,pc可能有很大不同

mmu,硬件設備(似乎也有軟件實現?),實現虛擬地址到物理地址映射,cpu的指令都是在虛擬地址上執行的(這么說似乎也不準確),或許該說是在沒有mmu的時候,cpu的地址是虛擬地址同時也是物理地址(因為沒有去映射,直接輸出到地址線上了),mmu可以當坐中間的翻譯,系統上電后,cpu自然要從某一處讀指令,那么我們要做的就是把初始化系統的代碼(請允許我叫他bootloader)放在那,

這時候其他外設都(或許有的可以?)驅動不了(cpu不會),cpu的一些工作狀態也不一定是我們想要的(寄存器的值),那么放在這的代碼就要設置一下cpu的參數(比如關中斷),也可以檢測一下硬件什么的,比如往某個地址寫個什么,但是終極目標是加載OS,驅動周邊設備供應用工作

對于系統啟動,bootloader的功能的簡單分析

關于這個放指令的地方,一般(從來都是)放在rom里,flash、eeprom什么的,這里速度比較慢,運行個bootloader可以(匯編),程序還是要放到ram上(c語言還要堆棧的,不像匯編不要動態內存,堆棧的sp也要往哪分),比如sdram什么的,嵌入式的話就是知道從rom里拷到ram里了,這里你要知道放到哪,那么你就又要知道這個系統硬件怎么連的,ram規格什么樣的才能知道物理地址,要不然cpu不知道給你放到哪,放完了跳過去啟動就行了,跳過去的方法還是設置一下寄存器什么的

這里有個問題就是不同設備物理地址連的不一樣(一般來說很多時候都是不連續的甚至),那么操作系統控制起來就有點麻煩了,每個設備都要重新設置寄存器地址啊,系統和程序分配的地址啊什么的,而且很可能某個應用申請不到連續的地址,用指針加加減減的很麻煩

于是誕生了mmu,在bootloader里配置好(似乎一般來說?),他把所有的物理地址按你的要求映射的虛擬地址,不連續的連續了,不統一的統一了(需要根據不同的設備編寫不同的bootloader,但是這似乎比編寫寫操作系統輕松),需要說明的是mmu配置了一個寄存器存放的地址映射的表格的物理地址基址,開啟mmu以后的cpu指令都會根據那個表格翻譯了。

操作系統回對虛擬地址設置訪問權限,有的只能操作系統涂改,有的分給用戶,用戶的程序不能隨便改操作系統的的虛擬內存范圍(這其中就有cpu寄存器之類的),但是cpu也提供了修改它們的接口,這其實是防止意外發生啦,比如你的指針亂指。

再來想想現在的dta的啟動,看看能想通多少。

1、內置rom的啟動程序(或許也叫bootloader)啟動flash里的bootloader,起始地址0xbfe00000(物理地址哦,ps:還可以設置是否效驗什么的。。);

2、flash的bootloader讀取某處的配置信息,獲得應用程序的在flash中的物理地址,然后把應用程序拷到ram里,然后跳過去跑應用,入口應該是個操作系統入口吧

接下來就是我根據各種網上資料對我現在看得這個bootloader的yy

該bootloader的確分兩步,但是不知道這兩部分別干什么暫時假設:

第一步設置一下cpu、內存控制器什么的寄存器,算是最初始的初始化,gpio引腳點亮一個led說明一下,然后把stage2的文件找個ram的地方展開,運行stage2

第二部也就是stage2,初始化串口(關于串口我實在有幾千字的吐槽不提)供調試以及輸出信息什么的(似乎嵌入式全部提供串口,而且都會從串口接收發送數據之類的,難道是因為串口驅動起來很簡單?),再玩一下led,這時候可以找一下哪些物理地址可以用,不過這里這個嵌入式系統似乎哪些可以用都是之前就定好了的?然后就按之前說的從“定好的”地方(flash某處)讀取配置信息,挑一個程序映像,并挑一個ram位置作為目的地拷過去,然后啟動那個程序!

那個程序一般來說是個操作系統了,他會建幾個任務運行什么的

不過很令我沮喪的是我看的關于bootloader的文章表示不要再os啟動前開啟mmu。。。關于os和bl實在還有很懂地方不懂啊,不知道14號前這個應用搞得出來不。。

不知道各位看這塊的時候,是不是也有同感啊。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3568

    瀏覽量

    129237
  • bootloader
    +關注

    關注

    2

    文章

    234

    瀏覽量

    45550
  • MMU
    MMU
    +關注

    關注

    0

    文章

    91

    瀏覽量

    18268

原文標題:嵌入式er日常!最近一直糾結于MMU,bootloader,dta....

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MQX操作系統啟動到main函數的過程

      當一個嵌入式操作系統上電的時候,是如何從硬件跳轉到軟件的main函數里面的呢?許多學習嵌入式軟件的人一開始都會有這樣的疑惑,今天這里將詳細介紹MQX系統啟動到main函數的這個過程,這個過程被
    發表于 11-08 15:48 ?1007次閱讀
    MQX操作<b class='flag-5'>系統啟動</b>到main函數的過程

    TL3588--系統啟動卡制作及系統固化

    TL3588--系統啟動卡制作及系統固化
    的頭像 發表于 01-25 09:50 ?1583次閱讀
    TL3588--<b class='flag-5'>系統啟動</b>卡制作及<b class='flag-5'>系統</b>固化

    Linux和Windows系統啟動過程的簡單分析

    Linux和Windows系統啟動過程的簡單分析 對于Windows系統的使用和操作,大家應該都比較熟悉,而
    發表于 08-28 11:27

    IAR系統啟動流程及修改方法

    硬件初始化和軟件運行環境初始化兩個部分的工作。一、系統硬件初始化對于硬件初始化,執行步驟流程如下:圖?1CPU復位時,會從系統啟動程序代碼cstartup中的__iar_program_start函數
    發表于 08-06 13:57

    基于ARM-μCLinux嵌入式系統啟動引導的實現

    基于ARM-μCLinux嵌入式系統啟動引導的實現:介紹了 ARM-μCLinux 嵌入式系統的結構組成,重點分析了 ARM--μCLinux 嵌入式系統啟動引導的過程實現該
    發表于 06-25 08:14 ?36次下載

    Motorola微處理器的bootloader分析與應用

    引 言??bootloader是用來完成系統啟動系統軟件加載工作的程序。它是底層硬件和上層應用軟件之間的一個中間件軟件,完成處理器和周邊電路正常運行所要的初始化工
    發表于 03-11 12:39 ?1076次閱讀
    Motorola微處理器的<b class='flag-5'>bootloader</b><b class='flag-5'>分析</b>與應用

    BootLoader啟動引導方式分析

    BootLoader啟動引導方式分析 在中大規模的嵌入式系統開發中,往往需要BootLoader系統
    發表于 03-29 15:09 ?2463次閱讀
    <b class='flag-5'>BootLoader</b><b class='flag-5'>啟動</b>引導方式<b class='flag-5'>分析</b>

    系統啟動過程

    系統啟動過程系統啟動過程主要由一下幾步組成(以硬盤啟動為例):1. 開機2. BIOS 加電自檢 ( Power On Self Test -- POST ),內存地址為 0ffff:00003. 將硬盤第一個
    發表于 10-11 12:17 ?2250次閱讀

    改進的直接轉矩控制系統啟動方法

    改進的直接轉矩控制系統啟動方法
    發表于 01-21 11:54 ?1次下載

    bootloader模式怎么進入

    對于很多安卓手機用戶們來說,相信刷過機的用戶們一定對Bootloader模式不會陌生,Bootloader就相當于手機的bios,它在手機啟動的時候根據基帶初始化硬件,然后引導
    發表于 11-10 16:59 ?4.9w次閱讀

    如何實現簡單bootloader功能

    考慮到瑞薩的MCUBoot的ROM占用和某些客戶的需求,本篇主要講述在不使用瑞薩MCUboot驅動下,如何實現簡單bootloader功能。
    的頭像 發表于 09-06 13:13 ?2468次閱讀

    UM2012_osxMotionXX系統啟動

    UM2012_osxMotionXX系統啟動
    發表于 11-22 19:24 ?0次下載
    UM2012_osxMotionXX<b class='flag-5'>系統啟動</b>

    一張圖了解嵌入式系統啟動流程

    如下圖所示是嵌入式系統啟動流程圖,圖中紅色的數字圓點表示啟動的先后順序。主要分為4個階段,分別是第一階段 bootloader,第二階段uboot,第三階段內核啟動,第四階段app
    發表于 03-07 09:44 ?828次閱讀

    RK3568--系統啟動階段LOGO顯示

    RK3568--系統啟動階段LOGO顯示
    的頭像 發表于 01-19 14:44 ?1023次閱讀
    RK3568--<b class='flag-5'>系統啟動</b>階段LOGO顯示

    TLT507--系統啟動階段LOGO顯示

    TLT507--系統啟動階段LOGO顯示
    的頭像 發表于 01-26 09:42 ?376次閱讀
    TLT507--<b class='flag-5'>系統啟動</b>階段LOGO顯示