▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
分享一个大神朋友的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程。写得特别用心喔~
→→→→→→大神朋友简介:从事十几年人工智能研究,麻省理工博士学位,目前在百度继续进行着人工智能的研究。。。
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。

U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

一、uboot的最终目的

在说uboot之前,先看一下PC机是怎么启动的?

  • pc上电,bios(引导操作系统)、识别C盘、运行应用程序。
  • 同样的在嵌入系统里面,启动过程:一上电的时候,uboot(引导Linux内核)、挂接根文件系统、运行应用程序。

小结:uboot的最终的目的->启动内核

二、怎么让嵌入式系统使用uboot

① 先来介绍一下补丁:

  • 什么是补丁?
所谓的补丁就是我们在原码包上做了什么修改,我们将这些修改单独列出来放到一个文件,然后发布的时候,把补丁文件给别人家即可。
  • 怎么打补丁?
 tar xjf u-boot-1.1.6.tar.bz2cd u-boot-1.1.6/patch -p1 < ../u-boot-1.1.6_jz2440.patch

-p1 是忽略配置文件中的第一个参数,即,u-boot-1.1.6/和u-boot-1.1.6_jz2440/

  • 补丁文件中的 ---表示原来的代码,+++表示修改后的代码;比如:

② 打完补丁之后,要想uboot支持哪些单板,需要配置。通过make 100ask24x0_config 来配置我们此款JZ2440V3单板,然后再make编译uboot。

总结一下:

tar xjf u-boot-1.1.6.tar.bz2 //解压缩
patch -p1 < ../u-boot-1.1.6_jz2440.patch //打补丁
make 100ask24x0_config //配置
make //编译

③ 编译完成以后,会生成一个u-boot.bin的文件,如图:

然后通过dnw或者eop将这个bin文件烧写到开发板上面,烧写完成以后在串口上可以看到它的启动信息;

三、uboot命令使用

在嵌入式操作系统中,bootloader有很多种,我们这里使用的是uboot;

① 输入help或?可以查看uboot有哪些命令;

  • 如果想查看具体哪个命令的用法,可以输入“? 命令名”即可。
  • 如何查看uboot有哪些环境变量?

使用print 命令

② 怎么设置环境变量?

使用set 命令

总结一下:

?/help + 命令 //查询命令的用法
print        //查看当前环境变量
set          //修改环境变量
save         //保存环境变量
reset        //重启uboot
boot         //引导内核

四、uboot功能介绍

① 对于PC机来说windows操作系统存在于硬盘上面,BIOS从硬盘上读出windows操作系统,然后放到DDR(SDRAM的一种 DDR SDRAM);

② 而对于嵌入linux来说,一般从flash中读取出内核,然后放到SDRAM中去。

可以看出,uboot要具备的基本功能:能够读取flash、写入SDRAM之前要初始化SDRAM、启动内核。

在开发阶段,我们想让它增加更多的功能,比如说加入写flash的功能,因为在开发中(为了开发方便),内核也是通过uboot利用网络或USB下载把内核烧写到开发板中去的。

总结一下uboot的功能:

五、uboot的源码结构:

目录 特性 解释说明
board 开发板相关 对应不同配置的(即使CPU相同),smdk2410、sbc2410x
cpu 平台相关 对应不同的CPU,arm920t、arm925t、i386等;在它们的子目录下仍可以细分,比如arm920t就有at91rm9200、s3c24x0
lib_i386 类似 平台相关 某一架构下通用的文件
include 通用的函数 头文件和开发板配置文件,开发板的配置文件都放在include/configs目录下,U-boot没有make menuconfig类似的菜单来进行可视化配置,需要手动地修改配置文件中的宏定义
lib_generic 通用的函数 通用的库函数,比如printf等
common 通用的函数 通用的函数,多是对下一层驱动程序的进一步封装
disk 通用的设备驱动程序 硬盘接口程序
drivers 通用的设备驱动程序 各类具体设备的驱动程序,基本上可以通用,它们通过宏从外面引入平台/开发板相关的函数
dtt 通用的设备驱动程序 数字温度测量器或者传感器的驱动
fs 通用的设备驱动程序 文件系统
nand_spl 通用的设备驱动程序 U-Boot一半从ROM、NOR Flash等设备启动,现在开始支持从NAND Flash启动,但是支持的CPU种类还不多
net 通用的设备驱动程序 各种网络协议
post 通用的设备驱动程序 上电自检程序
rtc 通用的设备驱动程序 实时时钟的驱动
doc 文档 开发、使用文档
examples 示例程序 一些测试程序,可以使用U-Boot下载后运行
tools 工具 制作S-Record、U-Boot格式映象的工具,比如mkimage

