HI3516DV300笔记(二)硬件适配

目录

 

一、修改硬件

二、安装开发环境

三、修改和编译uboot

3.1 先让boot跑起来

3.2 修改SPI NAND

3.3配置环境变量

四、修改和编译Linux Kernel

五、编译rootfs


最近收到一个HI3516的开发板,记录一下试玩的内容,省的以后忘记了。

一、修改硬件

开发板的FLASH更换过,使用的是SPI NAND,Kioxia,型号TC58CVG2S0H。开发板出厂默认的是SPI Nor启动,需要修改一下boot mode。

二、安装开发环境

单独写了一个安装开发环境的文章,可以移步到此。

三、修改和编译uboot

3.1 先让boot跑起来

 官方SDK使用的ddr和开发板有所不同,所以,官方SDK编译出来的uboot,再开发板上是跑不起来的,所以需要先修改一下uboot的配置。

复制开发板资料中的,Hi3516DV300-DMEBLITE_6L_T-DDR4_1800M_1GB_16bitx2-A7_900M-SYSBUS_300M.xlsm,到~/hi3516/Hi3516CV500_SDK_V2.0.2.0/osdrv/tools/pc/uboot_tools。

修改osdrv/Makefile

编译

make hiboot

使用Hitool,烧写fastboot。

烧写完成后,烧写时报错:

 

  提示找不到nand,应该是uboot不识别这个flash。

修改

3.2 修改SPI NAND

我的这块板子是自己修改的FLASH,查询flash的ID,可以参考一下步骤。

1. 修改uboot代码,打印FLASH ID.

vim /home/zhujun/hi3516/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11/drivers/mtd/nand/nand_base.c

static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,

                                                  struct nand_chip *chip,

                                                  int *maf_id, int *dev_id,

                                                  struct nand_flash_dev *type)

函数中添加

printf("FLASH ID: 0x%02x 0x%02x\n", id_data[0], id_data[1]);

编译烧写后,运行,可以看到输出了FLASH的ID。

在/home/zhujun/hi3516/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11\drivers\mtd\nand\hifmc100\hifmc_spi_nand_ids.c中,可以找到FLASH支持列表。

查找这个ID,如果有,说明uboot支持该flash,没有,就是不支持了,就得看情况修改了,可以修改一个类似的flash。

 uboot 2016.11,SPI NAND支持列表里,有TC58CVG2S0H这个型号,但是是TOSHIBA的,查看规格书,发现两颗物料的ID有差别,所以需要修改如下:

vim /home/zhujun/hi3516/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11/drivers/mtd/nand/hifmc100/hifmc_spi_nand_ids.c

找到TC58CVG2S0H的结构体,将ID由{0x98, 0xcd} 改为 {0x98, 0xed}

 保存后,重新编译uboot。 

cd /home/zhujun/hi3516/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/uboot/u-boot-2016.11
make clean
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_defconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- -j 20
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin

在uboot-2016.11目录下,生成的u-boot-hi3516dv300.bin

烧录, 提示烧录成功。OK,uboot已就绪。

 从串口工具,可以看到uboot已正常启动。

3.3配置环境变量

setenv ipaddr 192.168.1.100;setenv serverip 192.168.1.100;setenv gatwayip 192.168.1.1;setenv netmask 255.255.255.0;
setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),-(rootfs)';
setenv bootcmd 'nand read 0x82000000 0x100000 0x400000;bootm 0x82000000'
saveenv

四、修改和编译Linux Kernel

修改SPI NAND driver。

vim /home/zhujun/hi3516/Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/kernel/linux-4.9.y-smp/drivers/mtd/nand/hifmc100/hifmc_spi_nand_ids.c

内容同uboot一样。

重新编译内核。

make clean
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage -j 20

编译好的镜像文件arch/arm/boot/uImage

烧写内核。。。

内核能跑起来了,因为没有rootfs,会报错。接下来搞rootfs。

五、编译rootfs

重新编译一下rootfs

make hirootfs_build

 烧写osdrv/pub/hi3516dv300_spi_smp_image_glibc/rootfs_hi3516dv300_4k_24bit.yaffs2

OK,开发板能跑起来了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值