flash的一般分区:

其它数据
环境变量
可执行程序。如bootloader

print(可缩写为:pri):打印查看uboot这个软件中集成的环境变量
setenv、saveenv:设置、保存环境变量

如:
设置环境变量:    setenv  abc 100
删除环境变量:    setenv  abc
保存环境变量到存储器:saveenv  abc 100
网络层的设置:               setenv ipaddr 10.21.12.10

nand:
nand [动词] [内存地址] [nandflash的内部地址] [搬移大小]

  • nand中5M空间的数据读取到内存地址2100 0000

5M = 5* 1M ,1M = 2^20 = 0x100000

读数据:nand read 21000000  500000 1024

  • nand把内存地址2100 0000的值写到5M空间

初始化:nand erase 500000 1024
写数据:nand write 21000000  500000 1024

tftp:
设置、保存本机IP:
setenv    ipaddr 192.168.9.120
saveenv ipaddr 192.168.9.120
设置服务器ip:
setenv serverip 192.168.9.3
利用tftp传递文件a.txt 到内存(s5pv210的dram中)地址 20008000上面:tftp   20008000  a.txt

Ubuntu14.04环境下配置TFTP服务器

inux下安装tftp服务端:
32bit sudo apt-get install tftpd-hpa
64bit sudo apt-get install tftpf openbsc-xinetd

bootm:
bootm传递r0,r1,r2还有bootargs

bootm 21000000

bootm 加载linux镜像是加载uImage,uImage是由mkimage制作而来,和zImage的差异是uImage是zImage压缩过的,bootm需要先对uImage解压,解压地址为内核入口地址。当解压完成时uImage和zImage 几乎是相同的,具体差异可以论述。uboot目前只能支持uImage启动,不支持zImage启动

zImage转换为uImage

mkimage -A arm -O linux -T kernel -C none -a 20008000 -e 20008000 -n "linux-2.6.36" -d zImage uImage
go:
go命令本质就是改变当前pc值

内核启动条件:内核、启动参数、文件系统
启动参数:(bootargs)
root=      启动的根文件系统在哪个设备
init=       内核启动后第一个可执行文件init进程从哪里来(指定内核启动后,运行的第一个脚本)
console=    内核启动时,使哪个设备作为控制台

initrd (boot loader initialized RAM disk),就是由uboot 初始化的内存盘。
在 linux内核启动前,uboot会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统

文件系统:内核与用户交互的一个中介

文件系统的烧写:NFS、Ramdisk

Ramdisk:内存磁盘

配置的内容:
root=/dev/ram
initrd= 0x22000000,8M    (设备信息(文件系统的基地址,大小))
init=/linuxrc
console=ttySAC0
NFS:网络文件系统(TCP/IP协议  C/S架构)优势:实际调试无需繁杂的复制运行程序

PC机服务端安装:
1、搜索 apt-cache  search nfs-
2、安装 sudo apt-get install nfs-kernel-server
PC中nfs配置文件:/etc/exports
(/home/rocky/work/rootfs)       *(rw,sysnc,no_substree_check))  
//第一列为开放权限的目录        第二列中的*为IP地址,指出要轮询哪些主机访问,*代表任意主机   第二列括号内容为访问服务开启的权限 (可读可写,同步,安全机制)    
3、重启服务:sudo /etc/init.d/nfs-kernel-server restart
开发板客户端:
设置bootargs(客户端根文件位置,NFS服务端共享目录的IP和绝对路径,客户端系统的IP,init console)

内核启动步骤(Ramdisk文件系统):
第一步:安装并启动uboot

第二步:通过tftp服务将内核文件及文件系统分别下载到指定位置
tftp  20008000 uImage
tftp 21000000 initrd.img.gz
第三步:设置启动参数
setenv bootargs root=/dev/ram initrd=0x21000000,8M  init=/linuxrc console=ttySAC0,115200
第四步:bootm 20008000 
   至此内核启动完成。

 内核启动步骤(NFS文件系统)

优势:由于将PC服务端的一个目录链接作为开发板内核的文件系统,所以,可以在PC服务机上编辑调试代码,调试生成的结果会自动更新至开发板客户端系统中

PC服务端动作:

第一步:PC服务端安装、配置NFS服务器

第二步:解压服务端已存在的镜像文件initrd.img.gz

第三步:挂载镜像文件到当前镜像所在位置的swap目录下  sudo mount -t ext2  initrd.img  ./swap/

第四步:进入开放权限的目录将swap目录下的所有内容复制进来。

