Hisilicon 平台调试经验总结

本文作者分享了在Hisilicon平台上调试LiteOS与Linux系统的一年经验,涵盖从UBoot、LiteOS系统、文件系统、NAND/NOR Flash到MMC/SD/EMMC等多个方面。文章详细介绍了各种操作步骤,如编译配置、启动参数、文件系统挂载等,并提及了调试技巧,如烧录镜像和挂载SD卡。
摘要由CSDN通过智能技术生成

记录最近一年调试hisilicon 平台的相关经验,现已经转到互联网云存储方面的。话说嵌入领域,智能硬件领域,无非就是CPU,外设;但鉴于现在芯片原厂SDK 中基本都封装好啊! 改动的比较少,差不多就是按部就班的过程;  处于自己对互联网行业的向往, 现总结自己关于嵌入开发,特别是海思平台的开发; 鉴于自己的前期不重视,总结出三个字,“精,深,面”;精则为精通某一领域,深则为深挖其中的精髓,面则为逐步扩宽自己的知识面;

前面的纯属扯淡,欢迎调侃!

1.      3518EV200之Liteos

1.1  uboot篇

编译配置:make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3518ev200_config

编译:make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-   

生成bin档:./mkboot.sh reg_info_hi3518ev200.bin u-boot-hi3518ev200.bin

注意,reg_info_hi3518ev200.bin 为SDK中uboot_tools 目录生成的xls文件生成的io配置文件。

1.2  Liteos系统篇

编译Liteos系统:make CHIP=hi3518ev200

编译liteos APP程序:make CHIP=hi3518ev200 (原SDK Sample目录中会生成sample.bin程序,该程序主要实现驱动的初始化,文件系统的初始化,挂载文件系统,以及应用业务)

1.2.1         uboot 引导Liteos系统的启动CMD参数:

nand flash:   

setenv bootcmd 'nand read 0x800080000x100000 0x700000; go 0x80008000’; saveenv

spi flash:

setenv bootcmd 'sf probe 0;sf read0x82000000  0x100000 0x700000;go 0x80008000'

注意,0x80008000 为Liteos 固定的启动地址,它是在编译时指定的连接启动地址,可在board.ld中修改。

1.3  Liteos 文件系统篇

1.3.1         Jffs2

JFFS2 (日志文件系统):管理在设备上实现的日志型文件系统;它主要应用与NOR型闪存,特点是可读写、支持数据压缩,并提供崩溃/掉电安全保护,提供写平衡支持。

初始化步骤:

(1)初始化头结点

         init_head()

(2)添加JFFS2 分区

         add_mtd_parttion(类型,分区起始地址,分区长度,分区号)

(3)挂载JFFS2

         mount()实现设备节点和挂载点的挂载

         shell 挂载命令  mount/dev/spinorblk1 /jffs1 jffs

         判断是否挂载成功:在文件系统的根目录是否可以正常查看到挂载目录

         将从串口得到如下回应信息,表明挂载成功。

         HuaweiLite OS# mount /dev/spinorblk1/jffs1 jffs

         挂载成功后,用户就能对norflash进行读写操作。

(4)卸载JFFS2

    umount()

(5)删除JFFS2 分区

     delete_mtd_partition 删除已经卸载的分区

jffspar 查看挂载分区的情况,如显示下列log 则说明挂载ok

jffs_partition num:0, devname:/dev/spinorblk0, mountpt:/jffs0, startaddr:0x0100000, length:0x0300000

1.3.2         FAT文件系统

它是File Alloction Table(文件配置表)的简称;它将硬盘分区为MBR、DBR、FAT、FDT、FADT区等5个区域;

ffconf.h FAT文件系统配置文件,可设置文件读写的相关属性

初始化步骤:

(1)      设备识别

(2)      文件系统挂载与卸载     mount /dev/mmcblk0p0 /sd0p0 vfat       ;umount /sd0p0

1.4  Liteos NAND/NOR Flash 篇

初始化步骤:

(1)      初始化nand flash控制

Nand_init() /spinor_init() 初始化主控

(2)分区,flash 控制器初始化后,即可对其进行分区操作。

int add_mtd_partition( char *type, uint32_tstart_addr, uint32_t length, uint32_t partition_num)

[type]:存储介质类型,指定字符串为"nand"与"spinor"。分别代表两类存储介质。

[start_addr]:分区操作flash的物理开始地址。

[length]:分区操作Nand flash的分区大小。

[partition_num]:分区盘符。

eg:

add_mtd_p

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值