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. C#多线程学习之(五)使用定时器进行多线程的自动管理
  2. poj 1015(dp)
  3. Redis解决秒杀中一人一单问题
  4. JavaFX Dialogs (官方支持)
  5. C运行时库(CRT)
  6. 多层感知机从零开始实现
  7. 三维空间中判断射线与平面是否相交
  8. 【数据结构实验】单链表实验
  9. 【Verilog HDL】4.全减器
  10. DDWRT 下设置OPEN×××
  11. 在个人博客网站上添加QQ邮箱的邮我功能
  12. 搭建云服务器简单流程【华为云服务器】
  13. java实现置顶功能
  14. 4.Android Studio项目打包成.apk文件(手机安装包)
  15. 基于JAVA校内图书馆智能管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  16. Google Play 商品详情,考试内容
  17. sap 流程图 退货销售订单_销售订单_退货入库及退款(采用高级退货)
  18. 学5G网络优化,就业前景好?薪资高?
  19. JAVA乐居租房网的设计与实现计算机毕业设计Mybatis+系统+数据库+调试部署
  20. html5如何快速选择工具使用技巧,写给PS新手们 五种快速抠图技巧连连看

热门文章

  1. android 修改aar-实践
  2. 微信小程序开发工具使用简介
  3. The Devops Handbook 读书笔记02 PartI
  4. 提起2013,我所领悟到的
  5. 中国舷外机行业研究与投资战略报告(2021版)
  6. 如何利用生产管理系统提高粉末治金工业的生产调度能力
  7. 平流式隔油池计算_隔油池设计计算书
  8. 110本经典编程书籍
  9. 1024程序员节,传智播客上海校区“智未来,益骑燃”公益骑行引爆上海张江高科...
  10. 如何做好软件本地化翻译服务