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

MacianYuan 2020-11-09 12:31:13 5493

由于项目需要可能需要在之前底板的基础上升级核心板,如果是基于易佰纳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

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

因为原板板载16M falsh,存储非常小,在使用Hi3520时由于增加了QT界面的设计,如果移植的QT库功能比较丰富的情况,存储是肯定不够用的。这里介绍增加更换nandflash的方法。

由于板载是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,               



这里我圈出一个 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工具。

 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镜像

三、向没有uboot的nandflash中烧写uboot,内核,文件系统
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 1 1 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • MacianYuan 2020-11-09 14:07:14
    回复

    使用Hitool 串口下载 ,注意选择芯片Hi3521A 选择Hi3520D会烧不进去。

相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
MacianYuan
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

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

举报反馈

举报类型

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

详细说明

审核成功

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

审核失败

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

小包子的红包

恭喜发财,大吉大利

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

    易百纳技术社区