皮皮网
皮皮网

【android源码分析 书籍】【股票公式macd源码】【科威特离中国源码】bootrom源码

时间:2024-12-29 09:13:27 来源:源码里没有index

1.如何定制VxWorks?
2.总结uboot的重要概念,不知道的看过来

bootrom源码

如何定制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,对老手有复习和查漏补缺的android源码分析 书籍作用。

       1、PC机启动:上电后,BIOS程序初始化DDR内存和硬盘,从硬盘读取OS镜像到DDR,跳转执行OS。

       2、嵌入式Linux系统启动:上电后执行uboot,股票公式macd源码初始化DDR、Flash,将OS从Flash读到DDR,启动OS。

       3、uboot定义与作用:uboot属于bootloader,科威特离中国源码作为单线程裸机程序,主要作用是初始化硬件、内存、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是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。

更多内容请点击【知识】专栏