linux中uboot作用,ARM学习笔记-uboot的作用及主要工作

需要三个系统文件

rootfs.img

uImage

u-boot.bin

// 一定要烧写flash的0x0地址

//u-boot和zimage要配套。要不然可能开不了机

将linux三个系统文件烧写到flash的三个区域

1. 安装windows下的tftp服务

因为uboot里有tftp的客服端

.打开tftpd32

.brower -> 共享的目录

.serverip -> 本地主机ip

2. 网络设置(在开发板上操作)

1)连接好网络

2)重启开发板,在3s减到0之前,按下回车,进入到一个交互界面,执行如下操作

# pri //查看当前u-boot的环境变量

主要是看下ipaddr,serverip,gatewayip?

# set serverip 192.168.1.6    // 主机IP

# set ipaddr 192.168.1.3    // 开发板IP

# set gatewayip 192.168.1.168

# save

# re

重启完毕

# ping 192.168.1.6

如果出现host 192.168.1.6 is alive,说明通了

3. 安装Linux系统

1)安装kernel

# tftp 40000000 uImage //暂时放到SDRAM内存上

# nand erase 0x600000 0x500000 //nand flash上先在地址600000擦除500000字节bit大小的空间

# nand write 40000000 600000 500000

//从内存40000000上往nand flash的600000地址写入大小500000的空间

2) 安装rootfs

# tftp 40000000 rootfs.img

# nand erase 0xe00000 0xf200000

# nand write.yaffs 0x40000000 0xe00000 0x5e95c0

(0x5e95c0指的是tftp下载的实际大小,这里不能是0xf200000大,会报错)

3) 安装u-boot

# tftp 40000000 u-boot.bin

# nand erase 0x0 0x600000

# nand write 40000000 0x0 0x600000

4. 设置linux启动参数

# set bootcmd nand read 40000000 600000 500000 \;bootm 40000000

# save

# re

# set bootargs root=/dev/mtdblock4 init=/linuxrc console=ttySAC0,115200 rootfstype = yaffs rw

# save

# re

# set machid f9f

# save

# re

————————————————

版权声明:本文为CSDN博主「keepcode」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zjshui/article/details/47324747

1.用tftp命令烧写系统

tftp命令

tftpboot命令使用TFTP协议从服务器下载文件,服务器的IP地址为环境变量serverip。

用法为“tftpboot [loadAddress] [bootfilename]”,

loadAddress表示文件下载后存放的内存地址,bootfilename表示要下载的文件的名称。

nand 相关命令

“nand erase [clean] [off size]”

擦除NAND Flash。加上“clean”时,表示在每个块的第一个扇区的OOB区加写入清除标记;off、size表示要擦除的开始偏移地址和长度,如果省略off和size,表示要擦除整个NAND Flash。

“nand read[.jffs2] addr off size”

从NAND Flash偏移地址off处读出size个字节的数据,存放到开始地址为addr的内存中。是否加后缀“.jffs”的差别只是读操作时的ECC较验方法不同。

“nand write[.jffs2] addr off size”

把开始地址为addr的内存中的size个字节数据,写到NAND Flash的偏移地址off处。是否加后缀“.jffs”的差别只是写操作时的ECC较验方法不同。

从nor启动

nandflash 分区情况

OpenJTAG> mtd

device nand0 , # parts = 4

#: name                        size            offset          mask_flags

0: bootloader          0x00040000      0x00000000      0

1: params              0x00020000      0x00040000      0

2: kernel              0x00200000      0x00060000      0

3: root                0x0fda0000      0x00260000      0

active partition: nand0,0 - (bootloader) 0x00040000 @ 0x00000000

烧写整个系统

1.烧写nandflash中的uboot

tftp 0x30000000 u-boot.bin

nand erase bootloader

nand write 0x30000000 bootloader或者nand write.jffs2 0x30000000 0x0  $(filesize)   注:用tftp下载文件后文件的大小会存在filesize变量里

2.烧写uImage

tftp 0x30000000 uImage

nand erase kernel

nand write.jffs2 0x30000000 kernel或nand write.jffs2 0x30000000 0x60000 $(filesize)

3.烧写文件系统

tftp 0x30000000 fs_qtoqia.yaffs2

nand erase root

nand write.yaffs  0x30000000 0x26000 $(filesize)

或者

tftp 0x30000000 fs_qtoqia.jffs2

nand erase root

nand write.jffs2 0x30000000 0x26000 $(filesize)

注意:

当烧写的是jffs2映象文件,要正确启动的话,还要通过命令行参数指定根文件系统类型为jffs2。

在u-boot菜单里输入字母q退出菜单,然后使用如下命令设置:

OpenJTAG> set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=jffs2

OpenJTAG> save

指定“rootfstype=jffs2”的原因是:如果不指定,内核首先把它当作YAFFS进行挂载,

如果不成功,再尝试JFFS2。但是对于大多数JFFS2文件系统来说,可以被“错误地”当作YAFFS挂载,但是挂载之后并不能正确使用。

2.用nfs命令烧写系统

nfs 30000000 192.168.1.102:/nfsboot uImage

————————————————

版权声明:本文为CSDN博主「1314ZYX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u012007928/article/details/38834501

pc启动:上电->BIOS->引导操作系统windows->识别C、D盘->运行应用程序;

嵌入式:上电->bootloader->linux内核->挂接根文件系统->运行应用程序;

u-boot打补丁、编译、烧写

1.解压缩;

2.打补丁patch命令;

3.配置;

4.编译;

uboot作用:

主要作用:1.读flash;2.初始化sdram;3.启动内核;

为了满足上面的主要作用还要做一些辅助工作:

1.初始化时钟:板子晶振小,要变到cpu的频率;

2.关看门狗;

3.初始化串口;

4.为开发方便,还要可以写flash,网卡或usb等;

总结uboot功能:

最终目的启动内核;

启动的话,就需要从flash读出内核写到sdram中,写之前需要先初始化sdram,要初始化系统时钟,在此之前就要先关闭看门狗,以上就是硬件相关的初始化;为了完成这个工作,且便于调试,要开发一下其他功能,如我们要设置uboot一些参数,就需要把设置好的参数写入到flash,还需要用到网卡、usb及串口等以便调试。

uboot就是一个复杂的单片机程序。

————————————————

版权声明:本文为CSDN博主「噌胥苑」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/eric41050808/article/details/17895517

阅读(530) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值