首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux内核如何创建/dev/mtdx节点?

Linux内核如何创建/dev/mtdx节点?
EN

Stack Overflow用户
提问于 2015-10-23 04:26:20
回答 1查看 1.9K关注 0票数 1

mtd分区表的一个示例是beagleboard http://lxr.free-electrons.com/source/arch/arm/mach-omap2/board-omap3beagle.c的arch/arm/mach-omap2 2/board-omap3beagle.c中。

代码语言:javascript
运行
复制
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在这个链接中N和闪存驱动程序board_init函数传递,mtd_partition structure被传递到文件mtdcore.c文件中的add_mtd_partitions(board_mtd, partition_info, NUM_PARTITIONS);函数。

如果我是对的,那么mtdcores.c文件是否创建mtd分区?

现在我有两个问题:

如果我是对的,那么文件/board中的1>函数-omap3beagle.c将调用omap_nand_flash_init函数,这将初始化NAND & create /dev/mdtx节点。

如果我不正确,那么是什么创建了/dev/mtd0 0节点?内核是创建它还是NAND驱动程序?

2>还有,omap3_beagle_init函数是内核调用的第一个函数吗?从linux内核中调用哪个文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 10:20:45

[1]设备文件的创建有多种方法。通常,它们现在是使用devtmpfs (内核的一部分)创建的。当驱动程序或子系统注册新设备时,devtmpfs_create_node被调用--这将唤醒一个线程,该线程将将设备节点添加到devtmpfs文件系统。

如果您的内核不使用devtmpfs,那么您必须使用mknod手动创建这些设备文件。另外,mdev也是一个可以创建设备文件的工具。最后,udev过去常常创建设备文件,但现在依赖于devtmpfs

2/ omap3_beagle_init绝对不是内核调用的第一个函数。解压缩后,入口点是start_kernel in init/main.c。这是独立于建筑的。omap3_beagle_init是从customize_machine arch_initcall在arch/arm/内核/setup.c中调用的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33294876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档