【海思HI3520底层开发】Hi3520DV300增加 Nandflash并适应与V200评估板
3755 打赏
MacianYuan 2020-11-09 12:31:13

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

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
评论
2个
时间排序
内容存在敏感词
    0 条记录 第 0 /
    相关专栏
    打赏作者
    易百纳技术社区
    MacianYuan
    您的支持将鼓励我继续创作!
    打赏金额:
    ¥1 易百纳技术社区
    ¥5 易百纳技术社区
    ¥10 易百纳技术社区
    ¥50 易百纳技术社区
    ¥100 易百纳技术社区
    支付方式:
    微信支付
    支付宝支付
    易百纳技术社区 微信支付
    易百纳技术社区
    打赏成功!

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

    举报反馈

    举报类型

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

    详细说明

    审核成功

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

    审核失败

    失败原因
    备注
    Loading...
    易百纳技术社区
    确定要删除此文章、专栏、评论吗?
    确定
    取消
    易百纳技术社区
    活动规则
    • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
    • 2.发布在平台的专栏需为原创技术专栏,且社区作为首次发布的平台,在其他平台发布需注明为转载
    • 3.周任务中的专栏需要达到一定质量才会被计入完成总数中。具体以平台审核为准,如有疑问,可联系社区客服(ebainacs)。
    • 4.专栏/资料的任务以审核通过的篇数为准,每个任务数量不做累计。
    • 5.任务完成后,现金奖励直接打款到微信账户EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换。
    易百纳技术社区
    升级提醒
    升级

    恭喜您的社区称号由 升级为 “社区游民”

    同时为了感谢您对社区的支持,我们将送出xxx礼品一份, 记得领取哦~

    升级提醒
    易百纳技术社区