u-boot学习(1)

前言;下面将从下面几个方面来介绍u-boot :目录

一:什么是u-boot、u-boot的工作模式和uboot的功能介绍

二;u-boot的编译体验

三;u-boot的基本命令

四;u-boot的代码目录结构

五:u-boot工作流程

一:什么是u-boot、u-boot的工作模式和简单介绍

从软件角度来看,一个嵌入式系统可以分为四个层次:

(1):引导加载程序:包括固件(firmware)中的boot程序(可选)和bootloader两大部分,相当于PC机中的bios和GRUB或LILO。引导程序的主要任务是将内核从硬盘上读到内存中,然后跳转到内核的入口地址处去执行,即启动操作系统,然后u-boot就是bootloader中的一种。

(2):Linux内核:特定于嵌入式平台的定制内核。

(3):文件系统:包括了系统命令和应用程序。

(4):用户应用程序:特定于用户的应用程序。

下面就是固态储存设备的空间分配结构图:

如图所示:lootloader是位于整个flash中的最前端部分,接着是boot的参数配置,然后就是内核部分,节奏就是跟文件系统;

u-boot的工作模式有:启动加载模式和下载模式;

u-boot支持多种嵌入式操作系统,如Linux、NETBSD、Vxwork、QNX、RTEMS、ARTOS、Lynx0S.

支持多个处理器系列,如PowerPC 、ARM、x86、MIPS、Xscale

丰富的设备驱动源代码,如串口。以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等。

U-boot的主要功能:

作为一个较复杂的bootloader来说,其实u-boot的功能已经称得上一个小的微内核。如果配上一些后续的进程(或线程管理),加上一些具体设备的驱动,就能基本实现一个小的嵌入式操作系统。其只要功能如下:

(1):系统引导功能:

支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;

(2):基本辅助功能:

强大的操作系统接口功能,可灵活设置和传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,
尤其对Linux的支持最为强劲;支持目标板环境参数多种存储方式,如flash .NVflash、EEPROM。

(3):CRC32校验:

可校验FLASH中的内核、RAMDISK镜像文件是否完好。

(4):设备驱动:

串口、SDRAM、FLASH、以太网、LCD、NVRAM、键盘、USB、PCMCIA、PCI、RTC等的支持。

(5):上电自检功能:

SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号。

(6):特殊功能:XIP内核引导

二、u-boot的编译体验:

注意本实验平台:交叉工具链是:arm-linux-gcc-3.4.5版本的。u-boot是U-boot-1.1.6版本的。

编译步骤:

(一):解压u-boot大源码包   Tar xjf  u-boot-1.1.6......

(二):打补丁;  patch -p1 <  .. /u-boot-1.1.6_jz2440.patch

(三):配置: 配置成适合自己的单板   make 100ask24x0_config

(四):编译 :  make

编译结果是:生成一个194KB的u-boot.bin,即可移植到flash上去运行。

三;u-boot的基本命令

(1):寻求帮助命令;help(?:help的别名) (h:查询一个命令的缩写)

(2):环境变量相关指令:  printenv  、setenv    注意:环境变量时指操作系统中用来指定操作系统运行环境的一些参数。

(3):文件下载相关命令:  tftp ,串口下载相关命令:loadb

(4):内存操作相关命令:显示内存值md[.b、.w、.i]      修改内存:mm[.b、.w、.i]

(5):Flash相关命令:flinfo 、 protect  off/on all、erase  、cp。

(6):执行程序相关命令:go  、bootm、run

(7):其他命令;bdinfo、bootcmd

四:u-boot的代码目录结构:

1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现。

2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件。

3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录。

4、Doc是文档目录,有u-boot非常完善的文档。

5、Drivers中是u-boot支持的各种设备的驱动程序。

6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统。

7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件。

8、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现。

9、Tooles是生成U-boot的工具。

10、disk硬件接口程序

11、dtt数字温度测量器或者温度传感器的驱动

12、lib_generic通用库函数的实现

13、lib_ppc存放对PowerPC体系结构通用的文件

14、存放对ARM体系结构通用的文件

总结:这些目录中所要存放的文件有着一定规则,基本上可以分为3类:

(1):与处理器体系结构或者开发板硬件直接相关

(2):一些通用的函数或者驱动

(3):U-boot的应用程序、工具或者文档

