0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

tiny4412编译与移植U-Boot

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-08-31 08:59 次阅读

tiny4412编译与移植U-Boot

1.uboot简介

U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。

U-Boot本质是一个裸机程序,是一种普遍用于嵌入式系统中的开源的Bootloader,作用是用来引导操作系统,以及给开发人员提供测试调试工具。主要负责基本硬件初始化,导启动内核启动。

2.选择U-Boot理由

① 开放源码;
② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android
③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS;
④ 较高的可靠性和稳定性;
⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;
⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
⑦ 较为丰富的开发调试文档与强大的网络技术支持;

3.U-Boot主要功能

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

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

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

设备驱动串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;

上电自检功能SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;

4.U-Boot工作模式

uboot分为启动加载模式和下载模式。启动模式即为正常工作模式,嵌入式产品发布时必须工作在启动模式,此时uboot可以完成操作系统引导,可以将操作系统从flash中拷贝到sram中运行,整个过程自动完成;下载模式即可完成系统更新,可以通过各种通讯方式将PC端数据拷贝到嵌入式产品中。

5.U-Boot启动流程

uboot多数BootLoader都分为stage1和stage2两大部分,U-boot也不例外。stage1主要存放依赖于CPU架构代码,通常是汇编程序。stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。

  • stage1作用

stage1代码通过存放在start.S中,和CPU架构相关,例如tiny4412的.S文件存放路径:uboot_tiny4412-sdk1506\arch\arm\cpu\armv7。

pYYBAGMOIoqAWweoAAFTzdNj8LY073.png#pic_center

stage1汇编代码实现功能为:

1.定义程序入口,一般入口存放在rom的0x0位置。
2.设置异常向量,初始化内存控制器
3.拷贝rom中的程序到ram中,初始化堆栈。
4.将指针指向到ram中执行。

stage2作用

stage2存放的为C语言代码,这也是整个uboot的主程序。该代码注意实现功能为:

