uboot是一个裸机程序,是一个bootloader,用于启动Linux 或者其他其他系统。

        uboot主要工作是初始化DDR,因为Linux是运行在DDR里的,Linux镜像(Zimage /ulmage)+设备树(.dtb)存放在SD、EMMC、NAND、SPI Flash等外置存储器中。Uboot需要将Linux镜像从外置Flash拷贝到DDR中,linux系统才能运行。

一、uboot编译、下载 体验

        先不做移植,体验下uboot的编译和下载。

1.1 进入ubuntu系统

        解压提供的压缩文件tar -v -vxjf uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2

1.2 清理工程

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

1.3 配置工程

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

1.4 编译

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

        可通过创建shell 脚本完成上面的操作。

给shell脚本权限:chmod 777 shell.sh

执行shell脚本 :./shell.sh

1.5 烧录bin文件到sd卡

1.6 uboot启动

使用MobaXterm_Personal_20.2软件  打开调试信息。

 二、uboot命令

 2.1 查询命令

        2.1.1查看板子信息 bdinfo

2.1.2  输出环境变量信息 printenv

2.1.3 查看uboot版本号version

2.2 环境变量操作命令

        环境变量environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。修改.新建.删除环境变量 setenv、保存环境变量saveenv。

2.2.1 修改已经存在的环境变量值

        setenv修改开机延时为5s,然后保存saveenv,这样重启才可以生效。

 修改字符串类型要使用<单引号’   ’>将字符串括起来。

2.2.2 新建环境变量

        新建环境变量author 值为 : ZXL

 2.2.3 删除环境变量

        将环境变量的值设置为空值 即可删除。删除境变量author 

 2.3 内存操作命令

2.3.1 显示指定内存值 md

md.b 0x80000000 14: 显示0x80000000地址开始的20(0x14)个字节(b)数字都是16进制形式

 

2.3.2 修改指定内存值 nm   

        格式为:   nm [.b, .w, .l] address,

        例如: 修改.b格式,0x80000000 地址的数据为 0x12

         输入完成以后按下回车,然后再输入‘q’即可退修改。

 2.3.3 连续修改指定内存值 mm

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

2.3.4 指定的数据填充一段内存 mw

 使用.b格式将0x80000000起始的0x10个内存块填充成0xaa

2.3.5数据拷贝命令cp

                

        source 为源地址,target 为目的地址,count为拷贝的长度。

        例如以.b格式将0x80000000地址处的0x10个内存块,拷贝到0x80000020位置。

 

 2.3.6 比较命令cmp

        用于比较两段内存的数据是否相等

        

例如 查看0x80000020 和0x80000000 两端地址的前0x10个字节是否想到,因为刚才刚做了拷贝此时应该是相等的。

 

比较查看0x80000030 和0x80000000,结果应该不相等。

 2.4 网络操作命令

        使用网络前,需要设置本机、和服务器的的一些网络参数。

 

 

2.4.1 ping命令

ping 172.18.1.100

2.4.2 dhcp命令

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

2.3.3 nfs命令

        nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源,我们也可以通过nfs功能将系统镜像文件写入到电路板中。

  • 首先需要安装nfs服务: sudo apt-get install nfs-kernel-server rpcbind
  • 创建nfs路径

       

  • 修改nfs配置文件   sudo vi /etc/exports

  • 重启 NFS 服务  sudo /etc/init.d/nfs-kernel-server restart

然后nfs就可以使用了,格式如下:

        nfs 80800000 172.18.1.100:/home/zxl/linux/nfs/zImage

80800000” 表 示 zImage 保存在电路板上的地址 ,“172.18.1.100:/home/zxl/linux/nfs/zImage”表示zImage文件在172.18.1.100这个主机中路径为/home/zxl/linux/nfs/zImage。

 2.3.4 tftp命令

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

  • 需要安装 tftp-hpa 和 tftpd-hpa    

                        sudo apt-get install tftp-hpa tftpd-hpa 

                         udo apt-get install xinetd

  • 创建tftp的文件路径
  • 修改配置文件
  1.                 cd /etc/
  2.                 cd xinetd.d/
  3.                 sudo vi tftp
    1. 修改这个文件的内容如下啊:
    2.  

  • sudo service tftpd-hpa start    启动ftp     

         cd /etc/default/

        sudo vi tftpd-hpa

修改内容如下:

  •  重启tftp服务器   sudo service tftpd-hpa restart

 下载文件到80800000地址上

Logo

更多推荐