五:u-boot工作流程

u-boot学习(1),布布扣,bubuko.com

时间: 2024-10-16 16:59:54

u-boot学习(1)的相关文章

Spring Boot学习记录(一)--环境搭建

Spring Boot学习记录(一)–环境搭建 标签(空格分隔): spring-boot 最近趁着下班闲时间学习spring-boot,记录下学习历程,最后打算实战一个API管理平台,下面开始环境配置. 1.工程结构 使用maven建立一个普通结构,因为spring-boot内嵌tomcat,所以打包只需要打包成jar就可以直接运行,所以并不像以前那样建立WEB程序了,目录如下,类可以先建立好放在那: 2.引入maven依赖 根据官方教程提示,直接引入parent就可以使用spring-boo

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

Spring Boot学习记录(二)--thymeleaf模板

Spring Boot学习记录(二)–thymeleaf模板 标签(空格分隔): spring-boot 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好的和spring集成.下面开始学习. 1.引入依赖 maven中直接引入 <dependency> <groupId>org.springframework.boot</gr

Spring boot 学习笔记 (二)- 整合MyBatis

Spring boot 学习笔记 (二)- 整合MyBatis Spring Boot中整合MyBatis,并通过注解方式实现映射. 整合MyBatis 以Spring boot 学习笔记 (一)- Hello world 为基础项目,在pom.xml中添加如下依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter&l

Spring boot 学习笔记 - Hello world

Spring boot 学习笔记 - Hello world spring boot介绍: spring-boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. Hello world 通过官网https://start.spring.io/

Spring Boot学习路线

Spring Boot 学习路线,本文计划根据作者近几年的工作.学习经验,来分析和制定一个学习使用 Spring Boot技术的步骤路线图. 一.准备工作 俗话说:"工欲善其事必先利其器".特别是软件开发,这样一个重视工程实践的领域,一定要最先选择和熟悉一系列的开发环境工具. 首先推荐选用最新版本技术标准的开发工具,将如下的开发环境安装配置好. 开发环境: (1)JDK 1.8 (2)Eclipse Oxygen EE版本 或者也可以使用 IntelliJ IDEA (3)Tomcat

Spring Boot学习大全(入门)

Spring Boot学习(入门) 1.了解Spring boot Spring boot的官网(https://spring.io),我们需要的一些jar包,配置文件都可以在下载.添置书签后,我自己常常来看看spring boot这老兄,以及后面所需要的Spring Cloud.Spring Cloud Data Flow. 2.Spring Boot的简介 随着动态语言的流行( Ruby, Groovy, Scala, Node. js)Java的开发显得格外的笨重,繁多的配置,低下的开发效

spring boot 学习之五(日志配置)

想直接看这里的我建议先看了我的spring boot 学习之四.因为日志的配置要用到properties. 先了解一下springBoot的日志系统然后再进行配置. springboot默认采用的是slf4j+logback.之前的web模块已经添加过了相关日志的依赖 private static final Logger logger = LoggerFactory.getLogger(LogConfig.class); 我们调用这个对象即可进行日志记录,日志记录默认是打印出来的,我们可以调用

Spring boot学习(六)Spring boot实现AOP记录操作日志

前言 在实际的项目中,特别是管理系统中,对于那些重要的操作我们通常都会记录操作日志.比如对数据库的CRUD操作,我们都会对每一次重要的操作进行记录,通常的做法是向数据库指定的日志表中插入一条记录.这里就产生了一个问题,难道要我们每次在 CRUD的时候都手动的插入日志记录吗?这肯定是不合适的,这样的操作无疑是加大了开发量,而且不易维护,所以实际项目中总是利用AOP(Aspect Oriented Programming)即面向切面编程这一技术来记录系统中的操作日志. 日志分类 这里我把日志按照面向

15 个优秀开源的 Spring Boot 学习项目

Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 <Spring Boot + Vue 全栈开发实战>迄今为止已经加印了 8 次,Spring Boot 的受欢迎程度可见一斑.经常有人问松哥有没有推荐的 Spring Boot 学习资料?当然有!买松哥书就对了,哈哈. 有需要书籍<Spring Boot+Vue全栈开发实战>PDF版的同学,可以在公众号:Java知己,发送:全栈开发实战,获取该书籍. 除了书呢?当然就是开源项目了,今天松哥整理了几个优质