1.å¦ä½å®å¶VxWorksï¼
2.总结uboot的重要概念,不知道的看过来
å¦ä½å®å¶VxWorksï¼
VxWorksæ¯ç±ç¾å½Wind River å ¬å¸æ¨åºçä¸ç§å¼ºåµå ¥å¼å®æ¶æä½ç³»ç»ï¼RTOSï¼ãå®éç¨å¾®å æ ¸ç»æï¼å ·æé«å¯é æ§ãå®æ¶æ§ãå¯è£åæ§çç¹ç¹ï¼èä¸æ¯æå¤ç§CPUãVxWorksçä¸ä¸ªéè¦ç¹ç¹æ¯å®çå¯ç§»æ¤æ§ï¼åºç¨ç¨åºç¼ç å¨å¾å¤§ç¨åº¦ä¸ä¸ç®æ æ¿ç硬件åç»ææ å ³ãå®æææç¹å®ç硬件åè½é½éæå¨ä¸ä¸ªç§°ä¹ä¸ºæ¿çº§æ¯æå BSPï¼Board Support Packageï¼çåºä¸ã
ç®å为æ¢Wind Riverå ¬å¸æä¾çåºäºæä¸CPU è¯ä¼°æ¿çBSP è¶ è¿ä¸ªï¼å½ç¨æ·å¼åèªå·±ç®æ æ¿çBSPæ¶ï¼æ¯è¾ç®åçæ¹æ³æ¯ä»ææä¾çBSPä¸éä¸ä¸ªææ¥è¿çæ¥ä¿®æ¹ãè¿éæå°çBSPç设计就æ¯æè¿ç§æ¿çº§ç对ä¾èµäºç¡¬ä»¶çæºä»£ç åå¿ è¦çä¿®æ¹ãå¢å æå é¤ï¼ä»¥æ»¡è¶³ç¹å®ç硬件ç¯å¢ã
1 BSPçæ¦å¿µ
BSP(Board Support Package,ââæ¿çº§æ¯æå )æ¯ä»äºåºå±ç¡¬ä»¶åä¸å±è½¯ä»¶ä¹é´çåºå±è½¯ä»¶å¼åå ï¼è¿æºäºåµå ¥å¼æä½ç³»ç»ä¸ç¡¬ä»¶æ å ³ç设计ææ³ãå¦ä»çåç§åµå ¥å¼ç³»ç»,é½éç¨äºåå±ç设计æ¹æ³ãå®å°ç³»ç»ä¸ä¸ç¡¬ä»¶ç´æ¥ç¸å ³çä¸å±è½¯ä»¶ç¬ç«åºæ¥,称ä¹ä¸ºæ¿çº§æ¯æå (BSP)ãè¿éBSPç主è¦åè½ä¸ºå±è½ç¡¬ä»¶ï¼æä¾æä½ç³»ç»ç驱å¨å硬件驱å¨ï¼å ·ä½åè½å æ¬ï¼
(1)ç®æ æ¿ç¡¬ä»¶åå§åï¼ä¸»è¦æ¯CPUçåå§åï¼ä¸ºæ´ä¸ªç³»ç»æä¾åºå±ç¡¬ä»¶æ¯æï¼
(2)为æä½ç³»ç»æä¾è®¾å¤é©±å¨ç¨åºåç³»ç»ä¸ææå¡ç¨åºï¼
(3)å®å¶æä½ç³»ç»çåè½ï¼ä¸ºè½¯ä»¶ç³»ç»æä¾ä¸ä¸ªå®æ¶å¤ä»»å¡çè¿è¡ç¯å¢ï¼
(4)åå§åæä½ç³»ç»ï¼ä¸ºæä½ç³»ç»çæ£å¸¸è¿è¡å好åå¤ï¼æ 线SOCå¼åå¹³å°å S3CB0 ARM7å¼åæ¿å S3C ARM9å¼åæ¿å ATSAM7S ARM7 åçæºå¼åæ¿ä¹çââELITE-Iåçæºå¦ä¹ å¼åç³»ç»å S3C ARM9å¼åæ¿(II) å EPMTC CPLDå¼åæ¿ å
2 BSPæ件ç»æååè½
BSPä¸å æ¬æºä»£ç ã头æ件ãMAKEæ件ãæ´¾çæ件以åäºè¿å¶é©±å¨ç¨åºæ¨¡åãå¨VxWorks ä¸ç¡¬ä»¶é©±å¨ç¨åºå为éç¨æ§åBSPä¸ç¨æ§ä¸¤ç±»ãå¨å¼åBSPæ¶ï¼æ¢è¦å¯¹BSPä¸ç¨ç驱å¨ç¨åºæä¾æ¯æï¼è¿è¦å°éç¨ç设å¤é©±å¨ç¨åºéæå¨ä¸èµ·ãå æ¤ï¼ç¼åç设å¤é©±å¨ç¨åºï¼å¯æ ¹æ®å ·ä½æ åµæ¾å¨BSPä¸çåéä½ç½®ã
BSPæä»¶å¨ VxWorks /target /config /allåVxWorks /target /config / bspnameæ件夹éãå ¶ä¸ï¼allæ件夹éçæ件æ¯ææBSPçéç¨æ件ï¼bspnameæ件夹çæ件æ¯ç¨æ·èªå·±å®å¶çBSPæ件[1]ãç»è¿ç¼è¯ãé¾æ¥ï¼å¹¶å¨makefileådepend.bspnameçæ件çæ§å¶ä¸ï¼åç¨åºæåå°çæéåãBSPçç»æå主è¦æ件åè½å¦ä¸ã
(1)Tornado\target\config\all\ç®å½ä¸çæ件ãå æ¬bootConfig.cï¼bootInit.cï¼usrConfig.cçï¼å®ä»¬æ¯ææBSPå ±äº«çï¼ä¸»è¦æ¯ç¼ºçå®ä¹äºææVxWorksé 置以åBoot Romçåå§åæ§å¶ä»£ç ï¼æ以ä¸æ¯ç¹å«éè¦ä¸è¦æ´æ¹éé¢çä»»ä½æ件ã
(2)Tornado\target\config\bspname\ç®å½ä¸çæ件ãå æ¬makefileï¼depend.bspnameï¼config.hï¼bspname.hï¼romInit.sï¼sysALib.sï¼sysLib.cï¼sysSerial.cçï¼å ¶ä¸config.hä¸å å«ç¹å®CPUæ¿çææå å«æ件åå®ä¹ã
VxWorksæ¯æå¤ç§å¤çå¨å¹³å°ï¼ç¨æ·å¯ä»¥é对ä¸åçç®æ ç³»ç»ï¼éè¿ä¿®æ¹è¿äºæ件æ¥å®æBSPä¸ VxWorkså¨ä¸åå¹³å°ä¸ç移æ¤ã
3 Vxworksæ ååç±»åå ¶å¯å¨è¿ç¨
3.1 VxWorksæ ååå ¶åç±»
VxWorkså¨å¯å¨è¿ç¨ä¸æ¶åå°ä¸¤ä¸ªæ åæ件ï¼bootromæ ååVxWorksæ åãè¿ä¸¤ä¸ªæ åæ件é½è¦ä½¿ç¨BSP代ç ãbootromæ件æ¯ä»ROMå¼å¯¼VxWorksçå¼å¯¼ç®æ 模åï¼ç¨äºå¯¹ç®æ æ¿è¿è¡åå§åï¼å è½½VxWorksæä½ç³»ç»æ åãVxWorks imageå å«VxWorks OSï¼æç»è¿è¡äºç®æ æ¿ä¸ãVxWorksæ åæå 载类åå¯å为ï¼å¯ä¸è½½æ ååå¯å¼å¯¼æ åï¼æè¿è¡æ¹å¼å为å¨ROMä¸åå¨RAMä¸ä¸¤ç§ã
å¯ä¸è½½æ åï¼Loadable Imageï¼ï¼å®å®é å æ¬ä¸¤é¨åï¼ä¸æ¯VxWorksï¼äºæ¯boot ROMï¼ä¸¤é¨åæ¯ç¬ç«å建çãå¯å¼å¯¼æ å(Bootable Image)æ¯å°å¼å¯¼ç¨åºåVxWorksè为ä¸ä½çæ åï¼ä¸è¬ä¸ºæç»äº§åï¼å æ¬ä¸é©»çROMçæ ååé©»çROMçæ å两ç§ç±»å[2]ã
VxWorkså¨ROMä¸è¿è¡ï¼åªè¦æVxWorks imageçdata段å¤å¶å°RAMçRAM-LOW-ADRSï¼texté¨åçå¨ROM并å¨ROMæ§è¡ãå¨ROMä¸è¿è¡VxWorkså¯ä»¥èçRAM空é´ï¼æå©äºåºç¨ç¨åºææ´å¤§ç空é´è¿è¡ï¼ä½æ¯è¿è¡é度ç¸å¯¹è¾æ ¢ãVxWorkså¨RAMä¸è¿è¡ï¼åå ¥ROMä¸çbootæVxWorks imageæ¯å缩çï¼éå 解å并å¤å¶ææçtextædataå°RAMçRAM-LOW-ADRS,å¨RAMä¸è¿è¡ã
总结uboot的重要概念,不知道的看过来
本篇内容不讲解uboot源码,只总结面试中高频问到的重要知识点。内容适用于嵌入式新人了解uboot,对老手有复习和查漏补缺的thinkphp音乐源码作用。
1、PC机启动:上电后,BIOS程序初始化DDR内存和硬盘,从硬盘读取OS镜像到DDR,跳转执行OS。
2、嵌入式Linux系统启动:上电后执行uboot,语义分析 源码初始化DDR、Flash,将OS从Flash读到DDR,启动OS。
3、uboot定义与作用:uboot属于bootloader,gitlab 源码安装作为单线程裸机程序,主要作用是初始化硬件、内存、flash等,引导内核启动。
4、投资黄金源码uboot启动阶段(不同平台差异):MTK平台:boot rom -> preloader -> lk -> kernel;RK平台:bootrom -> spl(miniloader) -> uboot -> trust -> kernel;NXP平台:bootrom -> bl2 -> ATF -> uboot -> kernel。
5、uboot支持多种启动方式:SPI Flash/eMMC/Nvme/SD/Hard Disk/U-Disk/net。启动方式不同,固件存放位置也不同。
6、猜拳游戏源码掌握uboot的关键点:命令和环境变量。uboot启动后大部分工作在shell中完成,命令用于操作,环境变量如bootcmd和bootargs,用于设置启动参数。
7、bootargs参数详解:root用于指定rootfs位置,console用于设置控制台,mem用于指定内核使用内存大小,ramdisk_size用于设置ramdisk大小,initrd用于指定initrd参数,init用于指定启动脚本,mtdparts用于设置分区。
8、常用bootargs组合:文件系统为ramdisk、jffs2类型、nfs等不同情况下的bootargs设置示例。
总结,了解uboot是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。