首页 > 技术知识 > 正文

【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板

由于项目需要可能需要在之前底板的基础上升级核心板,如果是基于易佰纳Hi3520V200核心板,基于Hi3520V200评估板设计进行的电路设计,即使拿到SDK也会有网卡不兼容的问题。 需要注意在更换HiV3520V300时认真比对Hi3520V300和Hi3520V200的技术参数差异。

比如

Hi3520V200支持 BootRom 启动 SPI NOR flash 启动 Hi3520V300 支持从 BootROM 启动 SPI NOR flash 启动 还支持SPI NAND flash 启动 这也是因为其支持的存储器接口差异有关。 Hi3520V200

SPI Nor Flash 接口 − 1、 2、 4bit SPI Nor Flash − 2 个片选 − 每个片选最大容量支持 8Gbit

Hi3520V300

SPI NOR/NAND Flash 接口 − 1、 2、 4bit SPI NOR/NAND Flash − 2 个片选,可分别接不同类型的 Flash − (仅对 NOR flash)每个片选最大容量支持 32Mbytes − (仅对 SPI NAND flash)每个片选支持的最大容量为 8GByte − (仅对 SPI NAND flash)支持 2KB/4KB 页大小 − (仅对 SPI NAND flash)支持 8bit/1Kbyte ECC 及 24bit/1Kbyte ECC

Hi3520V200有4个Uart ,Hi3520V300只有3个Uart等。

一、更改网卡配置,让V300核心板适应V200评估底板 1、uboot更改网卡配置(网络正常才好TFTP快速烧录内核和文件系统固件)

vi include/configs/hi3520dv300.h

184 /*———————————————————————– 185 * HIETH-GMAC driver 186 ———————————————————————–*/ 187 #define CONFIG_NET_HIGMACV300 188 #ifdef CONFIG_NET_HIGMACV300 189 #define CONFIG_GMAC_NUMS 1 190 #define HIGMAC0_IOBASE 0x100A0000 191 /* #define HIGMAC1_IOBASE 0x10091000 */ 192 #define CONFIG_HIGMAC_PHY1_ADDR 2 193 /* #define CONFIG_HIGMAC_PHY2_ADDR 2 */ 194 #define CONFIG_HIGMAC_PHY1_INTERFACE_MODE 0 195 /* #define CONFIG_HIGMAC_PHY2_INTERFACE_MODE 2 */ 196 #define CONFIG_HIGMAC_DESC_4_WORD 197 #endif

配置ipaddr gatewayip serverip uboot环境变量 此时uboot即可与主机ping通,但是如果用SDK中的内核镜像,内核的网络是不能用的,需要修改内核相关配置。 制作uboot镜像

make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3520dv300_config make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- cp u-boot.bin ../../../tools/pc/uboot_tools/ cd ../../../tools/pc/uboot_tools/ ./mkboot.sh reg_info.bin u-boot-hi3521a.bin 2、内核更改网卡配置

内核启动后无论如何配置网络都不能ping通主机设备,dmesg查看内核打印信息看到下面信息,发现phy地址出现问题 。

PHY mdio0:01 not found ETH0: rmii, phy_addr=1, mii_name=mdio0

进入内核源码配置即可

cd linux-3.10.y make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig ->Device Drivers ->Network device support (NETDEVICES [=y]) -> Ethernet driver support (ETHERNET [=y]) -> hieth gmac family network device support (HIETH_GMAC [=y]) (2) hieth-gmac phy0 addr (6) hieth-gmac phy0 interface mode

【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板1

二、修改nandflash配置,增加V300 flash 到128M 1、更改确认uboot支持nandflash

因为原板板载16M falsh,存储非常小,在使用Hi3520时由于增加了QT界面的设计,如果移植的QT库功能比较丰富的情况,存储是肯定不够用的。这里介绍增加更换nandflash的方法。 【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板2 由于板载是8脚的nor flash,更换nandflash 也必须是8引脚的flash,这里我选用的是F50L1G41A,选用这个芯片的原因主要是uboot源码中已经填了这该芯片的配置信息,如果需要添加自己的flash可以在drivers/mtd/nand/hifmc100/hifmc_spi_nand_ids.c文件下添加nand flash的 参数信息,对应于datasheet中的数据参数。其中id是地址,

.id = {0xC8, 0x21}, .id_len = 2, .chipsize = _128M, .erasesize = _128K, .pagesize = _2K, .oobsize = 64,

【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板3 【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板4 这里我圈出一个 Internal ECC Requirement: 1bit/512Byte,这里就是之后做文件系统需要的eec type。需要注意。

2、制作nand flash 需要的文件系统yaffs2

更改nandflash之后,之前的文件系统则不再适用,需要针对nandflash制作需要的文件系统。 对于yaffs2 文件系统海思在 SDK 中作为一个模块提供。只需在 yaffs2 代码中的 Makefile 中加入所依赖的内核代码路径,进行编译,即可生成 yaffs2 文件系统模块。yaffs2 镜像文件的制作可以通过SDK中mkyaffs2image工具制作,只需简单的几个参数,具体如下: mkyaffs2image ./rootbox yaffs2-root.img pagesize ecctype 其中, rootbox 是之前已经制作好的根文件系统, yaffs2-root.img 是生成的 yaffs2 文件系统镜像文件, pagesize 是单板上焊接 NAND Flash 器件的页大小, ecctype 是单板上焊接 NAND Flash 器件的 ecc 类型。

上文中根据F50L1G41A的datasheet可以知道他的 pagesize 是2K ecctype是ibit

找到工具osdrv/tools/pc/mkyaffs2image编译生成可执行文件,放到ubuntu /bin目录中,执行生成rootfs镜像操作发现出现下面报错。这里是因为工具oob_config_v100不支持2K1bit参数导致,重新更改Makefile编译oob_config_v300工具。

【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板5

22 BUILD_DIR := $(PREFIX)/mkyaffs2image 23 STRIP := strip 24 25 MKYAFFS2IMAGE := mkyaffs2image300 26 27 28 all: \ 29 $(BUILD_DIR)/tar 30 cd $(BUILD_DIR) && \ 31 make && \ 32 cd – 33 mkdir -p $(PREFIX)/bin 34 cp $(BUILD_DIR)/mkyaffs2image300 $(PREFIX)/bin

然后mkyaffs2image300 ./rootfs rootfs_2k1bit.yaffs2 2K 1bit生成可烧写的roots镜像

【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板6

三、向没有uboot的nandflash中烧写uboot,内核,文件系统

猜你喜欢