U-boot中各目录间也是有层次结构的,虽然这种分法不是绝对的,但是在移植过程中可以提供一些指导意义

这些源码是怎么组织起来构成一个uboot的,最简单的方法就是分析它的makefile文件

(一) u-boot 基本介绍相关推荐

  1. Linux中 /boot 目录介绍 【转载】

    Linux中 /boot 目录介绍 转自:点击打开链接 一./boot/目录中的文件和目录 Linux系统在本地启动时,目录/boot/非常重要,其中的文件和目录有: (1)系统Kernel的配置文件 ...

  2. 服务监控 Spring Boot Actuator 介绍

    服务监控 Spring Boot Actuator 介绍 1. 概述 在本文中,我们将介绍Spring Boot Actuator.首先介绍一些Actuator的基础知识,然后详细讨论Spring B ...

  3. STM32三种BOOT模式介绍

    一.三种BOOT模式介绍 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存.用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启 ...

  4. Spring Boot开发介绍

    Spring Boot开发介绍 Spring Boot介绍 安装Spring Boot插件 创建Spring Boot项目 Idea 创建Spring Boot项目失败 解决方法1-更换为aliyun ...

  5. WINDOWS PE制作 - 主引导记录(Master Boot Record)介绍

    WINDOWS PE制作之主引导记录(Master Boot Record)介绍 本章内容的主要部分百度百科相关条目重新编辑而来,原文网址:https://wapbaike.baidu.com/ite ...

  6. Spring Boot Starters介绍

    文章目录 Web Start Test Starter Data JPA Starter Mail Starter 结论 对于任何一个复杂项目来说,依赖关系都是一个非常需要注意和消息的方面,虽然重要, ...

  7. Spring Boot 框架介绍和使用

    本文参考自Spring Boot文档. Spring Boot 简介 Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西.因此就有了Spring Boot框架,它的作用很简单 ...

  8. Spring Boot文件目录介绍

    创建Spring Boot项目后,会产生一个工程目录,该工程目录存放了工程项目的各种文件,对于Spring Boot开发人员来说,了解该工程目录非常必要. • /src/main/java:目录下放置 ...

  9. Spring Boot项目介绍(值得学习,超详细)

    目录 1 Spring Boot介绍 2 创建Spring Boot项目 2.1 第一种方式, 使用Spring提供的初始化器, 就是向导创建SpringBoot应用 使用国内的地址 3 注解的使用 ...

  10. spring boot入门 -- 介绍和第一个例子

    "越来越多的企业选择使用spring boot 开发系统,spring boot牛在什么地方?难不难学?心动不如行动,让我们一起开始学习吧!" 使用Spring boot ,可以轻 ...

最新文章

  1. 【每日一算法】相交链表
  2. Flex警告:framework.swc”具有默认样式并且在 library-path 中,表...
  3. 前端面试题(html篇)
  4. 「洛谷P1343」地震逃生 解题报告
  5. scrapy需要的xpath知识点
  6. fragment怎么获得上下文环境_Flask 源码剖析 (三):Flask 的上下文机制 (上)
  7. codeblocks快速注释多行
  8. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)的配置
  9. linux学习笔记(13)终端清屏
  10. 单片机技术与c语言编程教学大纲,《单片机原理及应用》课程教学大纲
  11. java8进制转换_Java进制转换方法大全_十进制,八进制,二进制,十六进制转换...
  12. java ssh详解_JAVA SSH 框架介绍
  13. 关于《上海市城镇生育保险办法》的问答
  14. Python爬虫实战,requests模块,Python实现IMDB电影top数据可视化
  15. Vue多个元素的过渡
  16. 2012年的Android之旅:梦想、学习、坚持、自信、淡定
  17. hbase报错: ERROR: Can‘t get master address from ZooKeeper; znode data == null
  18. css表格随内容变化,css 使表格随着内容自动适应宽度
  19. java迭代法求圆周率用梯形_常用的圆周率计算公式
  20. Latex的安装与使用

热门文章

  1. 斯坦福大学-自然语言处理入门 笔记 第十四课 CGSs和PCFGs
  2. 数据库勒索病毒故障处理
  3. 制作esp32-cam拍照上传,微信小程序照片显示的监控小车
  4. TusharePro快速入门
  5. 重新安装macOS 一直报no bag entry
  6. uniapp 使用pdf.js 加载本地pdf文件报错问题
  7. 自然语言处理之中文分词逆向最大匹配算法(RMM算法)
  8. EFR32获取Zigbee Light Link Key和NWK Key的三种方法
  9. HCIA-5G网络架构及关键技术
  10. 免费申请 HTTPS 证书,开启全站 HTTPS