我是靠谱客的博主 积极嚓茶,最近开发中收集的这篇文章主要介绍【ZMP1107笔记】适配16M的SPI-Flash并去掉EMMCZMP1107适配更大的SPI Nor-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)初步大小备注
UBOOT0x00x40000(256K)146Kboot分区
ENV0x400000x10000(64K)4K环境变量分区
ENVBK0x500000x10000(64K)4K环境变量备份分区
DTB0x600000x10000(64K)27K设备树分区
KERNEL0x700000x280000(2560K)2197K内核分区
LOGO0x2f00000x80000(512K)11K开机LOGO分区
ROOTFS0x3700000x800000(8192K)6776K文件系统分区
WORK0xb700000x490000(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并去掉EMMCZMP1107适配更大的SPI Nor-Flash并去掉EMMC的全部内容,希望文章能够帮你解决【ZMP1107笔记】适配16M的SPI-Flash并去掉EMMCZMP1107适配更大的SPI Nor-Flash并去掉EMMC所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部