1、/kernel/drivers/mtd/maps添加文件
nvram.c
nvram_kernel.c
nvram_linux.h
wrapper.h
驱动代码下载地址
https://download.csdn.net/download/u011425939/87786837
2、修改/kernel/drivers/mtd/maps/makefile
3、修改/kernel/drivers/mtd/maps/kconfig
3、或者直接修改 /kernel/arch/arm64/configs/rockchip_linux_defconfig
添加CONFIG_MTD_NVRAM=y
4、应用代码如下
/* NVRAM utility */
int main(int argc, char **argv)
{
char *name, *value, buf[NVRAM_SPACE];
int size;
/* Skip program name */
--argc;
++argv;
if (!*argv)
usage();
/* Process the remaining arguments. */
for (; *argv; argv++) {
if (!strncmp(*argv, "get", 3)) {
if (*++argv) {
if ((value = nvram_get(*argv)))
puts(value);
}
} else if (!strncmp(*argv, "set", 3)) {
if (*++argv) {
strncpy(value = buf, *argv, sizeof(buf));
name = strsep(&value, "=");
nvram_set(name, value);
}
} else if (!strncmp(*argv, "unset", 5)) {
if (*++argv)
nvram_unset(*argv);
} else if (!strncmp(*argv, "commit", 5)) {
nvram_commit();
} else if (!strncmp(*argv, "show", 4)
|| !strncmp(*argv, "getall", 6)) {
nvram_getall(buf, sizeof(buf));
for (name = buf; *name; name += strlen(name) + 1)
puts(name);
size =
sizeof(struct nvram_header) + (long)name - (long)buf;
fprintf(stderr, "size: %d bytes (%d left)\n", size,
NVRAM_SPACE - size);
}
if (!*argv)
break;
}
return 0;
}
运用下载地址
https://download.csdn.net/download/u011425939/87786839
5、测试
[root@RK356X:/]#
[root@RK356X:/]# nvram set my=123456
[root@RK356X:/]#
[root@RK356X:/]# nvram get my
123456
[root@RK356X:/]#
[root@RK356X:/]# nvram show
wpa_passphrase=12345678
file_log_en=0
wifi_enable=1
wifi_mode_select=1
wifidev=ra0
my=123456
ssid=wifi_ap123
g_trace_print_level=1
size: 151 bytes (130921 left)
[root@RK356X:/]#
[root@RK356X:/]#
[root@RK356X:/userdata]# nvram commit
nvram:[normal 2023-05-15 19:41:51] FILE:nvram_linux.c, FUN:nvram_commit, LINE:280, PID:20369 @:nvram_commit sizeof buffer=131072
[root@RK356X:/userdata]#
[root@RK356X:/userdata]# ls
bin cfg nvram.bin
[root@RK356X:/userdata]#