【ZMP1107笔记】适配16M的SPI-Flash并去掉EMMC
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相关推荐
- STM32CubeMX学习笔记(25)——FatFs文件系统使用(操作SPI Flash)
一.FatFs简介 FatFs 是面向小型嵌入式系统的一种通用的 FAT 文件系统.它完全是由 ANSI C 语言编写并且完全独立于底层的 I/O 介质.因此它可以很容易地不加修改地移植到其他的处理器 ...
- Winbond W25QXX SPI Flash使用笔记
相较于EEPROM而言,SPI Flash的存储空间简直就是打开了一个新世界.以W25Q16为例,16Mb也就是2MB的空间,是AT24C08芯片的1KB空间的2048倍,价格也没有相差很多.同时使用 ...
- stm32 cubemx usb spi flash w25q128 u盘调试笔记
真的太简单了,十分钟就搞定 参考文章 我卡住了几天,最后发现delay函数的问题,去掉就好了.(评论大佬解释了这一现象) 步骤如下 使用cube mx 生成基本代码 调试spi flash 调试usb ...
- Licheepi zero SPI Flash 系统编译
Licheepi zero SPI Flash 系统编译 在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配. 本文介绍SPI Flash镜像的制作过程. ...
- nano spi flash linux构建指南
title: nano spi flash linux构建指南 前言 本文介绍Licheepi nano SPI Flash镜像的制作过程.主要为小白首次入门做讲解! 制作嵌入式linux系统主要分四 ...
- lichee linux nfs,SPI Flash 系统编译
在一些低成本应用场景,需要在SPI flash上启动系统,这需要对Uboot和系统镜像做些适配. 本文介绍SPI Flash镜像的制作过程. 这里 使用 MX25L25645G, 32M SPI fl ...
- flash挂载到系统 spi_jffs2根文件系统挂载不上spi flash
这几天一直在弄jffs2,让jffs2挂载到spi flash上,所以在内核中对spi flash进行了分区,给uboot了1M的空间,给kernel 4M的空间,给jffs2了11M的空间,因为我们 ...
- 让ambarella s2l 支持32M SPI Flash(W25Q256)
前言: 最近在做ambarella s2l系列项目时,由于flash容量不够,需要将16M的spi nor flash(W25Q128)增大到32M spi nor flash (W25Q2 ...
- f1c100s spi flash分区
spi flash分区 u-boot-sunxi-with-spl.bin – 1M suniv-f1c100s-licheepi-nano.dtb – 64K zImage – 4M rootfs ...
最新文章
- C#多线程学习之(五)使用定时器进行多线程的自动管理
- poj 1015(dp)
- Redis解决秒杀中一人一单问题
- JavaFX Dialogs (官方支持)
- C运行时库(CRT)
- 多层感知机从零开始实现
- 三维空间中判断射线与平面是否相交
- 【数据结构实验】单链表实验
- 【Verilog HDL】4.全减器
- DDWRT 下设置OPEN×××
- 在个人博客网站上添加QQ邮箱的邮我功能
- 搭建云服务器简单流程【华为云服务器】
- java实现置顶功能
- 4.Android Studio项目打包成.apk文件(手机安装包)
- 基于JAVA校内图书馆智能管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
- Google Play 商品详情,考试内容
- sap 流程图 退货销售订单_销售订单_退货入库及退款(采用高级退货)
- 学5G网络优化,就业前景好?薪资高?
- JAVA乐居租房网的设计与实现计算机毕业设计Mybatis+系统+数据库+调试部署
- html5如何快速选择工具使用技巧,写给PS新手们 五种快速抠图技巧连连看