hi3516 uboot
setenv serverip 192.168.1.100;setenv ipaddr 192.168.1.10;
mw.b 0x82000000 0xff 0x300000;tftp 0x82000000 uImage;sf probe 0;sf erase 0x100000 0x300000;sf write 0x82000000 0x100000 0x300000;boot
mw.b 0x82000000 0xff 0x300000;tftp 0x82000000 uImage_hi3516dv300_uart3;sf probe 0;sf erase 0x100000 0x300000;sf write 0x82000000 0x100000 0x300000;boot
mount -t nfs -o nolock 192.168.1.100:/Volumes/linux/nfs/imx335 /nfsroot/;cd /nfsroot/rootfs ; sh run.sh ; vi /etc/machine-id
mw.b 0x82000000 0xFF 0x1C00000;tftp 0x82000000 rootfs-imx335.jffs2;sf probe 0;sf erase 0x400000 0x1C00000;sf write 0x82000000 0x400000 0x1C00000
《海思Hi35xx开发日记——之No.2》_chen_2008_good的博客-CSDN博客
3516dv300-imx327
arch=arm
baudrate=115200
board=hi3516dv300
board_name=hi3516dv300
bootargs=mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)
bootcmd=sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000
bootdelay=2
cpu=armv7
ethact=eth0
soc=hi3516dv300
stderr=serial
stdin=serial
stdout=serial
vendor=hisilicon
verify=n
bootargs=mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)
bootcmd=sf probe 0;sf read 0x81000000 0x100000 0x400000;bootm 0x81000000
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
烧写 kernel 到 0x100000 - 0x500000
setenv serverip 192.168.100.100;setenv ipaddr 192.168.100.10; mw.b 0x82000000 0xFF 0x400000;tftp 0x82000000 imx335/uImage_hi3516dv300_smp;
sf probe 0;sf erase 0x100000 0x400000;sf write 0x82000000 0x100000 0x400000
烧写rootfs文件系统 16M 0x500000 -
setenv serverip 192.168.100.100;setenv ipaddr 192.168.100.10; tftp 0x83000000 rootfs_hi3516dv300_64k.jffs2; sf probe 0;sf erase 0x500000 0xb00000;sf write 0x83000000 0x500000 0xb00000
setenv serverip 192.168.100.100;setenv ipaddr 192.168.100.10; mw.b 0x83000000 0xFF 0x1000000; tftp 0x83000000 16DV300+327.307.bin; sf probe 0;sf erase 0x100000 0x400000;sf write 0x83100000 0x100000 0x400000
烧写全部镜像
16DV300+327.307.bin
setenv serverip 192.168.100.100;setenv ipaddr 192.168.100.10;mw.b 0x83000000 0xFF 0x1000000; tftp 0x83000000 16DV300+327.307.bin; sf probe 0;sf erase 0x100000 0xf00000;sf write 0x83000000 0x100000 0xf00000
0x8000_0000 - 0xFFFF_FFFF DDR 存储空间 2GB
BoardType=600116006-BV-H1606
arch=arm
baudrate=115200
board=hi3516dv300
board_name=hi3516dv300
bootargs=mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 mtdparts=hi_sfc:1024K(Uboot),3072K(kernel),28672K(rootfs)
bootcmd=sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000
bootdelay=1
chiptype=hi3516DV300
cpu=armv7
ethact=eth0
ethaddr=d0:22:12:88:88:88
fileaddr=82000000
filesize=9ee8b0
gateway=192.168.1.1
ipaddr=192.168.1.10
mac=D0:22:12:88:88:88
netmask=255.255.255.0
sensortype=imx307
serverip=192.168.1.100
uuid=1f26bb61-7a05-4517-962d-e5e84dae892b
Environment size: 727/65532 bytes
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 mtdparts=hi_sfc:1024K(Uboot),3072K(kernel),28672K(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
setenv ethaddr d0:22:12:88:88:88
1.编译烧录uboot
编译方法:
cd /root/hi3516/u-boot-2010.06
./mk3516.sh
最终生成的u-boot-hi3516dv300.bin这个文件烧到板子上面去,编译命令在mk3516.sh这个脚本里面,客户自行查看
不建议客户乱动板子uboot,搞坏板子上的uboot就比较麻烦,需要拆flash下来
客户可以tftp下载进板子运行
setenv serverip 192.168.100.100;
setenv ipaddr 192.168.100.10;
tftp 0x82000000 u-boot-hi3516dv300.bin
go 0x82000000
2. 烧写内核kernel hi3516+imx385
编译内核
cd ./linux-4.9.y
./mk3516.sh
mk3516.sh 脚本里面包含了编译linux内核所需的所有的命令,具体看mk3516.sh文件,编译成功将生成在目录arch/arm/boot/uImage文件,这个就是要烧录到板子上的
制作rootfs文件系统
./mkfs.jffs2 -d ./rootfs -l -e 0x10000 -o rootfs-imx385.jffs2
生成的rootfs.jffs2这个就是要烧录到板子上的文件
以 32M SPI NOR Flash 为例
地址空间说明
| 1024 | 3072K | 28672K |
|------------|---------------|-----------------------|
| boot | kernel | rootfs |
板子上电时按住crtl+c,进入uboot里面烧写内核,rootfs这些
uboot里面烧写内核
启动调试:
setenv serverip 192.168.100.100;setenv ipaddr 192.168.100.10;mw.b 0x82000000 0xFF 0x300000;tftp 0x82000000 hi3516dv300-imx335/uImage;bootm 0x82000000
烧写内核到 flash
setenv serverip 192.168.1.100;setenv ipaddr 192.168.1.10;
mw.b 0x82000000 0xff 0x300000;tftp 0x82000000 hi3516dv300-imx335/uImage;
mw.b 0x82000000 0xff 0x300000;tftp 0x82000000 uImage_hi3516dv300_uart3;
sf probe 0;sf erase 0x100000 0x300000;sf write 0x82000000 0x100000 0x300000
烧写rootfs文件系统
mw.b 0x82000000 0xFF 0x1C00000;tftp 0x82000000 rootfs-imx385.jffs2;sf probe 0;sf erase 0x400000 0x1C00000;sf write 0x82000000 0x400000 0x1C00000
设置启动参数和启动命令
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 mtdparts=hi_sfc:1024K(Uboot),3072K(kernel),28672K(rootfs)';setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000';saveenv;reset
1、使用NFS文件系统进行开发
挂载:mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 192.168.2.155:/opt/rootfs_uclibc /mnt
卸载:umount /mnt
2、SPI NOR Flash烧写指令
烧写u-boot
3.3.1 SPI -Nor Flash 烧写方法 SPI-Nor Flash 烧写方法如下:
步骤 1. 在内存中运行起来之后在超级终端中输入:
mw.b ff 0x100000 /* 对内存初始化*/
tftp u-boot-hi3516cv500.bin /U-boot下载到内存/ # sf probe 0 /探测并初始化SPI-Nor flash/
sf erase 0x0 0x100000 /擦除 1M大小/
sf write 0x0 0x100000 /从内存写入SPI-Nor Flash/
Hi3516CV500 平台的 sf probe 0 sf probe 0 【mw.b】mw.b表示按字节显示,内存初始化,填充内存。把内存 0x82000000 开始的 0x10000 字节设为 0xFF。 3、uboot相关参数 bootargs各参数的含义如下: 5、烧写类型 烧写uboot都是串口烧写方式,而tftp命令烧写为网口烧写。tftp也可以使用串口烧写,方法如下: SecureCRT_CN 的时候 loady 0ox82000000 115200 6、设置网络 ifconfig eth0 192.168.2.102 netmask 255.255.255.0 想不掉电不丢失,则在/etc/init.d/rcS 写入: ifconfig eth0 192.168.2.102 netmask 255.255.255.0 无法ping通外网 想ping通外网,则创建一个 /etc/resolv.conf nameserver 8.8.8.8 7、tftp上传下载文件 tftp -g -r 1.mp3 192.168.151.52 从PC 传到 开发板 tftp -p -r 1.mp3 192.168.151.52 从开发板 传到 PC 8、开启telnet服务 先在开发板上开启 telnetd,执行: telnetd & 然后在虚拟机上执行: telnet 192.168.2.102 (开发板的IP地址) Trying 192.168.2.102... 用户名为:root 密码为:空 (直接回车即可) ———————————————— 一、使用HiTool烧写: nor/nand flash与emmc使用的镜像不一致,nor/nand flash可使用官方SDK中编译好的镜像来烧写,emmc需配置config为emmc方式重新编译出镜像才能烧写; 烧写nor/nand flash或emmc前,先将启动模式配置到相应模式: 参考《HiBurn 工具使用指南.pdf》将镜像烧写到flash/emmc中 二、配置u-boot: nor flash-32M: setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),27M(rootfs)' setenv bootcmd 'sf probe 0;sf read 0x81000000 0x100000 0x400000;bootm 0x81000000' nand flash-32M: setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_nand:1M(boot),4M(kernel),27M(rootfs)' setenv bootcmd 'nand read 0x81000000 0x100000 0x400000;bootm 0x81000000' emmc-16G: setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rootwait rootfstype=ext4 rw blkdevparts=mmcblk0:1M(boot),4M(kernel),14905M(rootfs)' setenv bootcmd 'mmc read 0 0x81000000 0x800 0x2000;bootm 0x81000000' 说明: bootargs: mem=xxxM 分配给Linux操作系统的内存大小; root=/dev/xxx 指定根文件系统所在的设备号、分区号; rootfstype=xxx 指定根文件系统类型; rw 声明启动权限,即以读写方式启动; rootwait 指等待设备/dev/mmcblk0p1设备就绪后才尝试挂载rootfs,仅emmc需要该参数; mtdparts/blkdevparts 根据flash/emmc总容量划定各分区大小; bootcmd: OR nand read 0x81000000 0x100000 0x400000; 0x81000000 将flash读取到内存的地址 0x100000 flash读起始地址 0x400000 flash读长度 mmc read 0 0x81000000 0x800 0x2000; 0 emmc设备号 0x81000000 将emmc读取到内存的地址 0x800 emmc读起始块号 0x2000 emmc读长度块计数 emmc 块号/块计数计算方法: 根据u-boot启动时打印的信息,得知emmc的块大小为512byte(如上图); kernel起始地址为1M(1*1024*1024byte),则起始块号为:blk#=1*1024*1024/512=2048,转换为16进制为0x800; kernel长度为4M(4*1024*1024byte),则块长度计数为:cnt=4*1024*1024/512=8192,转换为16进制为0x2000。
步骤2. 上述步骤操作完成后,重启系统可以看到U-boot烧写成功。
mw.b 82000000 ff 100000
tftp 0x82000000 u-boot-hi3516a.bin
sf erase 0 100000
sf write 82000000 0 100000
【sf probe 0】 探测并初始化SPI FLASH;
【0x82000000】内存地址
【erase】 表示从地址0擦除了1M的文件
【write】 表示从内存地址0x82000000写入1M文件
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
setenv bootdelay 3 /设置启动延时为2秒/
mem:设置操作系统内存大小。以上设置mem=64M表示分配给操作系统内存为64M。
console:设置控制台设备。格式为console=ttyAMA0,115200表示控制台为串口0,波特率115200。
root:设置根文件系统挂载设备。格式为root= /dev/mtdblock3表示从Flash第3个分区挂载(Flash分区编号从0开始)。
rootfstype:设置挂载文件系统类型。
mtdparts:Flash分区描述,格式为mtdparts=hi_sfc:256K(boot),3M(kernel),1M(rootfs),5M(data) //表示有4个分区,分区0大小为256用于bootloader启动,分区1大小为3M用于内核启动,分区2大小为1M用于根文件系统启动,5M为用户数据。
传入-> 发送Ymodem 填写 要烧写的程序如 u-boot-nfs.bin
然后 Go 0x82000000
烧写成功
route add default gw 192.168.2.1 (会掉电丢失!)
route add default gw 192.168.2.1
Connected to 192.168.2.102.
Escape character is '^]'.
(none) login: root
Password:
Welcome to HiLinux.
None of nfsroot found in cmdline.
~ #
版权声明:本文为CSDN博主「聚优致成」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29350001/article/details/52583635 sf read 0x81000000 0x100000 0x400000;
————————————————
版权声明:本文为CSDN博主「yt123456yt」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yt123456yt/article/details/96310422