Exynos4412 Uboot 的使用与烧写

Uboot版本:u-boot-2013.01

开发板:Exynos4412

 

      本文主要是熟悉U-boot 的使用以及如何将Uboot 烧入Exynos4412。当然在这之前首先必须保证开发板上已经有了U-boot。如果没有,请先烧入一个已经编译好的Uboot.bin,可以利用JTAG或DNW。

一、环境搭建

        为了方便开发,这里利用网络传输数据,主要用到 tftp 与 nfs。tftp用于数据传输,nfs用于挂载根文件系统。

1、tftp模式设置

      具体配置可以移步http://blog.csdn.net/zqixiao_09/article/details/50319877,这里使用tftp有两种模式:a、交互模式(手动)b、自动模式。

a -- 交互模式

       在Uboot界面输入以下命令:

       tftp 41000000 uImage  // 将tftp主机端uImage 拷贝到4412内存地址41000000处

       tftp 42000000 exynos4412-fs4412.dtb

       bootm 41000000 - 420000000

b-- 自动模式:

      设置bootcmd,这样Uboot 加载成功后,会执行bootcmd命令,自动下载文件,并引导内核

      setenv bootcmd tftp 41000000 uImage \; tftp 42000000     exynos4412-fs4412.dtb\; bootm 41000000 - 42000000

      saveenv

bootcmd每条命令间要用到 '\' ,用于多条命令的输入。

 

2、通过NFS挂载根文件系统

1)配置nfs

     a -- 下载

             sudo apt-get install nfs-kernel-server

     b -- 配置

            sudo vi /etc/exports

            在最后一行添加你的nfs共享目录

            /nfsboot *(rw,sync,no_subtree_check)     note:保证此目录已存在(权限:777)

     c -- 重启nfs服务

            sudo  /etc/init.d/nfs-kernel-server restart
  
     d -- 测试 

            第一种方法)showmount -e

            第二种方法)自己挂载

                                   mount -t nfs 127.0.0.1:/nfsboot  /mnt/xxx

具体配置可以移步http://blog.csdn.net/zqixiao_09/article/details/50337933


2) 拷贝解压已制作好的根文件系统

      cp xxx/rootfs.tar.xz  /nfsboot

      tar xvf rootfs.tar.xz


3) 设置开发板bootargs

     setenv bootargs root=/dev/nfs nfsroot=虚拟机ip:/nfsboot/rootfs rw console=ttySAC2,115200 ip=开发板ip  init=/linuxrc

     saveenv

注:root=/dev/nfs 表示根文件系统在/dev/nfs 上;nfsroot=虚拟机ip:/nfsboot/rootfs 为虚拟机文件系统所在位置;init=/linuxrc 为开机后启动的第一个进程;


4) 测试

     写程序在开发板运行

 

二、常用Uboot命令详解

1、环境设置命令

a -- 查看当前环境变量

      printenv

b -- 增加环境变量

      setenv

例: set ipaddr 192.168.1.1 ====>ipaddr=192.168.1.1

c -- 修改环境变量

      setenv  变量名  值

d -- 删除环境变量

      setenv 变量名

e--常用环境变量作用

   ipaddr:设置开发平台ip
   serverip:tftp服务器ip
   netmask:子网掩码
   gatewayip:网关
   bootcmd:启动内核变量(自动启动时执行的命令)
   bootargs:传输给内核的参数(到内核阶段,原环境变量已经不起作用)
   bootdelay:设置交互延时

 

2、数据传输命令

a -- 网络

       tftp 内存地址 文件名 (利用TFTP协议传输文件)

b -- 串口 

       loadb  内存地址 (利用Kermit 传输协议)

 

3、存储器访问命令

a -- 内存:

      md 显示内存内容

      格式:md 41000000

      mm 修改内存值(地址自动加一)

      格式:mm  41000000    
            以 . 结束
           mm.w (2B)  mm.l(4B,默认)

       mw 用指定的数据填充内存

       格式:mw 41000000 12345678 10

       向0x41000000起始地址写0x10次 0x12345678

 

b-- 外存:

1) -- nand:

    nand write 20008000 0 40000 
    nand read 20008000 0 40000
    nand erase 0 40000

