当前位置: 首页 > article >正文

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,开发板能跑起来了。

http://www.lryc.cn/news/2416895.html

相关文章:

  • 单目3D检测新SOTA!PersDet:透视BEV中进行3D目标检测
  • 游戏开发博客
  • [转载]聊聊tcpdump与Wireshark抓包分析
  • C++实现刷屏代码(详细教程+代码)
  • H网、某播放器、某数字公司是一根绳上的三个蚂蚱
  • Python 爬虫实战 汽车某家(五) 口碑、评分
  • Java考试题30道(附答案)
  • DRS:一个开源的STORM系统,用于负载动态调整
  • AutoHotKey映射方向键和Home, End键
  • CTreeCtrl 类的InsertItem成员函数
  • 【时空流量预测笔记1】基于相关卷积LSTM和自注意网络的蜂窝网络流量预测
  • 【HTML基础】form表单常用的7种属性和9种元素详解(含在线练习网址)
  • Jmeter动态吞吐量实现
  • 源码、反码、补码(超详细解析)
  • android 电池监测工具,安卓最强电池监控器Battery Monitor Widget Pro
  • Android常用颜色对照表
  • 刚用uiotos交付了智慧园区统一管理平台,前端零代码+后端零代码+物联网平台,完美搭配!(一)|零代码、0代码、无代码、低代码、可视化编程、nodered、amis、codewave、乐吾乐
  • java编程思想第四版电子书,,终于有人把Java程序员必学知识点全整理出来了
  • 在Cocos2d-x中使用CocosBuilder
  • Windows版Redis和Redis Desktop Manager安装
  • 怎么测试网站服务器速度,怎么测试网站速度
  • Linux 系统日志文件有哪些类型?
  • MFC中的CMenu---如何动态添加菜单/菜单项、子菜单、右键菜单
  • GB2312汉字拼音对照表
  • 关于Wiki
  • 小熊工厂 bt
  • ssh连接报错: No route to host
  • 华大HC32F460的BOOT和IAP说明
  • 中国城市别名
  • HDMI 接口学习