嵌入式 Linux 系统移植——BSP分析

嵌入式 Linux 系统移植——BSP分析

一、BSP简介

嵌入式系统由硬件环境、嵌入式操作系统和应用程序组成,硬件环境是操作系统和应用程序运行的硬件平台,它随应用的不同而有不同的要求。硬件平台的多样性是嵌入式系统的主要特点,如何使嵌入式操作系统在不同的硬件平台上有效地运行,是嵌入式系统开发中需要解决的关键问题。解决的方法是在硬件平台和操作系统之间提供硬件相关层来屏蔽这些硬件的差异,给操作系统提供统一的运行环境,硬件相关层就是嵌入式系统中的板级支持包 BSP(Board Support Package,简称BSP)。

BSP是嵌入式系统中介于硬件平台和操作系统之间的中间层软件,主要目的是为了屏蔽底层硬件的多样性,根据操作系统的要求完成对硬件的直接操作,向操作系统提供底层硬件信息并最终启动操作系统。BSP具有硬件相关性和操作系统相关性的特点,BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动,具体功能包括:

A、单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持

B、为操作系统提供设备驱动程序和系统中断服务程序

C、定制操作系统的功能,为软件系统提供一个实时多任务的运行环境

D、初始化操作系统,为操作系统的正常运行做好准备

BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工 作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。

对于开发板提供商来说,BSP就是开发板的生产商提供的一个资料和资源包。
通常包括:

硬件相关: 
    A、开发板原理图 
    B、开发板元件列表 
    C、接口定义 
    D、地址分布

软件相关:

A、某些操作系统的bootloader及源代码 
    B、某些操作系统裁剪好的映像文件(如linux系列可能有源码,如WinCE可能有CEC文件)

服务相关 :
    售后的技术支持

二、buildroot简介

Buildroot是一个包含Makefile和修补程序的集合,实现构建交叉工具链,根文件系统以及Linux内核映像。Buildroot是从事嵌入式系统开发的强大工具。

官方网站:https://www.buildroot.org

1、buildroot工程目录分析

/dl 存放下载的源码包

/toolchain 放置编译交叉工具的配置文件与源代码

/fs/ 主要存放各种文件系统的源代码

/fs/skeleton 存放骨架,第一次生成文件系统镜像的地方

/linux linux源码存放地方

/configs 预先放置了一些开发板的配置参考,有arm,X86和MIPS等

/board 发现友善之臂的配置文件

/boot bootloader的一些配置,可以通过配置下载源码

/package 主要存放应用软件的配置文件,未来开发的主战场,可以通过配置其文件,增加源码包或者删减,利用 buildroot来实现交叉编译

/Output 编译的生成目录

/Output/images 存放编译后产生的所有镜像文件

/Output/build 编译的源码包,buildroot从dl的包解压缩到build里面,然后再编译

/Output/staging 这个目录非常重要,它提供了交叉编译依赖的库,一般进行make的时候,都会利用staging的库文件进行链接

/Output/target 嵌入式设备下的根文件系统,里面是我们实际烧写的根文件系统镜像

/Output/host 交叉编译工具位置如arm-linux-gc

/Output/toolchain 第三方交叉编译工具位置,我的目录是空的。

三、BSP实例分析

九鼎科技发布的基于X210开发板的qt_x210v3 BSP。结构如下:

buildroot,构建根文件系统

Kernel,kernel内核

uboot、xboot,uboot移植部分

mk:整个BSP的管理、编译脚本,

1、buildroot

buildroot是一个工具集成包,集成了交叉编译工具链的制作,以及整个rootfs的配置编译过程。同时,buildroot将集成了bootloader和kernel的make xxx_defconfig+make menuconfig配置过程,所有跟bootloader、kernel、rootfs有关的配置均可以在buildroot中完成。Buildroot本身也是使用make xxxconfig进行界面选项配置的。

2、mk脚本

mk脚本的主要作用是编译bsp中的所有的源代码(包括bootloader、kernel、rootfs等),实际是整个BSP的Makefile。mk脚本可以指定BSP中的某个目标进行编译,也可以编译全部目标(bootloader、kernel、rootfs)。使用方法如下:

-j=n                 using n threads when building source project (example: -j=16)

-x, --xboot          build bootloader xboot from source file

-ui,--uboot_inand    build uboot for emmc

-un,--uboot_nand     build uboot for nand flash

-k, --kernel         build kernel from source file and using default config file

-r, --rootfs         build root file system

-re,--rootfs_ext3    build rootfs for emmc,used with uboot

-rj,--rootfs_jffs2   build rootfs for nand,used with uboot

-U, --update         gen update package update.bin,used with xboot

