99久久久久国产-99久久久久国产精品免费-99久久久久久久-99久久久免费精品免费-99久久免费费视频在线观看

131 1300 0010
行業(yè)動態(tài)
  • 導航欄目
  • 產品新聞
  • 企業(yè)新聞
  • 行業(yè)動態(tài)
  • U-Boot架構淺析之u-boot架構的特點分析
    U-Boot架構淺析之u-boot架構的特點分析
  • U-Boot架構淺析之u-boot架構的特點分析
  •   發(fā)布日期: 2020-04-01  瀏覽次數: 1,752

     導讀:嵌入式Linux系統(tǒng)搭建,bootloader是必不可少的一環(huán),而U-Boot已成嵌入式Linux事實標準。所以較為深入的分析U-Boot的設計,對于更好的理解U-Boot的工作原理有著重要意義。

      1. U-Boot簡介

     

      Das U-Boot 是一個主要用于嵌入式系統(tǒng)的引導加載程序,可以支持多種不同的計算機系統(tǒng)結構,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios與MicroBlaze。這也是一套在GNU通用公共許可證之下發(fā)布的自由軟件。《百度百科》

      見http://www.denx.de/wiki/U-Boot

      如其官網上所述,具有十大黃金法則:小巧、快速、簡單、可移植、可配置、可調試、易用、可維護、優(yōu)雅、開源。

      (1. Keep it Small,2. Keep it Fast,3. Keep it Simple,4. Keep it Portable;5. Keep it Configurable;6. Keep it Debuggable;7. Keep it Usable;8. Keep it Maintainable;9. Keep it Beautiful;10. Keep it Open)

      所以本文試圖從其設計的角度進行分析這些黃金法則,以期自己在軟件工程思想的角度能有所獲,同時也將自己筆記分享(Keep it open),方便與人交流,以期獲得更為深入的理解與體悟。

      廢話說了蠻多,Let‘s go:

      2. U-Boot文件夾拓撲結構

      基于u-boot-u-boot-2016.09.y的文件夾結構如下:

      

      arch 體系架構依賴

      api 機器架構獨立API,外部調用接口

      實現I/O,如標準化輸入輸出,顯示,網絡API、存儲API等,為cmd提供支持

      board 板級依賴實現。

      cmd shell命令實現

      common 與架構無關的雜項獨立功能

      configs 板級配置文件

      disk 磁盤分區(qū)實現

      doc 文檔

      drivers 通用設備驅動程序

      examples 應用示例代碼

      fs 文件系統(tǒng)實現(cramfs,ext2,jffs等)

      include 頭文件

      lib 通用庫

      license

      net 網絡通訊實現

      post 上電自檢是實現

      scripts 構建腳本以及Makefile

      tests 各種單元測試

      tools 生成S-Record或U-Boot映像的工具等。

      3. 項目管理

      U-Boot采用Kconfig進行項目管理,實現可裁剪可配置,新版U-Boot已支持make menuconfig功能,實現了易用的設計目標。其配置界面與內核一樣。

      

      4. 模塊層次架構分析

      

      arch 實現了不同體系結構的CPU,指令集、設備樹底層抽象,利用鏈接綁定實現了符號入口相對位置保持不變,故才能實現將內核鏡像拷貝到內存然后進行引導的功能。lib實現了初始化C運行時環(huán)境(棧/堆指針等的初始化),dts實現了設備樹的底層體系架構依賴的具體抽象剝離

      machine ,由于同樣的內核相同,各家芯片外設都不盡相同,所以將各自個性實現剝離實現于此,這主要體系在ARM體系的芯片,由于ARM公司售賣IP,各家芯片廠商在內核的基礎上延伸出各自不同的芯片,所以需要將差異性剝離實現。

      board, 實現了產業(yè)鏈下游,設備廠商的差異性,對于產品設計而言,需要將各自在boot階段需要嚴格初始化的實現放在這里,比如IO口的初始化,產品中大部分IO口必須顯式設置其初始狀態(tài)。

      driver 這里實現了boot階段必要的設備驅動,如網口、顯示等。

      dts 實現了設備樹

      api 實現了基本的IO,如標準化輸入輸出,顯示,網絡API、存儲API等,為cmd提供支持。

      disk 實現了輕量級磁盤管理

      fs 文件系統(tǒng)實現(cramfs,ext2,jffs等)

      lib 通用庫,比如CRC算法,加密算法,壓縮算法,字符串操作等

      cmd 實現了U-Boot命令集。

      net 實現網絡協(xié)議層

      cmd shell命令集,調用下層實現用戶接口功能,如下載,引導,存儲環(huán)境變量,打印信息等。

      common 是U-Boot 主體,如系統(tǒng)停留在U-Boot階段,CPU始終在執(zhí)行一個死循環(huán),run_main_loop()。

      5.基于armv8無SPL的啟動流程分析

      5.1 匯編程序執(zhí)行階段

      

      5.2 C執(zhí)行階段

      board_init_r的調用,進入C執(zhí)行階段,如下:

      

      至此,粗淺的將U-Boot的架構設計分析了一下。還有很多設計細節(jié)有待深挖。文中僅代表個人理解觀點,錯誤在所難免,歡迎交流。


  • ·上一篇:
    ·下一篇:
  • 其他關聯(lián)資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機:131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權所有:Copyright?2010-2023 www.qingjujia.cn 電話:13113000010 粵ICP備2021111333號
    主站蜘蛛池模板: 日韩欧美中| 国产微拍精品 | 中文字幕亚洲无线码高清 | 视频在线观看rrr在线观看 | 黄色录像欧美 | 久久精品亚洲综合一品 | 超清波多野结衣精品一区 | 国产在线拍揄自揄视精品不卡 | 国产亚洲一区二区三区在线 | 久久综合九色综合97飘花 | 日本黄色录像 | 国产黑丝视频在线观看 | 一区二区亚洲精品 | 欧美色视频日本片高清在线观看 | 三级国产三级在线 | 黄色不卡视频 | 小黄鸭污视频 | 九九99热久久精品在线6手机 | 日韩高清在线不卡 | 欧美毛片a级毛片免费观 | 生活片一级播放免费 | 国产成人亚洲精品乱码在线观看 | 中文字幕在线精品视频万部 | 欧美日韩一区二区三区在线 | 欧美亚洲国产一区二区三区 | 亚洲综合黄色 | 中文字幕日韩一区二区 | 在线免费看黄色 | 中国一级特黄的片子免费 | 一级毛片免费网站 | 西川结衣在线精品视频 | 91视频免费观看高清观看完整 | www一级黄色片 | 黄色的视频免费看 | 国产一级毛片大陆 | 欧美日韩国产深夜福利视频 | 久久精品一区二区国产 | 在线91色 | 亚洲国产欧美在线 | 超级成人97碰碰碰免费 | 美女免费毛片 |