2) -- emmc:

    movi  write kernel 41000000

    将内存41000000 数据写入到emmc的kernel分区

    movi  read kernel 41000000

    将emmc的kernel分区中的内容载入到内存41000000地址

注:Exynos4412 用的外存都是emmc,没有nand flash、nor flash.

 

4、运行

a -- bootm 

       bootm指令是专门用于启动在SDRAM中用U-boot 的mkimage工具处理过的内存映像(将pc指针指向内存地址,还有其它操作)

b -- go

       将pc指针指向内存地址

c -- boot

       重启开发板

 

5、其它

 run:运行指定环境变量的内容

 help:查看所有命令

 

三、下载与烧写

1、产品模式:

产品模式指Uboot、Kernel、rootfs已经移植制作成功,可以烧入外存中直接使用.

下面主要是将uboot,kernel,dtb,rootfs烧写到emmc的方法,这里将uboot,kernel,dtb,rootfs加载到内存中的方法都是用的tftp,当然还有其他方法,nfs 、SD卡都可以

1) -- uboot 烧写:

      a) -- emmc中已经存在uboot

         通过网络 :

                         tftp 41000000 u-bootxxx.bin
                         movi write u 41000000

         重启生效。

      b) -- emmc为空

         通过sd卡烧录:

               一:开关拔到1000 (sd卡启动)
                       输入命令: sdfuse flashall
               二:开关拔回到0110 (emmc启动)

        重启生效

 

 2)-- kernel及dtb烧写

         通过网络 tftp 41000000  uImage
                         movi write k 41000000

         通过网络 tftp 41000000  exynos4412-fs4412.dtb
                         movi write d 41000000

 

3) -- ramdisk烧写(rootfs的镜像)

        通过网络 tftp 41000000 ramdisk.img
                        movi write r 41000000 300000

 

4) -- 设置启动参数bootcmd

          setenv bootcmd movi read k 41000000\; movi read d 42000000\;movi read r 43000000 300000\; bootm 41000000 43000000 42000000  

          NOTE:bootm中间的数据如是'-',说明从nfs挂载[参考bootargs],如是内存地址,则从地址处加载文件系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进入保护模式(三)内存的分页

2019独角兽企业重金招聘Python工程师标准>>> 一、分页 先入为主理解的分页和系统中内存内应的分页 1.弄过数据库数据查找展示,有个数据分页展示的概念,这个的目的是为了速度、和展示效果上的提升 2.内存的分页又是怎么回事哪? …

Python2 与 Python3 的常见区别

Python2 与 Python3 的常见区别

关于gcc、glibc和binutils模块之间的关系

一、关于gcc、glibc和binutils模块之间的关系 1、gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc.so等。 2、bi…

C#实现简单的 Ping 的功能,用于测试网络是否已经联通

1 /// <summary>2 /// 是否能 Ping 通指定的主机3 /// </summary>4 /// <param name"ip">ip 地址或主机名或域名</param>5 /// <returns>true 通&#xff0c;false 不通</returns>6 …

Binutils工具集 解析

对于嵌入式系统开发&#xff0c;掌握相应的工具至关重要&#xff0c;它能使我们解决问题的效率大大提高。目前&#xff0c;可以说嵌入式系统的开发工具是GNU的天下&#xff0c;因为来自GNU的GCC编译器支持大量的目标处理器。除了GCC&#xff0c;还有一个非常重要的、同样来自于…

Log4net核心组成

一、Logger(日志)1&#xff0e; 记录日志的分类&#xff1a;Log4net能够以多种方式输出日志。支持的日志输出常用的主要媒介有数据库&#xff08;包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite&#xff0c;控制台&#xff0c;文件&#xff0c;事件日志(可以用事件查…

ARM 软中断指令SWI

前面我们学习ARM工作模式中&#xff0c;处理器模式切换可以通过软件控制进行切换&#xff0c;即修改CPSR模式位&#xff0c;但这是在特权模式下&#xff0c;当我们处于用户模式下&#xff0c;是没有权限实现模式转换的。若想实现模式切换&#xff0c;只能由另一种方法来实现&am…

iops 条带深度 队列深度 NCQ

