HI3516DV300笔记(二)硬件适配
文章目录
最近收到一个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,开发板能跑起来了。
- 分享
- 举报
-
浏览量:1182次2023-06-12 14:18:15
-
浏览量:1319次2023-06-20 16:09:54
-
浏览量:850次2023-06-21 10:04:00
-
浏览量:2489次2023-06-28 15:57:28
-
浏览量:1511次2023-11-06 11:04:59
-
浏览量:2800次2022-10-14 10:34:46
-
浏览量:8341次2022-06-01 10:01:04
-
浏览量:5119次2023-03-20 13:32:44
-
浏览量:2142次2023-12-27 15:27:59
-
浏览量:2277次2023-07-12 15:22:31
-
浏览量:1134次2024-06-06 09:47:33
-
浏览量:3607次2022-10-13 17:29:06
-
浏览量:14791次2020-12-18 17:44:33
-
浏览量:4863次2022-10-17 20:51:39
-
浏览量:1186次2024-01-13 18:14:30
-
浏览量:1253次2024-01-08 16:49:01
-
浏览量:905次2023-12-28 14:24:27
-
浏览量:7359次2020-09-17 16:12:59
-
浏览量:4828次2020-09-30 18:01:11
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
mini菜
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明