HI3516DV300笔记(二)硬件适配

HI3516DV300笔记(二)硬件适配 mini菜 2023-06-20 10:53:35 1503

文章目录

最近收到一个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,开发板能跑起来了。

上一篇:HI3516DV300笔记(一)搭建开发环境

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
mini菜
红包 点赞 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
mini菜
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区