【发布时间】:2016-01-22 13:11:15
【问题描述】:
mtd 分区表的示例在 arch/arm/mach-omap2/board-omap3beagle.c 中,用于 beagleboard http://lxr.free-electrons.com/source/arch/arm/mach-omap2/board-omap3beagle.c
static struct mtd_partition omap3beagle_nand_partitions[] = {
/* All the partition sizes are listed in terms of NAND block size */
{
.name = "X-Loader",
.offset = 0,
.size = 4 * NAND_BLOCK_SIZE,
.mask_flags = MTD_WRITEABLE, /* force read-only */
},
{
.name = "U-Boot",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
.size = 15 * NAND_BLOCK_SIZE,
.mask_flags = MTD_WRITEABLE, /* force read-only */
},
{
.name = "U-Boot Env",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
.size = 1 * NAND_BLOCK_SIZE,
},
{
.name = "Kernel",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
.size = 32 * NAND_BLOCK_SIZE,
},
{
.name = "File System",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */
.size = MTDPART_SIZ_FULL,
},
};
另一个链接指出:
http://landley.net/kdocs/Documentation/DocBook/xhtml-nochunks/mtdnand.html
在这个链接中 Nand flash driver board_init 函数通过 mtd_partition structure 被传递给
add_mtd_partitions(board_mtd, partition_info, NUM_PARTITIONS); 文件中的函数 mtdcore.c 文件。
如果我是对的,那么mtdcores.c 文件会创建 mtd 分区吗?
现在我有两个问题:
1> 如果我是对的,那么文件 /board-omap3beagle.c 中的 omap3_beagle_init 函数将调用 omap_nand_flash_init 函数,这将初始化 NAND 并创建 /dev/mdtx 节点。
如果我错了,那么是什么创建了 /dev/mtd0 节点?是内核创建还是NAND驱动创建的?
2> 另外,omap3_beagle_init 函数是内核调用的第一个函数吗?它是从 linux 内核中的哪个文件调用的?
【问题讨论】:
-
请任何可以在这篇文章中提出建议的人..!!
标签: linux linux-kernel embedded-linux