ZMP1107适配更大的SPI Nor-Flash并去掉EMMC

资料选择

官方提供两个ZMP110x评估板,相关配置如下:

  • ZMP107+8M SPI Nor-Flash+4GEMMC:SPI Nor-Flash存放Uboot,Kernel等,EMMC存放Rootfs和应用demo等。
  • ZMP106+16M SPI Nor-Flash:Uboot,Kernel、文件系统、应用demo等。

现在需要改成:ZMP1107使用16MB的SPI Nor-Flash用于Uboot,Kernel、文件系统、应用demo等,去掉EMMC。

在对比分析后决定在ZMP1106的SDK资料上修改成ZMP1107比较容易。

修改Uboot的SPI Nor-Flash的分区

  • 16MB的SPI Nor-Flash分区规划(实际中应用中,如果4M的用户分区不够,可以继续扩展)
分区名 偏移(0x) 大小(0x) 初步大小 备注
UBOOT 0x0 0x40000(256K) 146K boot分区
ENV 0x40000 0x10000(64K) 4K 环境变量分区
ENVBK 0x50000 0x10000(64K) 4K 环境变量备份分区
DTB 0x60000 0x10000(64K) 27K 设备树分区
KERNEL 0x70000 0x280000(2560K) 2197K 内核分区
LOGO 0x2f0000 0x80000(512K) 11K 开机LOGO分区
ROOTFS 0x370000 0x800000(8192K) 6776K 文件系统分区
WORK 0xb70000 0x490000(4672KB) 3K 用户分区
  • 进入uboot目录,按照上面分区修改zmp110x_evb.h文件:gedit include/configs/zmp110x_evb.h
#define  MTDIDS_DEFAULT  "nor0=spi0.0"
#define CONFIG_DEFAULT_MTDPARTS \"mtdparts=mtdparts=spi0.0:256K@0x0(UBOOT),64K@0x40000(ENV),64K@0x50000(ENVBK),64K@0x60000(DTB),"\"2560K@0x70000(KERNEL),512K@0x2f0000(LOGO),8192K@0x370000(ROOTFS),-@0xb70000(WORK)"
  • 修改启动方式:Kernel,dtb,rootfs 都存放于 SPI Nor-Flash,这种情况下 rootfs 使用 squashfs 压缩自读文件系统,对应启动命令 boot_mtd。只修改其中的启动方式,其他默认。修改env.cfg文件:gedit envtool/zmp1106_smart_panel_nor.cfg
 bootcmd run boot_mtd
  • 根据不同的SPI Nor-Flash修改设备树:gedit arch/arm/boot/dts/zmp110x_spi_nor.dtsi
gd25q128: spi-norflash@2 { compatible = "gd,gd25q128";norflash-name = "gd25q128";reg = <2>;/* spiflash gd25q128 */norflash-jedec-id = <0xc84018>; //不同flash芯片。ID不同norflash-ext-id = <0>;norflash-sector-size = <0x10000>;norflash-n-sectors = <256>; norflash-flags = <0x18F8>;rd_status_cmd = <0x05>, <0x35>, <0x15>;wr_status_cmd = <0x01>, <0x31>, <0x11>;wr_mode = <1>;norflash-wr_flags = <2>;/* status reg bit map */norflash-b-wip = <0>;norflash-b-wel = <1>;norflash-b-bp0 = <2>;norflash-b-bp1 = <3>;norflash-b-bp2 = <4>;norflash-b-bp3 = <5>; norflash-b-bp4 = <6>;norflash-b-srp0 = <7>;norflash-b-srp1 = <8>;norflash-b-qe = <9>; norflash-b-cmp = <14>; norflash-b-sus = <15>; status = "disable";
};
  • 修改板级设备树:gedit arch/arm/boot/dts/zmp1106_smart_panel.dts
&gd25q128 {status = "okay";
};
  • 检查uboot中是否有gd25q128的驱动: gedit drivers/mtd/spi/sf_probe.c ,已经有了,没有的话按照格式添加,细节参数参考芯片手册。
/*spiflash gd25q128c*/
{.jedec_id = 0xc84018, .ext_id = 0,.b_wip = 0,   .b_wel = 1,    .b_bp0 = 2,    .b_bp1 = 3,.b_bp2 = 4,    .b_bp3 = 5,    .b_bp4 = 6,    .b_srp0 = 7,.b_srp1 = 8,.b_qe = 9,   .b_lb = 10,    .b_cmp = 14,.b_sus = 15,.read_sr = spi_flash_cmd_read_status,.write_sr = spi_flash_gd25q128c_cmd_write_status,
},
{ "gd25q128", 0xc84018, 0, 64 * 1024, 256, SECT_4K|SFLAG_COM_STATUS2, 0,},

编译Uboot、Kernel等

注意:路劲使用自己主机的真实路径

  • 依次执行以下命令编译 U-Boot,编译完成后会在 U-Boot 目录生成 u-boot.bin 文件
zlgmcu@ubuntu:~/u-boot$ export PATH=$PATH":/opt/arm-zlgmcu-linux-uclibcgnueabi/bin"
zlgmcu@ubuntu:~/u-boot$ export ARCH=arm
zlgmcu@ubuntu:~/u-boot$ export CROSS_COMPILE=arm-zlgmcu-linux-uclibcgnueabi-
zlgmcu@ubuntu:~/u-boot$ make distclean
zlgmcu@ubuntu:~/u-boot$ make zmp110x_evb_config
zlgmcu@ubuntu:~/u-boot$ make all -j4

  • 在 Kernel 源码目录下,依次执行下面命令进行编译:
