Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3657924
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: LINUX

2020-01-04 09:56:08

需要三个系统文件
  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
阅读(1501) | 评论(0) | 转发(0) |
0

上一篇:飞腾服务器uboot

下一篇:docker仓库

给主人留下些什么吧!~~