Exynos4412 Uboot 的使用与烧写

发布者:独行于世最新更新时间:2021-12-07 来源: eefocus关键字: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],如是内存地址,则从地址处加载文件系统

关键字:Exynos4412  Uboot  烧写 引用地址:Exynos4412 Uboot 的使用与烧写

上一篇:iTOP-4412 开发板的 GPIO 是怎么操作的?
下一篇:第十二章、Tiny4412 U-BOOT移植十二 DDR3初始化顺序

推荐阅读最新更新时间:2024-11-11 10:28

飞思卡尔16位单片机(十五)—— 如何批量烧写芯片
我们在进行飞思卡尔单片机开发时,一般使用CodeWarrior软件和usbdm调试器进行。但是在实际生产过程中,采用这种方式烧写芯片效率比较低,而且很多情况下,程序的源码不希望对生产人员开放,本文就是为了这个目的,给大家讲解一下,如何进行芯片的批量烧写。 在进行批量烧写之前,我们默认大家已经安装了飞思卡尔单片机的开发环境,包括软件、调试器驱动。下面我们就进行批量烧写的实现。 首先我们先要找到工程的二进制文件,CodeWarrior中,二进制文件的扩展名为.s19,在工程的bin文件夹下,如下图所示。 将这个文件复制到英文路径下,这一步很关键,因为烧写软件不认中文路径。 接下来将下载器、单片机与计算机连接好。 然
[单片机]
飞思卡尔16位单片机(十五)—— 如何批量<font color='red'>烧写</font>芯片
C8051F烧写程序快速入门(Silicon IDE)
注:下载程序必须首先安装Silicon IDE以及Keil软件 ·Keil的安装   请到 Keil 官方网站: https://www.keil.com/c51/demo/eval/c51.htm 下载安装。 ·Silicon IDE的安装   请到 Silabs 官方网站: http://www.silabs.com/products/mcu/Pages/SoftwareDownloads.aspx?cm_sp= WebParts -_- MCUSupport -_- SWDownloads 下载安装。 1、在Silicon IDE中集成Keil软件( 点击查看 ) 2、如下图所示,点击“Options - Connect
[单片机]
C8051F<font color='red'>烧写</font>程序快速入门(Silicon IDE)
使用J-Link烧写一U-boot的烧写+裸板程序烧写(JZ2440-S3C2440)
一、使用J-Link 烧写NOR Flash 注意:J-Link 只支持NOR Flash,不支持NAND Flash。 1、安装J-link 驱动(在Windows 下) 在JZ2440 开发板JLINK 使用手册(JZ2440开发板JLINK使用手册jlink安装驱动程序目录)中,驱动名为:Setup_JLinkARM_V436e.exe。 双击即可进行安装,安装完成后,桌面上显示两个图标J-Flash和J-Link: 2、使用JLINK 烧写Uboot 到NOR Flash (1)开发板设置为NOR (将NAND/NOR 开关打到NOR一侧)启动,接好J-Link 后,最后启动上电。 (2)启动上电。打开J-Flas
[单片机]
使用J-Link<font color='red'>烧写</font>一U-boot的<font color='red'>烧写</font>+裸板程序<font color='red'>烧写</font>(JZ2440-S3C2440)
S3C2440移植uboot之支持DM9000
上一节S3C2440移植uboot之支持NANDFLASH操作移植了uboot 支持了NANDFLASH的操作,这一节修改uboot支持DM9000。 目录 通过Makefile把dm9000x编译进uboot 编译报错 DM9000_DATA 修改内存控制器时序 网卡的初始化的流程 支持DM9000C的初始化 编译测试 TFTP下载测试 通过Makefile把dm9000x编译进uboot cd drivers/net vi Makefile 需要在文件中添加以下宏 在smdk2440.h中修改文件支持DM9000 #if 0 #define CONFIG_CS8900 /* we have a CS8
[单片机]
S3C2440移植<font color='red'>uboot</font>之支持DM9000
使用SJF2410 和jtag烧写.bin的步骤及其存在的问题
1 、安装GIVEIO 驱动 (1) 复制光盘中的giveio.sys 到C:WINDOWSsystem32drivers 目录 (2) 打开 控制面板- 添加硬件- ,按照向导进行操作: Step1:开始安装 Step2:选择“是的,我已经连接了此硬件”,这时不必连接实际的JTAG 板。 Step3:选择“添加新的硬件设备”。 Step4:选择“安装我手动从列表选择的硬件”,如图。 Step5:不选任何选项,直接点“下一步”,如图 Step6:不选左右两侧列表中的任何选项,直接点“从磁盘安装”。 Step7:选择要安装的驱动文件 giveio.inf Step8:点“下一步” Step9:点“下一步” Step10:点“仍然继续
[单片机]
使用SJF2410 和jtag<font color='red'>烧写</font>.bin的步骤及其存在的问题
Exynos4412 Uboot 移植(五)—— Uboot 移植过程
Uboot 版本:u-boot-2013.01 开发板:FS_4412 平台(Exynos4412,可以根据自己的板子修改,只要是4412的过程都是一样的) 一、建立自己的平台 1、下载源码 我们可以在下面这个网站上下载最新的和以前任一版本的uboot ftp://ftp.denx.de/pub/u-boot/ 这里我们使用的是u-boot-2013.01 2、解压uboot 源码并进入目录 3、指定交叉编译工具链 a -- 打开根目录下的Makefile b -- 添加交叉编译工具链信息 4、指定产品CPU 我们产品用的CPU 是exynos 4412 查看u-boot 源
[单片机]
<font color='red'>Exynos4412</font> <font color='red'>Uboot</font> 移植(五)—— <font color='red'>Uboot</font> 移植过程
TQ2440之uboot---2.U_BOOT_CMD 分析
start_armboot { } main_loop { 1. 环境变量mtdparts, 调用mtdparts_init 2. 如果在启动过程中 无空格键按下则boot_zImage 有空格键按下则 run_command( menu ,0) 3. shell过程,读取用户端输入并执行相应的命令 { 从输入端获得命令,保存在全局变量comsole_buffer中 执行 run_command(); } } run_command { 1. 对\;进行解析,划分出一个个完整的命令 2. 然后对每一个完整的命令执行: { parse_line { line 是指整个的命令行字符串; 假设line = nboot 0x3200000
[单片机]
Uboot makefile学习记录
U-BOOT顶层makefile与linux的顶层mkefile不同,每个板有一个配置定义,如下,需要先配置后,才能make forlinx_nand_ram256_config : unconfig @$(MKCONFIG) smdk6410 arm s3c64xx smdk6410 samsung s3c6410 NAND ram256 其通过./mkconfig脚本生成include/config.mk文件,include/config.h和/board/samsung/smdk6410/config.mk,以及一些链接文件 include/config.mk文件内容如下: ARCH = arm CPU = s3
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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