uboot(基于IMX6ull)

发布者:平凡梦想最新更新时间:2025-02-27 来源: cnblogs关键字:uboot 手机看文章 扫描二维码
随时随地手机看文章

一、U-Boot初次编译

1、首先在 Ubuntu 中安装 ncurses 库,否则编译会报错,安装命令如下:sudo apt-get install libncurses5-dev

2、解压官方Uboot:tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2

3、编写编译脚本文件:xxx.sh


#!/bin/bash

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- (加空格)

mx6ull_14x14_ddr512_emmc_defconfig

make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12


mx6ull_14x14_ddr512_emmc_defconfig是配置文件,在Uboot中,通过“make xxx_defconfig”来配置 uboot,xxx_defconfig 就是不同板子的配置文件,这些配置文件都在 uboot/configs 目录中。-j12用于设置主机使用多线程编译,VMware里面给虚拟机分配了4个核,那么就使用-j4,这样4个核都会一起编译。

 

4、运行脚本文件编译uboot:./xxx.sh

5、Uboot的烧写:从SD卡启动

 

chmod 777 imxdownload  //给予 imxdownload 可执行权限,一次即可

./imxdownload u-boot.bin /dev/sdb


二、U-Boot命令使用

1、进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令。

 

 2、信息查询命令:bdinfo、printenv、version

bdinfo:查看板子信息

 

printenv:打印环境变量信息

 

 version:  查看Uboot版本号

 

 3、环境变量操作命令

  a、 修改环境变量setenv

    ①、setenv+环境变量+值  ->  setenv bootdelay 5

    ②、对带有空格的环境变量,比如:bootcmd,bootargs等,这时候环境变量值要用单引号括起来。

      ->  setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

  b、新建环境变量setenv用法与修改环境变量一样  ->  setenv author 123

  c、删除环境变量setenv,给环境变量赋值为空即删除

  d、保存环境变量saveenv,每次修改环境变量都要用saveenv保存,否则再次重启时会被清除。

4、内存操作命令

 