1.完成基本硬件初始化,如初始化flash;
2.初始化系统内存分配函数。
3.如果目标系统拥有 nand 设备,则初始化 nand 设备。
4.如果目标系统有显示设备,则初始化该类设备。
5.初始化相关网络设备,填写 ip地址等。
6.进入命令循环(即整个 boot 的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

poYBAGMOIouADhqSAAKDrRuD-iI902.png#pic_center

  tiny4412 从SD卡启动,数据在SD卡中存储格式:
  tiny4412从SD卡启动系统,数据存放是从第一个扇区开始。

pYYBAGMOIouAVB6FAACzR0PdcWM111.png#pic_centerpoYBAGMOIoyAXa7oAAGWhxo-BOU978.png#pic_center


1~16扇区存放bl1.bin文件,由三星提供。大小为固定8KB。
17~49扇区存放bl2.bin文件,该扇区用来存放uboot的前14KB代码。
49~705扇区存放完整uboot文件。
705~1025扇区存放tzsw.bin签名文件。
从1025扇区开始存放内核镜像文件,连续写12288个扇区。
再往后则是根文件系统rootfs

  • 系统启动流程

在开发板上电时,首先运行的是Exynos本身自带的64KB的flash中的程序,读取签名文件,加载uboot前14kb代码到Exynos本身的256KB的SRAM中运行,实现基本硬件初始化(如初始化外扩内存),接着将完整Uboot拷贝到外扩内存中,将PC指针指向外扩内存。完成flash初始化、网卡初始化,读取内核、加载根文件系统,引导操作系统启动,最终uboot结束本次工作,将CPU使用权交接操作系统,至此,系统启动成功。

6.U-Boot移植与烧写

PC端系统:ubuntu18.04
交叉编译器:arm-linux-gcc
#解压uboot源码
[wbyq@wbyq src_pack]$ tar xvf /mnt/hgfs/ubuntu/software_pack/uboot_tiny4412-sdk1506.tar
[wbyq@wbyq uboot_tiny4412-sdk1506]$ make distclean
[wbyq@wbyq uboot_tiny4412-sdk1506]$ make clean #清空配置
[wbyq@wbyq uboot_tiny4412-sdk1506]$ make tiny4412_config #配置开发板
Configuring for tiny4412 board...
[wbyq@wbyq uboot_tiny4412-sdk1506]$ make -j8 #编译源码
pYYBAGMOIo2AXpppAAOORkA_tKQ451.png#pic_center

6.1 ubunut编译uboot报错

报错:libz.so.1: cannot open shared object file: No such file or directory
解决办法:sudo apt-get install lib32ncurses5 sudo apt-get install lib32z1

6.2 make menuconfig报错

错误1:make menuconfig’ requires the ncurses libraries。缺少ncurses库。
解决办法:sudo apt-get install libncurses5-dev
错误2:

poYBAGMOIo2ABVfuAAE_hMncDjM489.png#pic_center

  将窗口放大即可。

6.3 烧写uboot到SD卡

[wbyq@wbyq uboot_tiny4412-sdk1506]$ cd sd_fuse/ 
[wbyq@wbyq sd_fuse]$ make  //编译生成mkbl2
[wbyq@wbyq sd_fuse]$ cd tiny4412/  
//插上SD卡,烧写U-boot
[xsw@xsw tiny4412]$ sudo ./sd_fusing.sh /dev/sdb 
pYYBAGMOIo6ANymFAAFPGX-Rtj8511.png#pic_center

6.4 开发板运行uboot

  将SD卡插到开发板上,选择从SD卡启动,插上串口线。

poYBAGMOIo6ANjPzAAFcUOKYimk326.png#pic_center


审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 移植
    +关注

    关注

    1

    文章

    376

    浏览量

    28089
  • u-boot
    +关注

    关注

    0

    文章

    120

    浏览量

    38171
  • 编译
    +关注

    关注

    0

    文章

    647

    浏览量

    32759
收藏 人收藏

    评论

    相关推荐

    U-Boot介绍

    移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核, bootloader有很多,常用的就是 U-Boot
    的头像 发表于 10-08 10:50 3865次阅读

    U-boot的基本介绍

    从本文开始,将陆续推送“手把手教你移植U-boot”系列文章,目标是由浅入深地讲解U-boot的工作流程、原理、配置方法和移植方法,手把手教你完成U
    发表于 07-14 16:52 2692次阅读
    <b class='flag-5'>U-boot</b>的基本介绍

    u-boot的Makefile分析

    u-boot的Makefile分析 U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译
    发表于 05-17 09:16 2051次阅读

    嵌入式U-BOOT的启动流程及移植

    S3C44B0开发板上的移植方法和步骤。 u-boot是一个功能强大的bootloader开发软件,适用的CPU平台及
    发表于 02-25 16:00 59次下载

    exynos4412-uboot移植笔记

    针对迅为4412开发板进行u-boot移植全过程
    发表于 05-17 09:49 15次下载

    Mini2440之U-boot使用及移植详细手册

    Mini2440之U-boot使用及移植详细手册
    发表于 10-30 08:31 44次下载
    Mini2440之<b class='flag-5'>U-boot</b>使用及<b class='flag-5'>移植</b>详细手册

    S3C6410的u-boot分析与移植

    S3C6410的u-boot分析与移植
    发表于 10-31 14:44 28次下载
    S3C6410的<b class='flag-5'>u-boot</b>分析与<b class='flag-5'>移植</b>

    如何进行U-BOOT移植

    本文档的主要内容详细介绍的是如何进行U-BOOT移植。说先在把U-BOOT- 1.1.6复制到SMB共享文件里面,然后到虚拟机里面解压他,执行命令:tar xjvf U-BOOT-1
    发表于 06-14 17:35 6次下载
    如何进行<b class='flag-5'>U-BOOT</b>的<b class='flag-5'>移植</b>

    友善之臂Tiny4412核心板介绍

    Tiny4412是一款高性能的四核Cortex-A9核心板,由广州友善之臂设计、生产和发行销售。
    的头像 发表于 11-05 17:40 1.2w次阅读
    友善之臂<b class='flag-5'>Tiny4412</b>核心板介绍

    基于nanoPC-T3的U-Boot移植过程梳理

      导读:前文对U-Boot架构设计做了分析,本文来梳理一下U-Boot在具体板子上的移植工作,主要记录整体思路、要点,以触类旁通而记之。
    的头像 发表于 12-14 23:14 810次阅读

    剖析基于nanoPC-T3的U-Boot移植过程

      导读:前文对U-Boot架构设计做了分析,本文来梳理一下U-Boot在具体板子上的移植工作,主要记录整体思路、要点,以触类旁通而记之。
    发表于 01-26 17:20 3次下载
    剖析基于nanoPC-T3的<b class='flag-5'>U-Boot</b><b class='flag-5'>移植</b>过程

    Linux U-Boot开发指南

    介绍 U-Boot编译打包、基本配置、常用命令的使用、基本调试方法等, 为 U-BOOT移植及应用开发提供了基础。
    的头像 发表于 03-06 10:28 1234次阅读
    Linux <b class='flag-5'>U-Boot</b>开发指南

    U-boot的QSPI驱动移植方法及验证方法

    本文主要讲述了U-boot的QSPI驱动移植方法及验证方法。在产品调试阶段,U-boot的driver子系统包含了丰富的外设驱动,方便外设功能验证与调试。
    的头像 发表于 04-14 10:21 2786次阅读
    <b class='flag-5'>U-boot</b>的QSPI驱动<b class='flag-5'>移植</b>方法及验证方法

    U-boot的DPU驱动移植方法

    本文以ARM Mali系列显示处理器驱动为例,讲述了U-boot的DPU驱动移植方法。
    的头像 发表于 04-14 10:25 1281次阅读
    <b class='flag-5'>U-boot</b>的DPU驱动<b class='flag-5'>移植</b>方法

    SS524V100 单板移植和烧写U-boot(一)

     U-boot SS524V100 DMEB板上的外围芯片包括DDR SDRAM、eMMC、SPI Nor Flash和SPINAND Flash。 1.编译 U-boot 当所有移植
    的头像 发表于 08-22 10:31 666次阅读