xf.li | 6c8fc1e | 2023-08-12 00:11:09 -0700 | [diff] [blame] | 1 | /******************************************************************************* |
| 2 | * 版权所有 (C)2022, 中兴通讯股份有限公司。 |
| 3 | * |
| 4 | * 文件名称: pub_flags.h |
| 5 | * 文件标识: pub_flags |
| 6 | * 内容摘要: zx298501芯片平台flags分区规划头文件 |
| 7 | * 使用方法: |
| 8 | * |
| 9 | * 修改日期 版本号 修改标记 修改人 修改内容 |
| 10 | * ------------------------------------------------------------------------------ |
| 11 | * 2022/09/15 V1.0 Create 周国坡 创建 |
| 12 | * |
| 13 | *******************************************************************************/ |
| 14 | |
| 15 | #ifndef _MTD_API_H |
| 16 | #define _MTD_API_H |
| 17 | |
| 18 | typedef enum |
| 19 | { |
| 20 | DEVICE_MTD = 0, |
| 21 | DEVICE_ZFTL = 1, |
| 22 | DEVICE_MTD_BLOCK, |
| 23 | } device_type_t; |
| 24 | |
| 25 | /** |
| 26 | * @brief 根据分区名查找分区设备文件路径 |
| 27 | * @param partition_name 入参,分区名 |
| 28 | * @param type 入参,设备类型 |
| 29 | * @param out_mtd_path 出参,设备文件路径缓冲区 |
| 30 | * @param out_mtd_path_len 入参,out_mtd_path数据缓冲区长度 |
| 31 | * @return 成功返回0,失败返回-1 |
| 32 | * @retval |
| 33 | * @note |
| 34 | * @warning |
| 35 | */ |
| 36 | extern int mtd_find(const char *i_parti_name, device_type_t type, char *out_mtd_path, unsigned int out_mtd_path_len); |
| 37 | |
| 38 | /** |
| 39 | * @brief 根据分区名获取mtd分区信息 |
| 40 | * @param fd 入参,mtd分区文件fd |
| 41 | * @param info 出参,包括分区大小和擦除块大小 |
| 42 | * @return 成功返回0,失败返回-1 |
| 43 | * @retval |
| 44 | * @note fd为打开/dev/mtdN设备句柄 |
| 45 | * @warning |
| 46 | */ |
| 47 | extern int mtd_get_info(int fd, struct mtd_info_user *info); |
| 48 | |
| 49 | /** |
| 50 | * @brief 判断block是否是坏块 |
| 51 | * @param fd 入参,mtd分区文件fd |
| 52 | * @param offset 入参,mtd分区偏移位置,包含坏块 |
| 53 | * @return 0表示非坏块,1表示坏块,-1表示失败 |
| 54 | * @retval |
| 55 | * @note fd为打开/dev/mtdN设备句柄 |
| 56 | * @warning |
| 57 | */ |
| 58 | extern int mtd_block_isbad(int fd, off_t offset); |
| 59 | |
| 60 | /** |
| 61 | * @brief 擦除指定分区 |
| 62 | * @param partition_name 入参,分区名 |
| 63 | * @return 成功返回0,失败返回-1 |
| 64 | * @retval |
| 65 | * @note |
| 66 | * @warning |
| 67 | */ |
| 68 | extern int mtd_erase_partition(const char *partition_name); |
| 69 | |
| 70 | /** |
| 71 | * @brief 将指定镜像文件写到指定分区 |
| 72 | * @param partition_name 入参,分区名 |
| 73 | * @param image_file 入参,指定的镜像文件 |
| 74 | * @return 成功返回0,失败返回-1 |
| 75 | * @retval |
| 76 | * @note |
| 77 | * @warning 先要mtd_erase_partition函数擦除分区 |
| 78 | */ |
| 79 | extern int mtd_write_partition(const char *partition_name, const char *image_file); |
| 80 | |
| 81 | /** |
| 82 | * @brief 擦除mtd分区指定位置数据 |
| 83 | * @param fd 入参,mtd分区文件fd |
| 84 | * @param offset 入参,mtd分区偏移位置,包含坏块 |
| 85 | * @return 成功返回0,失败返回-1 |
| 86 | * @retval |
| 87 | * @note fd为打开/dev/mtdN设备句柄 |
| 88 | * @warning |
| 89 | */ |
| 90 | extern int mtd_erase_offset(int fd, off_t offset); |
| 91 | |
| 92 | /** |
| 93 | * @brief 将数据写到mtd分区指定偏移位置 |
| 94 | * @param fd 入参,mtd分区文件fd |
| 95 | * @param offset 入参,mtd分区偏移位置 |
| 96 | * @param buf 入参,数据缓冲区 |
| 97 | * @param count 入参,buf数据长度,不超过一个擦除块 |
| 98 | * @return 成功返回写入数据长度,失败返回-1 |
| 99 | * @retval |
| 100 | * @note fd为打开/dev/mtdN设备句柄 |
| 101 | * @warning 先要mtd_erase_partition函数擦除分区 |
| 102 | */ |
| 103 | extern ssize_t mtd_write_offset(int fd, off_t offset, const void *buf, size_t count); |
| 104 | |
| 105 | /** |
| 106 | * @brief 读取mtd分区指定偏移位置的数据 |
| 107 | * @param fd 入参,mtd分区文件fd |
| 108 | * @param offset 入参,mtd分区偏移位置 |
| 109 | * @param buf 出参,数据缓冲区 |
| 110 | * @param count 入参,buf数据长度,不超过一个擦除块 |
| 111 | * @return 成功返回读取数据长度,失败返回-1 |
| 112 | * @retval |
| 113 | * @note fd为打开/dev/mtdN设备句柄 |
| 114 | * @warning |
| 115 | */ |
| 116 | extern ssize_t mtd_read_offset(int fd, off_t offset, void *buf, size_t count); |
| 117 | |
| 118 | #endif /* _MTD_API_H */ |