hi3516 文件烧写 imx335
imx335 最大分辨率是2592×1944,但此时画面比例是4:3,
如果要改成16:9的全屏显示,分辨率要调整成 2560×1440,说白了其实实用分辨率就是1440p的。
Uboot 编译方法:
cd /root/hi3516/u-boot-2010.06
./mk3516.sh
最终生成的u-boot-hi3516dv300.bin这个文件烧到板子上面去,编译命令在mk3516.sh这个脚本里面,客户自行查看
不建议客户乱动板子uboot,搞坏板子上的uboot就比较麻烦,需要拆flash下来
客户可以tftp下载进板子运行
set serverip 192.168.1.199
set ipaddr 192.168.1.10
tftp 0x82000000 u-boot-hi3516dv300.bin
go 0x82000000
编译内核
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-imx335_64k.jffs2
-e, --eraseblock=SIZE 设定擦除块的大小为(默认: 64KiB)
生成的rootfs.jffs2这个就是要烧录到板子上的文件
地址空间说明
| 1024 | 3072K | 28672K |
|------------|---------------|-----------------------|
| boot | kernel | rootfs |
板子上电时按住crtl+c,进入uboot里面烧写内核,rootfs这些
uboot里面烧写内核kernel uImage
setenv gateway 192.168.100.1; setenv serverip 192.168.100.100;setenv ipaddr 192.168.100.10;
mw.b 0x82000000 0xff 0x300000;tftp 0x82000000 hi3516dv300-imx335/uImage
imx335/uImage_hi3516dv300_smp_uart3;
sf probe 0;sf erase 0x100000 0x300000;sf write 0x82000000 0x100000 0x300000
烧写rootfs文件系统
mw.b 0x82000000 0xff 0x1C00000;tftp 0x82000000 hi3516dv300-imx385/rootfs-imx385.jffs2
mw.b 0x82000000 0xff 0x1C00000;tftp 0x82000000 hi3516dv300-imx335/rootfs-imx335.jffs2
sf probe 0;sf erase 0x400000 0x1C00000;sf write 0x82000000 0x400000 0x1C00000
mw.b 0x82000000 0xff 0x1C00000;tftp 0x82000000 rootfs-imx335.jffs2;sf probe 0;sf erase 0x400000 0x1C00000;sf write 0x82000000 0x400000 0x1C00000
设置启动参数和启动命令
setenv bootargs 'mem=128M 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
/*********************************** hi3516dv300 ******************************************/
(1)编译整个osdrv目录
make all
(2)单独编译kernel
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
//制作烧录文件系统
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc_3516dv300 -l -e 0x10000 -o osdrv/pub/rootfs_hi3516dv300_64k.jffs2
0x10 0000 4M
0x40 0000 4M
0xb0 0000 11M
0x100 0000 16M
0x1b00 0000 27M
0x200 0000 32M
以 16M SPI NOR Flash 为例
- 地址空间说明
| 1M | 4M | 11M |
|----------------------|---------------------|---------------------|
| boot | kernel | rootfs |
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
烧写 u-boot
mw.b 0x82000000 0xff 0x100000
tftp 0x82000000 u-boot-hi3516dv300.bin
sf probe 0;sf erase 0x0 0x100000;sf write 0x82000000 0x0 0x100000烧写内核 kernel
mw.b 0x82000000 0xff 0x400000
tftp 0x82000000 uImage_hi3516dv300
sf probe 0;sf erase 0x100000 0x400000;sf write 0x82000000 0x100000 0x400000烧写文件系统 rootfs 11M
mw.b 0x82000000 0xff 0xb00000
tftp 0x82000000 rootfs_hi3516dv300_64k.jffs2
sf probe 0;sf erase 0x500000 0xb00000;sf write 0x82000000 0x500000 0xb00000setenv serverip 192.168.100.100;setenv ipaddr 192.168.100.10;
mw.b 0x80000000 0xff 0xb00000;tftp 0x80000000 rootfs_hi3516dv300_64k.jffs2;
mw.b 0x80000000 0xff 0xb00000;tftp 0x80000000 rootfs-imx385.jffs2;设置启动参数(注意 linux-4.9.y kernel 默认文件系统只读,需要在 bootargs 中加入
rw 选项,文件系统才可读写)
setenv bootargs 'mem=128M console=ttyAMA0,115200 coherent_pool=2M root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
saveenv重启系统
reset
以 32M SPI NOR Flash 为例
地址空间说明
| 1M | 4M | 27M |
|----------------------|---------------------|---------------------|
| boot | kernel | rootfs |
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。烧写 u-boot
mw.b 0x82000000 0xff 0x100000
tftp 0x82000000 u-boot-hi3516dv300.bin
sf probe 0;sf erase 0x0 0x100000;sf write 0x82000000 0x0 0x100000烧写内核 kernel
mw.b 0x82000000 0xff 0x400000
tftp 0x82000000 uImage_hi3516dv300
sf probe 0;sf erase 0x100000 0x400000;sf write 0x82000000 0x100000 0x400000烧写文件系统
mw.b 0x82000000 0xff 0x1b00000
tftp 0x82000000 rootfs_hi3516dv300_64k.jffs2
sf probe 0;sf erase 0x500000 0x1b00000;sf write 0x82000000 0x500000 0x1b00000设置启动参数(注意 linux-4.9.y kernel 默认文件系统只读,需要在 bootargs 中加入
rw 选项,文件系统才可读写)
setenv bootargs 'mem=128M console=ttyAMA0,115200 coherent_pool=2M root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),27M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
saveenv重启系统
reset
./load3516dv300 -i -sensor0 imx327 -osmem 128M