使用来自内核的 sdcard 数据刷写 nand

Flashing nand with sdcard data from kernel

我已经使用以下步骤从 u-boot 将 nand 闪存到我的板上。

  1. 从 sdcard 启动主板并停在 U-boot。
  2. 已将内核从 sdcard 加载到 RAM

    #mmc 读取 ${loadaddr} 0x800 0x1800

  3. 已使用 nand erase 命令擦除 nand flash。

    #nand擦除偏移大小

  4. 已将内核从 RAM 复制到 nand。

    #nand 写${loadaddr} 偏移大小

我想在内核中执行相同的步骤,你能指导我如何在内核中将数据从 sdcard 复制到 RAM(寻找 u-boot 的替代命令 "mmc read")。我正在使用基于 IMX53 的定制板。

我可以使用 dd 命令。

  #dd if=/dev/mmcblk0 of=/dev/mtd1 bs=1M skip=1 count=3

不建议这样做,因为它可能会阻塞内核,建议在 uboot 本身中这样做,或者您应该以适当的方式编写与锁定和同步有关的代码。

为此,您可以使用 nand & mmc 驱动程序函数创建一个函数。 NANDread/write MMCread/write可以分别调用各自的read writeUsing NAND funtions from kernel and MMC Kernel API reference

然后在文件 /init/main.c 和函数 __init start_kernel(void) here 中调用函数。
你的函数终于可以在同一个文件的某个地方声明了。