【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统

STM32F429两百块都买不到了,要出货的话只能抓紧替换国产芯片了,虽然对国产芯片的第一印象是资料少,坑多,没有技术支持,但在出货压力下,还是义无反顾投入到国产替换运动中去了。

我们综合选择的是立功科技的ZMP1107,性价比还是很高的,售后也不错。

资料选择

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

  • ZMP107+8M SPI Nor-Flash+4GEMMC:SPI Nor-Flash存放Uboot,Kernel等,EMMC存放Root设备fs和应用demo等。
  • ZMP106+16M SPI Nor-Flash:存放Uboot,Kernubuntu命令大全el、文件系统、应用demo等。


                                            【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统


                                            【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统

现在需要改成:ZMP1107使用16MB的SPI Nor-Flash用于Uboot,Kern降压启动方式el、文件系统、应用demo等,linux命令去掉EMMC。在对比分析后决定在ZMP1106的SD水泵启动方式K资料上修改成ZMP1107比较容易

修改uboot分区

  • 16MB的系统运维工程师面试问题及答案SPI Nor-Flash分区规划(实际中应用中,如果4M的用户分区不够,可以继续扩展


                                            【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统

  • ubuntu怎么读入uboot目录,按照上面分区修改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)"
  • 修改启动方式:linuxKernlinuxe电脑启动方式l,dtb,rootfs 都存文件系统放于 SPI Nor-Flash,这种情况下 rootfs 使用 squashfs 压缩水泵启动方式自读文件系统,对应ubuntu启动命令 boot_mtd。修改env.cfg文件:envtool文件系统型是raw/zmp1106_smart_panel_nor.cfg,只修改其中的启linux是什操作系统动方式,其设备他默认。
 bootcmd run boot_mtd
  • 根据SPI文件系统 Nor-F文件系统错误lash型系统运维包括哪些内容号修改设备树arch/arm/b文件系统oot/dts/zmp11电脑启动方式0x_spi_nor.机车启动方式dtsilinux
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";};
  • 修改板级设备树arch/arm/boot/d系统运维的主要任务ts/zmp1106_smart_panel.dts
&gd25q128 {    status = "okay";};
  • 检查uboot中是否有gd25q128的驱动: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-Bo文件系统错误是什么原因ot,编译完成后会在 U-Boot 目录生成 u-boot.bin 文件
zlgmcu@ubuntu:~/u-boot$ export PATH=$PATH":/opt/arm-zlgmcu-linux-uclibcgnueabi/bin"zlgmcu@ubuntu:~/u-boot$ export ARCH=armzlgmcu@ubuntu:~/u-boot$ export CROSS_COMPILE=arm-zlgmcu-linux-uclibcgnueabi-zlgmcu@ubuntu:~/u-boot$ make distcleanzlgmcu@ubuntu:~/u-boot$ make zmp110x_evb_configzlgmcu@ubuntu:~/u-boot$ make all -j4


                                            【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统

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


                                            【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统


                                            【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统

下载系统

将上述编译文件放到burntool-v1.0.01-image目录下,使用系统运维工程USB对板子进行升级,burntool-v1.0.01-imag启动方式uefi和legacye工具需要进行如下配置。

  • 分区配置如下:


                                            【ZMP1107笔记】适配16M的SPI-Flash,并去掉从EMMC中启动系统

  • SPI-Fla启动方式sh配置如下:

  • 确认保存后,长按boot按键,给板子上电,看到进度文件系统类型是raw条更新后松开boubuntu是什操作系统ot按键即可下载系统。

特别注意

w25q12linux必学的60个命令8和gd25q128兼容,但是ID不同,如果要修改,只需要将上面的chipID改成w25q128的0x1840ef,设备树中ID也改成0xef4018即linux操作系统基础知识可(注意大小端),实测可行。

-- END --