博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式linux软件开发学习笔记--uboot介绍
阅读量:4106 次
发布时间:2019-05-25

本文共 748 字,大约阅读时间需要 2 分钟。

为什么要使用交叉编译工具?

1 嵌入式系统硬件资源限制:cpu主频、内存容量…

2 嵌入式系统MCU体系结构和指令集不同:ARM、MIPS、PowerPC…
3 提高开发效率

编译器的主要部件

1 分析器: 将源代码转变为汇编代码

2 汇编器: 将汇编代码转变成机器码
3 链接器: 将生成的机器码进行组装生成最后的可执行文件
4 标准C库 : 核心的C函数被打包成库,被链接成可执行文件的一部分

嵌入式软件的分层

这里写图片描述

嵌入式linux系统移植的要点

搭建交叉开发环境

bootloader的选择和移植
kernel的配置 编译 移植和调试
根文件系统的制作

为什么要移植uboot

每种不同的CPU体系结构都有不同的bootloader

bootloader还依赖具体的嵌入式板级设备的配置,比如板卡的硬件地址的分配,外设芯片的类型等…

uboot启动流程

stage1 (直接在对应nanflash这样的内存上运行):

  • 硬件设备初始化
  • 为加载bootloader的stage2准备ram空间
  • 拷贝bootloader的stage2到ram空间
  • 设置好堆栈(为C语言提供运行环境)
  • 跳转到stage2的入口点

    stage2:

  • 初始化本阶段所要用到的硬件设备

  • 将内核映像和根文件系统映像从flash拷贝到ram中
  • 调用内核
    这里写图片描述
    ## 内存分布:arm32##
    这里写图片描述

uboot目录结构

board:uboot移植主要修改的地方

common:实现uboot支持的命令行功能
include:头文件定义,顶层目录所包含的configs目录与开发板配置 寄存器地址定义相关
这里写图片描述
平台相关目录:board include…
平台五个目录:common net fs drivers
工具和文档:tools doc

你可能感兴趣的文章
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>
linux 内核—进程的地址空间(1)
查看>>
存储器管理(二)
查看>>
Android中的Binder(二)
查看>>
Framework之View的工作原理(一)
查看>>
深究Java中的RMI底层原理
查看>>
用idea创建一个maven web项目
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>
inet_ntoa、 inet_aton、inet_addr
查看>>
用模板写单链表
查看>>
用模板写单链表
查看>>
链表各类操作详解
查看>>
C++实现 简单 单链表
查看>>