STM32F429两百块都买不到了,要出货的话只能抓紧替换国产芯片了,虽然对国产芯片的第一印象是资料少,坑多,没有技术支持,但在出货压力下,还是义无反顾投入到国产替换运动中去了。
我们综合选择的是立功科技的ZMP1107,性价比还是很高的,售后也不错。
资料选择
官方提供两个ZMP110x评估板,相关配置如下:
现在需要改成:ZMP1107使用16MB的SPI Nor-Flash用于Uboot,Kern降压启动方式el、文件系统、应用demo等,linux命令去掉EMMC。在对比分析后决定在ZMP1106的SD水泵启动方式K资料上修改成ZMP1107比较容易。
修改uboot分区
- 修改启动方式: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等
注意:路劲使用文件系统类型自己主机的真实路径
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
- 在 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
下载系统
将上述编译文件放到burntool-v1.0.01-image目录下,使用系统运维工程师USB对板子进行升级,burntool-v1.0.01-imag启动方式uefi和legacye工具需要进行如下配置。
- 分区配置如下:
- SPI-Fla启动方式sh配置如下:
特别注意
w25q12linux必学的60个命令8和gd25q128兼容,但是ID不同,如果要修改,只需要将上面的chipID改成w25q128的0x1840ef,设备树中ID也改成0xef4018即linux操作系统基础知识可(注意大小端),实测可行。
-- END --
发表评论