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
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
海思hi3516dv300硬件设计用户指南是一本针对海思公司推出的hi3516dv300芯片的硬件设计的指导手册。该手册的目的是帮助用户了解hi3516dv300芯片的硬件设计要求和规范,并提供相关的设计指导和建议。 hi3516dv300芯片是一款高性能、低功耗的视频处理芯片,主要应用于视频监控、智能交通和安防等领域。硬件设计是确保芯片正常工作和发挥最佳性能的基础,因此对于使用hi3516dv300芯片的设计人员来说,掌握硬件设计指南是非常重要的。 在这本指南中,首先介绍了hi3516dv300芯片的主要特性和功能,包括处理能力、视频编解码、音频处理等。然后详细讲解了芯片的外部接口和引脚分配,包括视频输入、输出接口、音频接口、以太网接口等。同时,还对时钟、电源、存储器和外设等方面的设计进行了说明和建议。 此外,指南中还提供了关于PCB设计的一些建议,包括地域分布、信号电源分离、阻抗匹配、电磁兼容性等方面,帮助设计人员提高设计质量和可靠性。 总之,海思hi3516dv300硬件设计用户指南是一本重要的参考资料,它提供了关于hi3516dv300芯片硬件设计方面的详尽说明和建议,对于希望使用该芯片进行设计的用户来说是不可或缺的。通过认真阅读和遵循指南中的规范和要求,设计人员可以更好地实现hi3516dv300芯片的应用,提高产品的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值