IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【ZMP1107笔记】适配16M的SPI-Flash并去掉EMMC -> 正文阅读

[嵌入式]【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)初步大小备注
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即可(注意大小端),我这里就是这样做的。

公众号

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 12:04:50  更:2021-09-03 12:06:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:57:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码