sudo cp  -a  /home/rocky/tftpboot/swap/*    ./ 

目标开发板的动作

第一步:安装uboot

第二步:在uboot下设置传递给内核的启动参数bootargs
setenv bootargs root=/dev/nfs nfsroot=192.168.10.110:/home/rocky/work/rootfs ip=192.168.10.122 init=/linuxrc console=ttySAC0,115200

第三步:将内核文件加载至指定位置tftp 20008000 uImage

第四步:启动bootm 20008000

 自动运行:

uboot环境变量中设置bootdelay、bootcmd
上电延时:bootdelay=10
Raddisk文件系统启动内核时
设置运行时的动作命令:
bootcmd= nand read 20008000 100000 200000;nand read 21000000 56000000 400000;bootm 20008000

而NFS文件系统则无法做bootcmd这个指令

嵌入式Linux系统移植——uboot常用命令的更多相关文章

  1. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  2. linux系统入门一些常用命令解析

    接触IT行业的时候,就使用了ubuntu系统做开发,那个时候是一头雾水,从习惯了window下的界面操作,到终端下的命令行操作,着实一开始让人很不习惯.但是没办法,那个时候公司每个人都用Ubuntu系 ...

  3. Linux 系统运维常用命令

    1 文件管理2 软件管理3 系统管理4 服务管理5 网络管理6 磁盘管理7 用户管理8 脚本相关9 服务配置==================================------------ ...

  4. 【Linux】---Linux系统下各种常用命令总结

    在Linux系统下,“万物皆文件”,之所以强调在强调这个概念,是因为很多人已经习惯了win系统下找找点点得那种方式和思维,因此总是会觉得linux系统下很多指令既复杂又难记.其实都是一样得东西,只是w ...

  5. linux 系统移植uboot

    这里使用的版本为:u-boot-2014.04 查看并修改位置如下:u-boot-2014.04/include/configs/at91sam9x5ek.h(1)查看一下Linux内核在NandFl ...

  6. Linux系统中的常用命令

    查看日志 cat 或 tail -f 日志文件说明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全 ...

  7. 嵌入式Linux系统移植(二)——交叉编译工具集

    常用工具:readelf.size.nm.strip.strings.objdump.objcopy.addr2line readelf:读可执行文件的elf头 ELF Header: Magic: ...

  8. 嵌入式linux系统移植(一)

    内容:   交叉编译环境   bootloader功能子系统   内核核心子系统   文件系统子系统要点:  搭建交叉编译环境  bootloader的选择和移植  kernel的配置.编译.移植和调 ...

  9. linux系统的一些常用命令

    cd 进入某个目录 ifconfig 查看本机的ip cp (要复制的文件的位置) (要把文件复制的位置) ll 查看文件下,文件的操作权限 ls查看该文件夹下的有那些文件和文件夹 vi filena ...

随机推荐

  1. Skype for Business 安装组件RewriteModule失败

    最近QQ网友提到部署Skype for Business,安装组件时提示安装必备组件失败:RewriteModule,如下图,安装文件名是rewrite_2.0_rtw_x64.msi,尝试手动安装也 ...

  2. 016.2 String

    内容:String方法+练习 #######################################比较方法:equals()字符串长度:int length()字符的位置:int index ...

  3. 转 linux设置开机服务自动启动/关闭自动启动命令 chkconfig

    原文连接http://blog.csdn.net/jiangguilong2000/article/details/8259360 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行 ...

  4. JavaScript浏览器检测之客户端检测

    客户端检测一共分为三种,分别为:能力检测.怪癖检测和用户代理检测,通过这三种检测方案,我们可以充分的了解当前浏览器所处系统.所支持的语法.所具有的特殊性能. 一.能力检测: 能力检测又称作为特性检测, ...

  5. Python3安装scrapy框架步骤

    Python3安装scrapy框架步骤 1.       安装wheel a)     Pip install wheel 2.       安装lxml Pip install lxml 3.    ...

  6. git 如何忽略文件以及使用.gitignore 不生效的解决办法

    (1) git 如何忽略文件 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一 ...

  7. Hadoop学习之路(二十七)MapReduce的API使用(四)

    第一题 下面是三种商品的销售数据 要求:根据以上数据,用 MapReduce 统计出如下数据: 1.每种商品的销售总金额,并降序排序 2.每种商品销售额最多的三周 第二题:MapReduce 题 现有 ...

  8. 【Oracle123】向OracleDB导入*.csv文件数据

    SQL*Loader Control File Reference https://docs.oracle.com/cd/B10501_01/server.920/a96652/ch05.htm Or ...

  9. concatenate函数

    numpy.concatenate((a1, a2, ...), axis=0) Join a sequence of arrays along an existing axis.(按轴axis连接a ...

  10. 算法——(4)哈希、hashmap、hashtable

    1. Hash 把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值.拥有四个特性: 1. 拥有无限的输入域和固定大小的输出域 2. 如果输入值相同,返回值一样 3. 如果输入值不相同 ...