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