nuc972 配置成SPI nor flash 启动

nuc972开发板用的是w25q128的spi nor flash (总共16M).

做了如下事情使得从nor flash启动,jffs2文件系统也放在nor flash上:

  1. sudo apt install mtd-utils, 以获得mkfs.jffs2

  2. mkfs.jffs2 -s 0x100 -e 0x10000 -p 0x800000 -d rootfs_48_refine/ -o jffs2.img
    rootfs_48_refine是精简了原先的rootfs, 原来的有几十兆(一大堆QT库之类的), 因为nor flash 比较小, 删除到剩下几M。 这个命令是指block为64K, page为256字节, 这些是从数据手册里获知。

  3. drivers\mtd\devices\m25p80.c 中
    { “w25q128”, INFO(0xef4018, 0, 64 * 1024, 256, 0) }, 里面最后一个flag直接写0, 这个是按照网上或的删除SECT_4K, 这样改动后与第 2步的jffs2.img保持一致。

  4. arch\arm\mach-nuc970\dev.c 中修改分区, 修改后如下:(这里u-boot和kernel空间留太大了,都可以缩小一点)
    static struct mtd_partition nuc970_spi0_flash_partitions[] = {
    {
    .name = “u-boot”,
    .size = 0x0200000,
    .offset = 0,
    },
    {
    .name = “kernel”,
    .size = 0x0600000,
    .offset = 0x0200000,
    },
    {
    .name = “rootfs”,
    .size = 0x0800000,
    .offset = 0x0800000,
    },
    };

  5. kernel中的cmdline设置成如下:选/dev/mtdblock2是因为与上面rootfs对应
    CONFIG_CMDLINE=“noinitrd root=/dev/mtdblock2 console=ttyS0,115200n8 rdinit=/sbin/init rootfstype=jffs2 mem=64M mtdparts=m25p80:2M(u-boot),6M@0x200000(kernel),8M@0x800000(rootfs)”

  6. make menuconfig中, 直接删除nand驱动, 这个也不知道为什么, 反正不删除好像nor flash这边就mount不成功。如下:FMI_NUC970设置为n则nand就不会probe了
    Symbol: FMI_NUC970 [=n]
    │ Type : tristate
    │ Prompt: Nuvoton NUC970 FMI function selection
    │ Location:
    │ -> Device Drivers
    │ -> Generic Driver Options

配置支持JFFS2如下:
Symbol: JFFS2_FS [=y] │
│ Type : tristate │
│ Prompt: Journalling Flash File System v2 (JFFS2) support │
│ Location: │
│ -> File systems │
│ -> Miscellaneous filesystems (MISC_FILESYSTEMS [=y])

7 make menuconfig中CONFIG_SPI, CONFIG_SPI_NUC970_P0和CONFIG_MTD_M25P80都设成y, 而且CONFIG_SPI_NUC970_P0_QUAD设置成y,可能SPI读写快一点
8 用nuwriter烧写是选SPI, u-boot.bin 选 “u-boot”烧在0xe00000, 970uImage选“Data”烧在0x200000,jffs2.img选“Data”烧在0x800000

其他:
uboot中设置下面命令从spi读取kernel并且启动:
set bootcmd sf probe 0 18000000; sf read 0x7fc0 0x200000 0x600000; bootm 0x7fc0
saveenv

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值