zlgmcu@ubuntu:~/kernel $ export PATH="/opt/arm-zlgmcu-linux-uclibcgnueabi/bin:"$PATH
zlgmcu@ubuntu:~/kernel $ export ARCH=arm
zlgmcu@ubuntu:~/kernel $ export CROSS_COMPILE=arm-zlgmcu-linux-uclibcgnueabi-
zlgmcu@ubuntu:~/kernel $ make O=../bd_kernel zmp1107_evb_defconfig
zlgmcu@ubuntu:~/kernel $ make O=../bd_kernel uImage dtbs modules -j4
zlgmcu@ubuntu:~/kernel $ make O=../bd_kernel INSTALL_MOD_PATH=../bd_modules modules_install -j4


下载系统

将上述编译文件放到burntool-v1.0.01-image目录下,使用USB对板子进行升级,burntool-v1.0.01-image工具需要进行如下配置。

分区配置如下:

spiflash配置如下:

确认保存后,长按boot健,给板子上电,看到进度条更新后松手即可下载系统。

w25q128和gd25q128兼容,但是ID不同,如果要修改,只需要将上面的chipID改成w25q128的0x1840ef,设备树中ID也改成0xef4018即可(注意大小端),我这里就是这样做的。

公众号

【ZMP1107笔记】适配16M的SPI-Flash并去掉EMMC相关推荐

  1. STM32CubeMX学习笔记(25)——FatFs文件系统使用(操作SPI Flash)

    一.FatFs简介 FatFs 是面向小型嵌入式系统的一种通用的 FAT 文件系统.它完全是由 ANSI C 语言编写并且完全独立于底层的 I/O 介质.因此它可以很容易地不加修改地移植到其他的处理器 ...

  2. Winbond W25QXX SPI Flash使用笔记

    相较于EEPROM而言,SPI Flash的存储空间简直就是打开了一个新世界.以W25Q16为例,16Mb也就是2MB的空间,是AT24C08芯片的1KB空间的2048倍,价格也没有相差很多.同时使用 ...

  3. stm32 cubemx usb spi flash w25q128 u盘调试笔记

    真的太简单了,十分钟就搞定 参考文章 我卡住了几天,最后发现delay函数的问题,去掉就好了.(评论大佬解释了这一现象) 步骤如下 使用cube mx 生成基本代码 调试spi flash 调试usb ...

  4. Licheepi zero SPI Flash 系统编译

    Licheepi zero SPI Flash 系统编译 在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配. 本文介绍SPI Flash镜像的制作过程. ...

  5. nano spi flash linux构建指南

    title: nano spi flash linux构建指南 前言 本文介绍Licheepi nano SPI Flash镜像的制作过程.主要为小白首次入门做讲解! 制作嵌入式linux系统主要分四 ...

  6. lichee linux nfs,SPI Flash 系统编译

    在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配. 本文介绍SPI Flash镜像的制作过程. 这里 使用 MX25L25645G, 32M SPI fl ...

  7. flash挂载到系统 spi_jffs2根文件系统挂载不上spi flash

    这几天一直在弄jffs2,让jffs2挂载到spi flash上,所以在内核中对spi flash进行了分区,给uboot了1M的空间,给kernel 4M的空间,给jffs2了11M的空间,因为我们 ...

  8. 让ambarella s2l 支持32M SPI Flash(W25Q256)

    前言:      最近在做ambarella s2l系列项目时,由于flash容量不够,需要将16M的spi nor flash(W25Q128)增大到32M spi nor flash (W25Q2 ...

  9. f1c100s spi flash分区

    spi flash分区 u-boot-sunxi-with-spl.bin – 1M suniv-f1c100s-licheepi-nano.dtb – 64K zImage – 4M rootfs ...

最新文章

  1. 基于组件的.NET软件开发(1)
  2. Word中新建样式/修改样式对话框中的各个选项意义
  3. elasticsearch7使用指导
  4. R 语言怎么保存工作目录到当前路径_【R语言基础】01.R语言软件环境搭建及常用操作...
  5. 创造型模式——工厂模式
  6. 神经网络反向传导算法
  7. python rq asyncio_python异步IO-asyncio
  8. apache poi 修改docx表格_JAVA poi对word.docx文件的修改
  9. ORACLE查询通用查询被锁对象以及解锁方案
  10. python清理日志脚本_Python日志:如果在程序运行时删除了日志文件,则创建新的日志文件(RotatingFileHandler)...
  11. 「leetcode」 1382. 将二叉搜索树变平衡:【构造平衡二叉搜索树】详解
  12. Docker在测试领域的应用
  13. 如何在电脑上缓存哔哩哔哩的视频
  14. 计算机报名照片 1寸,国考录用系统2021国家公务员考试报名照片尺寸是1寸还是2寸?...
  15. ubuntu如何安装libz库
  16. 基线、底线、顶线、中线
  17. 基于单片机的测温风扇控制系统设计(#0420)
  18. HDU 5015——233 Matrix
  19. Windows10+Ubuntu双系统安装[多图]整理
  20. 一卡通综合管理平台中了后缀.[mr.hacker@tutanota.com]的勒索病毒加密的数据库怎么用达思SQL数据库修复软件完美修复?

热门文章

  1. quartz的maven依赖_maven项目使用quartz定时任务
  2. linux下 ps 配合 kill 命令的用法
  3. 现金流量报表与现金收支报表的区别
  4. 【高效运维篇】如何通过双因子认证保证堡垒机安全访问IT资源
  5. Springboot整合mybatis注意事项
  6. 辽宁建昌发现战国时期古墓群,欲建文物博物馆
  7. 2048完整项目 项目需求和项目设计以及框架的构思
  8. 兔年新佳绩,思迈特软件获奖喜讯纷至沓来
  9. ArcGIS中的标注“分数样式”实现
  10. 使用macBook开发