-a, --all            build all, include anything

-h, --help           display this help and exit

时间: 2024-08-03 02:55:33

嵌入式 Linux 系统移植——BSP分析的相关文章

嵌入式linux系统移植开发视频教程

深入浅出嵌入式linux系统移植开发(环境搭建.uboot的移植.嵌入式内核的配置与编译) 课程讲师:韩老师 课程分类:Linux 适合人群:中级 课时数量:56课时 用到技术:嵌入式Linux开发模式 涉及项目:基于tftp烧写系统 咨询qq:1840215592 课程介绍: 本课程重点是给大家讲解嵌入式linux系统移植的开发方法,采用理论与实践,硬件与软件相结合的方法. 1.在每节开始之前先简单回顾上一节所讲的主要内容,并对本节所讲的内容先进行概述,讲解概念.技术要点,设计实现思路等内容,

【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,如果对这个课程有兴趣的,可以加我的QQ2059055336和我联系. 课程内容简介 本课程重点是给大家讲解嵌入式linux系统移植的开发方法,采用理论与实践,硬件与软件相结合的方法. 1.在每节开始之前先简单回顾上一节所讲的主要内容,并对本节所讲的内容先进行概述,讲解概念.技术要点,设计实现思路等内容,最后总结本次课程的要掌握的要点. 2.在讲课的过程中对关键技术

(转)在嵌入式Linux系统(OK6410)中移植Boa 服务器

OK6410的Boa服务器移植: <一> Boa的编译 1. 从 www.boa.org 下载 Boa 服务器的最新版:boa-0.94.13.tar.gz. 2. 解压:tar xzf boa-0.94.13.tar.gz 3. 进入解压后的文件夹 boa-0.94.13内部的 src文件夹,对源文件进行如下修改 ================================================= 由于arm-linux-gcc 编译器版本过高,对语法的支持有一些改变,所以需要

linux系统移植和根文件系统制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5.

从开始到结束,手把手教你使用busybox构建类嵌入式Linux系统

概述: 本篇博客是一个自制类嵌入式Linux系统的制作手册,内容涵盖使用宿主机通过busybox实 现制作类嵌入式Linu系统的详细过程,一步一步教你如何制作属于你自己的linux系统,同时 帮助你更加清楚的了解linux系统的组成结构,本篇博客需要读者对linux系统的启动流程及ssh 远程连接有一定的了解,这部分很多博客都有介绍,这里就不说明了,不了解的读者可以先去 看看这方面的博客. 制作的整个过程比较漫长(主要是编译源码需要耗费大量时间,因此,在编译内核时,记 得另起虚拟终端先完成其它操

嵌入式 Linux系统编程(一)——文件IO

嵌入式 Linux系统编程(一)--文件IO 一.文件IO概念 linux文件IO操作有两套大类的操作方式:不带缓存的文件IO操作,带缓存的文件IO操作.不带缓存的属于直接调用系统调用(system call)的方式,高效完成文件输入输出.它以文件标识符(整型)作为文件唯一性的判断依据.这种操作不是ASCI标准的,与系统有关,移植有一定的问题.而带缓存的是在不带缓存的基础之上封装了一层,维护了一个输入输出缓冲区,使之能跨OS,成为ASCI标准,称为标准IO库.不带缓存的方式频繁进行用户态 和内核

龙尚3G、4G模块嵌入式Linux系统使用说明【转】

本文转载自;http://blog.csdn.net/zqixiao_09/article/details/52506812 驱动部分: 1.kernle/drivers/usb/serial/option.c的结构体数组 static struct usb_device_id option_ids[]中增加加入产品的VID和PID { USB_DEVICE( 0x1c9e, 0x9e00 ) }  //   U5300v/C7500 evdo { USB_DEVICE( 0x1c9e, 0x9

linux系统web日志分析脚本

linux系统web日志分析这方面工具比较多,比如logwatch或awstats等使用perl语言开发,功能都非常强大.但这些软件都需要进行一些配置,很多朋友往往在技术方面没有投入太多力量,即便参照互联网上图文教程也无从下手.对于此情况我编写了一个web日志分析脚本,功能比较简单,无需配置,有需要的朋友可以再尝试一下.  脚本地址: gbk版(一般ssh客户端不用调整直接可用: wget http://jinxiang.oss-cn-hangzhou.aliyuncs.com/weblogch

ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

本文转载自http://useless20.blog.163.com/blog/static/237409982010227127576/ 嵌入式linux系统与主机通过串口传输文件 我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载.但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx.zmtx,另外一个是lsz.lrz.个人觉得zmrx/zmtx没有lsz/lrz稳定,建议还是用后者.下面介