iops 条带深度 队列深度 NCQIOPS 即I/O per second&#xff0c;即每秒进行读写&#xff08;I/O&#xff09;操作的次数&#xff0c;多用于数据库等场合&#xff0c;衡量随机访问的性能。并发IO的概念&#xff1a;并发IO&#xff0c;指多个IO可以同时被处理&#xff0c;比如IO1…

yum install 失败

https://blog.csdn.net/weixin_45621658/article/details/110734514 原因&#xff1a;centos6的默认源在2012年-12月左右被官方搞掉了 下列是错误详情 Bash [rootc8-20 ~]# yum makecache Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile YumRepo …

ARM 汇编复习题

一、选择题 1. ARM属于&#xff08;A&#xff09; [A] RISC架构  [B] CISC架构 2. ARM指令集是&#xff08;C &#xff09;位宽&#xff0c;Thumb指令集是&#xff08;B &#xff09;位宽的。 [A] 8位  [B] 16位 [C] 32位 [D] 64位 3. ARM指令集是&#xff…

ARM处理器工作模式

一、ARM体系的CPU有以下7种工作模式&#xff1a; 1、用户模式&#xff08;usr&#xff09;&#xff1a;正常的程序执行状态 2、快速中断模式&#xff08;fiq&#xff09;&#xff1a;用于支持高速数据传输或通道处理 3、中断模式&#xff08;irq&#xff09;&#xff1a;用于普…

sphinx

2019独角兽企业重金招聘Python工程师标准>>> ./configure --prefix/usr/local/sphinx --with-mysql/usr/local/mysql make && make install cd /usr/local/sphinx/etc cp sphinx.conf.dist sphinx.conf vim sphinx.conf mysql -u test < /usr/local/sphi…

Exynos4412裸机开发综合练习

下面是一个案例需求&#xff1a; 1、编写一段程序,该程序的主要功能是监控电路板上的电压值,若电压值超过当前的电压限制则通过蜂鸣器报警,通过按键解除报警; 2、其具体要求如下; a) 程序下载20s后,进入电压采集状态(使用RTC ALARM功能完成), 要求1s采集1次电路板电压值;(采用…

Exynos4412 裸机开发 —— IIC总线

前言&#xff1a; I2C(Inter-Integrated Circuit)总线(也称 IIC 或 I2C) 是有PHILIPS公司开发的两线式串行总线&#xff0c;用于连接微控制器及外围设备&#xff0c;是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式&#xff0c;具有接口线少、控制方式…

Exynos4412裸机开发 —— A/D转换器

一、Exynos4412 A/D转换器概述 1、简述 10位或12位CMOS再循环式模拟数字转换器&#xff0c;它具有10通道输入&#xff0c;并可将模拟量转换至10位或12位二进制数。5Mhz A/D 转换时钟时&#xff0c;最大1Msps的转换速度。A/D转换具备片上采样保持功能&#xff0c;同时也支持待机…

Exynos4412裸机开发 —— UART

一、Exynos4412 UART 的特性 Exynos4412 中UART&#xff0c;有4 个独立的通道&#xff0c;每个通道都可以工作于中断模式或DMA 模式&#xff0c;即 UART 可以发出中断或 DMA 请求以便在UART 、CPU 间传输数据。UART 由波特率发生器、发送器、接收器和控制逻辑组成。 使用系统时…

Exynos4412裸机开发 —— 看门狗定时器

一、看门狗定时器概述 看门狗&#xff08;WatchDog Timer) 定时器和PWM的定时功能目的不一样。它的特点是&#xff0c;需要不同的接收信号&#xff08;一些外置看门狗芯片&#xff09;或重新设置计数器&#xff0c;保持计数值不为0。一旦一些时间接收不到信号&#xff0c;或计数…

win10 WSL(1903)安装samba服务器实现文件共享

https://blog.csdn.net/fuyuande/article/details/90368576

Exynos4412裸机开发 —— RTC 实时时钟单元

RTC(Real-Time Clock) 实时时钟。RTC是集成电路&#xff0c;通常称为时钟芯片。在一个嵌入式系统中&#xff0c;通常采用RTC来提供可靠的系统时间&#xff0c;包括时分秒和年月日等&#xff0c;而且要求在系统处于关机状态下它也能正常工作&#xff08;通常采用后备电池供电&am…

配置samba服务器

https://www.cnblogs.com/luosongchao/p/3750546.html