GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)

This commit is contained in:
lai
2026-09-06 03:52:57 +08:00
commit b1928b41c0
21813 changed files with 4413081 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
#ifndef __CRC32_H__
#define __CRC32_H__
#include <stdint.h>
// U-Boot标准CRC32计算函数
uint32_t crc32(uint32_t crc, const unsigned char *buf, unsigned int len);
#endif
+83
View File
@@ -0,0 +1,83 @@
/* SPDX-License-Identifier: GPL-2.0+ */
#ifndef __FW_ENV_H__
#define __FW_ENV_H__
#include <stdint.h>
#include <stddef.h>
#include <sys/types.h> // 引入标准类型头文件
// 基础类型定义
typedef uint32_t u32;
typedef uint8_t u8;
typedef int32_t s32;
typedef unsigned long ulong; // 关键:显式定义ulong类型
// 环境变量核心宏
#define MAX_REDUND 2
#define ENV_CRC_SIZE sizeof(uint32_t)
#define ENV_HEADER_SIZE ENV_CRC_SIZE
#define CONFIG_ENV_SIZE 0x10000
// 环境变量操作选项
struct env_opts {
#ifdef CONFIG_FILE
char *config_file;
#endif
char *lockname;
char *part;
ulong offset;
ulong size;
ulong esize;
};
// 环境变量设备配置
struct env_device {
char *devname; // /dev/mtdX
ulong offset; // 偏移
ulong size; // 环境变量总大小
ulong erasesize; // 擦除块大小
int type; // 设备类型(MTD
int ubi_volume; // UBI卷标识
};
// 环境变量上下文
struct environment {
void *image; // 环境变量缓冲区
uint32_t *crc; // CRC指针(前4字节)
uint8_t *flags; // 冗余标志
char *data; // 数据区指针
ulong usable_envsize; // 数据区有效长度
int dirty; // 是否需要刷写
int dev_current; // 当前激活设备
int flag_scheme; // 标志方案
};
// 快捷宏
#define DEVNAME(idx) envdevices[idx].devname
#define DEVOFFSET(idx) envdevices[idx].offset
#define ENVSIZE(idx) envdevices[idx].size
#define DEVESIZE(idx) envdevices[idx].erasesize
#define DEVTYPE(idx) envdevices[idx].type
#define IS_UBI(idx) envdevices[idx].ubi_volume
#define CUR_DEVNAME DEVNAME(environment.dev_current)
#define CUR_DEVOFFSET DEVOFFSET(environment.dev_current)
#define CUR_ENVSIZE ENVSIZE(environment.dev_current)
#define CUR_DEVESIZE DEVESIZE(environment.dev_current)
// 全局变量声明
extern struct env_device envdevices[MAX_REDUND];
extern struct environment environment;
extern int have_redund_env;
// 函数声明
int fw_printenv(int argc, char *argv[], int value_only, struct env_opts *opts);
int fw_env_set(int argc, char *argv[], struct env_opts *opts);
int fw_parse_script(char *fname, struct env_opts *opts);
int fw_env_open(struct env_opts *opts);
char *fw_getenv(char *name);
int fw_env_write(char *name, char *value);
int fw_env_flush(struct env_opts *opts);
int fw_env_close(struct env_opts *opts);
char *fw_env_version(void);
#endif