37#ifndef _MTD_PARTITION_H
38#define _MTD_PARTITION_H
86#define SPIBLK_NAME "/dev/spinorblk"
87#define SPICHR_NAME "/dev/spinorchr"
89#define NANDBLK_NAME "/dev/nandblk"
90#define NANDCHR_NAME "/dev/nandchr"
158#define CONFIG_MTD_PATTITION_NUM 20
160#define ALIGN_ASSIGN(len, startAddr, startBlk, endBlk, blkSize) do { \
161 (len) = (((len) + ((blkSize) - 1)) & ~((blkSize) - 1)); \
162 (startAddr) = ((startAddr) & ~((blkSize) - 1)); \
163 (startBlk) = (startAddr) / (blkSize); \
164 (endBlk) = (len) / (blkSize) + ((startBlk) - 1); \
167#define PAR_ASSIGNMENT(node, len, startAddr, num, mtd, blkSize) do { \
168 (node)->start_block = (startAddr) / (blkSize); \
169 (node)->end_block = (len) / (blkSize) + ((node)->start_block - 1); \
170 (node)->patitionnum = (num); \
171 (node)->mtd_info = (mtd); \
172 (node)->mountpoint_name = NULL; \
INT32 add_mtd_partition(const CHAR *type, UINT32 startAddr, UINT32 length, UINT32 partitionNum)
Add a partition.
INT32 delete_mtd_partition(UINT32 partitionNum, const CHAR *type)
Delete a partition.
struct par_param partition_param
分区参数描述符,一个分区既可支持按块访问也可以支持按字符访问,只要有驱动程序就阔以
mtd_partition * GetSpinorPartitionHead(VOID)
partition_param * GetNandPartParam(VOID)
partition_param * GetSpinorPartParam(VOID)
struct mtd_node mtd_partition
通过mknod在/dev子目录下建立MTD块设备节点(主设备号为31)和MTD字符设备节点(主设备号为90)
通过mknod在/dev子目录下建立MTD块设备节点(主设备号为31)和MTD字符设备节点(主设备号为90)
CHAR * mountpoint_name
挂载点名称 例如: /
CHAR * blockdriver_name
块设备驱动名称 例如: /dev/spinorblk0p0
CHAR * chardriver_name
字符设备驱动名称 例如: /dev/nandchr0p2
LOS_DL_LIST node_info
双循环节点,挂在首个分区节点上
分区参数描述符,一个分区既可支持按块访问也可以支持按字符访问,只要有驱动程序就阔以
const struct file_operations_vfs * char_ops
字符方式的操作数据
mtd_partition * partition_head
首个分区,其他分区都挂在.node_info节点上
const struct block_operations * flash_ops
块方式的操作数据
struct MtdDev * flash_mtd
flash设备描述符,属于硬件驱动层
UINT32 block_size
块单位(4K),对文件系统而言是按块读取数据,方便和内存页置换