内存操作命令就是用于直接对 DRAM 进行读写操作的,常用的内存操作命令有 md、nm、
mm、mw、cp 和 cmp。

 

  a、md命令用于显示内存值:格式md[.b, .w, .l] address [# of objects]

    命令中的[.b .w .l]对应 byte、word 和 long,也就是分别以 1 个字节、2 个字节、4 个字节来显示内存值。address 就是要查看的内存起始地址,[# of objects]表示要查看的数据长度,这个数据长度单位不是字节,而是跟你所选择的显示格式有关。uboot 命令中的数字都是十六进制的!不是十进制的!    



  b、nm命令用于修改指定地址的内存值:格式nm [.b, .w, .l] address

    

 

   c、mm 命令也是修改指定地址内存值的,使用 mm 修改内存值的时候地址会自增,而使用命令 nm 的话地址不会自增。

    格式:mm [.b, .w, .l] address

    

 

 

   d、mw命令用于使用一个指定的数据填充一段内存:格式mw [.b, .w, .l] address value [count]

 

    

 

 

   e、cp命令,数据拷贝,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 NorFlash 中的数据拷贝到 DRAM 中。

    格式:cp [.b, .w, .l] source target count

 

    

 

 

  f、cmp比较命令,用于比较两段内存的数据是否相等:格式cmp [.b, .w, .l] addr1 addr2 count

 

     

 

5、网络操作命令 

 

  ping、dhcp、nfs、tftpboot

首先需要配置相关的网络环境

setenv ipaddr 192.168.1.50

setenv ethaddr 00:04:9f:04:d2:35

setenv gatewayip 192.168.1.1

setenv netmask 255.255.255.0

setenv serverip 192.168.1.250

saveenv


  a、ping命令:ping+ip

  b、dhcp命令:从路由器获取 IP 地址,前提得开发连接到路由器上的,如果开发板是和电脑直连的,那么 dhcp 命令就会失效。

  c、nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源,比如我们将 linux 镜像和设备树文件放到 Ubuntu 中,然后在 uboot 中使用 nfs 命令将 Ubuntu 中的 linux 镜像和设备树下载到开发板的 DRAM 中。

  命令格式:nfs [loadAddress] [[hostIPaddr:]bootfilename]-> nfs 80800000192.168.1.112:/home/dht/linux/nfs/zImage

  loadAddress 是要保存的 DRAM 地址,[[hostIPaddr:]bootfilename]是要下载的文件地址。

  d、tftp命令:tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa。

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd


关键字:uboot 引用地址:uboot(基于IMX6ull)

上一篇:MfgTool系统烧写(imx6ull)
下一篇:Linux4.1.15内核移植-imx6ull

推荐阅读最新更新时间:2026-03-20 12:09

imx6ull uboot启动流程
首先,NXP提供的uboot经过编译最终烧写进存储介质中的是uboot.imx文件,这个imx后缀的文件不同于传统的比如S3C2440最终烧写的uboot.bin文件。 imx文件是在bin文件的基础上加上了一个头部,IMX6ULL芯片内部自带的BOOTROM程序会根据拨码开关的高低电平选择对应的启动介质,从中读取这个头部信息,然后对头部信息进行解析,头部中最重要的是一个叫DCD表的东西。 DCD表中包含了时钟寄存器的地址和寄存器的值,引脚复用寄存器地址和寄存器的值,DDR控制器的寄存器地址和寄存器的值。imx6ull内部的BOOTROM程序会根据DCD表的内容打开时钟,初始化外部DDR。因此NXP提供的uboot代码的汇
[单片机]
<font color='red'>imx6ull</font> <font color='red'>uboot</font>启动流程
Linux内核启动流程-迅为IMX6ULL开发板(一)
在前面的章节介绍了uboot和Linux内核的一些相关内容。在来看Linux内核的大致启动流程,Linux内核的启动流程要比uboot复杂的多,涉及到的内容也更多,因此在本章节大致简单的了解一下Linux内核的启动流程。有兴趣的用户可以参考其他书籍或资料进行深入了解。 嵌入式linux内核的启动全过程主要分为三个阶段。第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式、使能MMU、设置一级页表等,而第三阶段则主要为C代码,包括内核初始化的全部工作。下面分别进行简单介绍。 基于迅为-IMX6ULL开发板 30.1 Linux内核启动(一):Linux内核自解压过程 Linux内核有两种映像格式:一种是非压缩
[单片机]
迅为-imx6ull开发板之C语言实现LED例程
第九章我们使用汇编编写了 LED 灯的实验,在实际开发过程中大部分还是使用 C 语言,汇编只是用来完成 C 语言环境的初始化,本章我么就来实现用汇编完成 C 语言环境的初始化,然后用 C 语言实现 LED 的例程。 10.1 C 程序版LED例程简介 汇编完成 C 语言环境的初始化主要包括内存初始化,设置堆栈指针等等,当这些工作完成以后就可以跳转到 C 语言,执行 C 程序了,所以我们有两部分事情要做: 1.汇编文件,用来完成 C 语言的环境初始化 2.C 语言文件,主要实现我们的业务功能,比武我们本章的点亮 LED。 10.2 原理图分析 原理图分析 本章用到的硬件资源和第 6 章的一样,可以参照第六章的硬件原理分析。
[单片机]
迅为-<font color='red'>imx6ull</font>开发板之C语言实现LED例程
迅为IMX6ULL开发板Qt for Android搭建开发环境
搭建开发环境 1.安装 JDK,选择默认路径,一路点击下一步即可。 安装完成后进入相应的路径查看: 需要注意的问题: (1)建议使用我们提供的版本,如果自己下载可能会出现问题。 (2)建议大家安装到 C 盘下面,不要有中文路径。 2.安装 sdk 和 ndk,直接解压即可,解压的路径不要有中文路径。我这里是解压到了 JDK 的安装路径, 如果 C 盘空间不够可以解压到其他盘,但要记住位置,下面需要用到。 3.配置环境 打开 QTCreator,打开工具- 选项,选择如下图内容: 设置 JDK,SDK.NDK 的路径,如下图: 设置完成以后,我们点击 apply 和 ok 即可。
[单片机]
迅为<font color='red'>IMX6ULL</font>开发板Qt for Android搭建开发环境
迅为imx6ull开发板Linux I2C驱动实验-应用程序与I2C通信
本章内容对应视频讲解链接(在线观看): 程序源码在网盘资料“imx6ull 驱动程序配套资料21-Linux I2C 驱动实验”路径下。 我们可以先来体验一下,在 Linux 上操作 I2C 是多么的容易,我们可以先来看一下系统里面都有哪些 I2C的节点,这里以终结者 imx6ull 开发板为例。如下图所示: Linux 有一个非常重要的概念叫一切皆文件,那么我们能不能在应用层通过 open 这些节点来操作 I2C 来跟外设 I2C 通信的芯片进行一个数据交流呢?当然是可以的,我们来一起看一下,这里我们以 7 寸 RGB 屏幕上的触摸芯片 FT5X06 为例,迅为所有开发板都是支持迅为 7 寸 RGB 屏幕屏的,所有都是可以进
[单片机]
迅为<font color='red'>imx6ull</font>开发板Linux I2C驱动实验-应用程序与I2C通信
迅为IMX6ULL开发板Linux驱动初探-最简单的设备驱动-helloworld
经过前面的学习,我们了解了驱动开发的框架,本章节将带领大家实验操作,写最简单的驱动-helloworld。 Linux 设备驱动会以内核模块的形式出现,因为 linux 内核的整体架构就非常庞大,包含的组件也非常多,如果把所有的功能都编译到 linux 内核中会使得内核非常臃肿,为了解决这个问题,更方便地新增和删除功能,linux 提供了这样的机制,这种机制被称为模块。为了大家对模块有一个感性的认识,我们先来看一个最简单的驱动-helloworld。 驱动分为四个部分:  头文件  驱动模块的入口函数和出口函数  声明信息  功能实现 我们在 windows 上面新建一个 helloworld.c 文件,这里使用 sour
[单片机]
迅为<font color='red'>IMX6ULL</font>开发板Linux驱动初探-最简单的设备驱动-helloworld
迅为imx6ull开发板移植Debian文件系统
本教程将带领大家移植 Debian 文件系统到 i.MX6ULL 终结者开发板上。 1 安装 Qemu 和 Debootstrap 由于我们是在 Ubuntu 上构建的 debian 的文件系统,所以安装这俩个工具我们直接使用 apt-get 命令即可。命令如下: apt-get install binfmt-support qemu qemu-user-static debootstrap如下图所示: 2 抽取 Debain 文件系统 抽取文件系统我们使用的是 debootstrap 命令,我们执行以下命令即可从 debian 下载源中获取到文件系统: debootstrap --arch=armhf --foreign bu
[单片机]
迅为<font color='red'>imx6ull</font>开发板移植Debian文件系统
迅为imx6ull开发板Ubuntu文件系统测试
迅为IMX6ULL开发板 1 打包烧写 Ubuntu 我们在刚才的 ubuntu 目录下,使用命令“tar -vcjf rootfs.tar.bz2 ./*”打包文件系统。如下图所示: 我们使用命令“du -sh rootfs.tar.bz2”即可查看文件系统打包后的大小,如下图所示: 我们将“rootfs.tar.bz2”通过 ssh 软件传输到 mfg 烧写工具里,还需要烧写其它几个镜像文件,分别是uboot,设备树文件,内核文件,该文件系统所需内核镜像和 QT 系统相同,烧写配置和 QT 一样。如下图所示: 将开发板拨码切换成烧写模式,上电烧写,等待烧写完成。 2 Ubuntu 根文件系统测试 烧写启动之后如下图所示:
[单片机]
迅为<font color='red'>imx6ull</font>开发板Ubuntu文件系统测试
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved