通过在rockchip vendor分区新增一个自定义字段,动态写入国家码,下次开机通过uboot传入系统属性

  • 写入方式
  • uboot 修改

写入方式

static int vendor_storage_write(int cmd, char *num)
{uint32 i;int ret ;uint8 p_buf[sizeof(struct rk_vendor_req)]; /* malloc req buffer or used extern buffer */struct rk_vendor_req *req;req = (struct rk_vendor_req *)p_buf;int sys_fd = open("/dev/vendor_storage",O_RDWR,0);if(sys_fd < 0){printf("vendor_storage open fail\n");return -1;}req->tag = VENDOR_REQ_TAG;req->id = cmd;req->len = strlen(num);printf("%s: strlen = %d\n", __func__, req->len);memcpy(req->data, num, req->len);ret = ioctl(sys_fd, VENDOR_WRITE_IO, req);if(ret){printf("vendor write error\n");return -1;}return 0;
}else if(strcmp(argv[i], "write_wifi_country") == 0)
{if (0 == vendor_storage_write(VENDOR_CUSTOM_ID_1D, argv[i+1])){printf("write_wifi_country success.\n");}printf("write_wifi_country over!\n");break;}

uboot 修改

diff --git a/arch/arm/include/asm/arch-rockchip/vendor.h b/arch/arm/include/asm/arch-rockchip/vendor.h
index 671669f5d8..8b9e538014 100644
--- a/arch/arm/include/asm/arch-rockchip/vendor.h
+++ b/arch/arm/include/asm/arch-rockchip/vendor.h
@@ -10,6 +10,7 @@#define VENDOR_WIFI_MAC_ID     2 /* wifi mac */#define VENDOR_LAN_MAC_ID      3 /* lan mac */#define VENDOR_BLUETOOTH_ID    4 /* bluetooth mac */
+#define VENDOR_CUSTOM_ID_1D     29 /*wificountry*/struct vendor_item {u16  id;
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
index 16136442df..1eed37615d 100644
--- a/arch/arm/mach-rockchip/board.c
+++ b/arch/arm/mach-rockchip/board.c
@@ -68,6 +68,19 @@ static int rockchip_set_ethaddr(void)return 0;}+static int rockchip_set_wificountry(void)
+{+       char wificountry_str[6];
+       int ret = 0;
+       ret = vendor_storage_read(VENDOR_CUSTOM_ID_1D, wificountry_str, 6);
+       if (ret > 0) {+               env_set("wificountry#", wificountry_str);
+       } else {+               env_set("wificountry#", "US");
+       }
+       return ret;
+}
+static int rockchip_set_serialno(void){char serialno_str[VENDOR_SN_MAX];
@@ -157,6 +170,7 @@ int board_late_init(void){rockchip_set_ethaddr();rockchip_set_serialno();
+       rockchip_set_wificountry();#if (CONFIG_ROCKCHIP_BOOT_MODE_REG > 0)setup_boot_mode();#endif
diff --git a/common/android_bootloader.c b/common/android_bootloader.c
index f99494b7d9..79d2d7c3ab 100644
--- a/common/android_bootloader.c
+++ b/common/android_bootloader.c
@@ -38,6 +38,7 @@ DECLARE_GLOBAL_DATA_PTR;#define ANDROID_ARG_SLOT_SUFFIX "androidboot.slot_suffix="#define ANDROID_ARG_ROOT "root="#define ANDROID_ARG_SERIALNO "androidboot.serialno="
+#define ANDROID_ARG_WIFICOUNTRY "androidboot.wificountrycode="#define ANDROID_VERIFY_STATE "androidboot.verifiedbootstate="#ifdef CONFIG_ROCKCHIP_RESOURCE_IMAGE#define ANDROID_ARG_FDT_FILENAME "rk-kernel.dtb"
@@ -395,9 +396,10 @@ char *android_assemble_cmdline(const char *slot_suffix,{const char *cmdline_chunks[16];const char **current_chunk = cmdline_chunks;
-       char *env_cmdline, *cmdline, *rootdev_input, *serialno;
+       char *env_cmdline, *cmdline, *rootdev_input, *serialno, *wificountry;char *allocated_suffix = NULL;char *allocated_serialno = NULL;
+       char *allocated_wificountry = NULL;char *allocated_rootdev = NULL;unsigned long rootdev_len;@@ -429,6 +431,15 @@ char *android_assemble_cmdline(const char *slot_suffix,*(current_chunk++) = allocated_serialno;}+       wificountry = env_get("wificountry#");
+       if (wificountry) {+               allocated_wificountry = malloc(strlen(ANDROID_ARG_WIFICOUNTRY) + strlen(wificountry) + 1);
+               memset(allocated_wificountry, 0, strlen(ANDROID_ARG_WIFICOUNTRY) + strlen(wificountry) + 1);
+               strcpy(allocated_wificountry, ANDROID_ARG_WIFICOUNTRY);
+               strcat(allocated_wificountry, wificountry);
+               *(current_chunk++) = allocated_wificountry;
+       }
+rootdev_input = env_get("android_rootdev");if (rootdev_input) {rootdev_len = strlen(ANDROID_ARG_ROOT) + CONFIG_SYS_CBSIZE + 1;

rockchip wificountry code相关推荐

  1. Rockchip RK3588 kernel dts解析之音频模块

    Rockchip RK3588 kernel dts解析之音频模块 RK3588 EVB板子使用的是外接声卡ES8388 DTS配置参考:rk3588-evb1-lp4.dtsi 系统声音配置: es ...

  2. Rockchip RK3288型号获取

    Platform:Android 5.1 Rockchip RK3288系列也分了好几个型号,这里主要区分:RK3288和RK3288W 本文主要介绍两者之间型号的获取与区分,通过以下方式: 封装丝印 ...

  3. Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记

    1.开发平台 CPU:RK3566 编译环境:Ubuntu18.04 内核版本:kernel 4.19 2.目的 因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核 ...

  4. ROCKCHIP 3568平板游戏机移植EMUELC教程(一)

    最近工作有点小忙,所以一直未更新.近期有朋友想在rk3568上进行emuelec,虽然在4.4之后,github上已经有一个rk3568的device,但是linux内核是ff的源码,仅仅支持他自己的 ...

  5. Rockchip RK3588 Android+Linux双系统方案的实现

    Rockchip RK3588 Android+Linux双系统方案的实现 文章目录 Rockchip RK3588 Android+Linux双系统方案的实现 概述 硬件环境 软件环境 要求 代码修 ...

  6. Android Fatal signal 6 (SIGABRT) at 0x0000271d (code=-6)

    Android Fatal signal 6(SIGABRT) at 0x0000271d (code=-6) 本人第一次在网上写文章,有什么好的地方请大家担待,有问题欢迎提出,一起讨论.下面我遇到的 ...

  7. 华北工控EMB3581 瑞芯微Rockchip RK3568,python部署rknn_toolkit_lite2

    EMB-3581 瑞芯微Rockchip RK3568 处理器,2LAN,4USB3.0,4USB2.0,7COM,3.5寸板 ◆ 支持瑞芯微Rockchip RK3568处理器 ◆ 板载4GB LP ...

  8. 瑞芯微 Rockchip RKNN-Toolkit 环境搭建

    瑞芯微 Rockchip RKNN-Toolkit 环境搭建 flyfish RKNN-Toolkit介绍 RKNN-Toolkit是一个软件开发工具包,为用户提供在 PC 和 Rockchip NP ...

  9. 如何在团队中做好Code Review

    一.Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1.互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务 ...

  10. Pyinstaller 打包 torch 后执行失败 OSError: could not get source code

    1. 问题现象 系统环境 Python 3.6.9 torch 1.2.0 torchvision 0.4.0 Pyinstaller 4.5.1 Pyinstaller 打包 torch 后执行失败 ...

最新文章

  1. 读Zepto源码之操作DOM
  2. 点云的无序性_PU-Net:解决3D点云数据的上采样问题
  3. 【转】sql if else 语句
  4. java读书心得_Java读书笔记 20100815
  5. 张家口张北:加速“云计算”产业集聚
  6. Keras之ML~P:基于Keras中建立的回归预测的神经网络模型(根据200个数据样本预测新的5+1个样本)——回归预测
  7. Boost:可移植地自定义boost :: hash的测试程序
  8. [TCP/IP] HTTPS的工作原理
  9. Message popover
  10. wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!
  11. c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...
  12. 中小企业文件、打印解决方案
  13. ListIterator和Iterator的区别
  14. 投简历:求求你给我个机会「小废物招聘全记录①」
  15. 安装qt qmake 错误:could not find a Qt installation of ''
  16. EPLAN软件卡顿的解决办法
  17. 双目视觉(1)---立体匹配介绍
  18. 仪用放大电路+lm324三级放大+滤波
  19. 特征工程之数据预处理与可视化
  20. js mp4解码合并成ffmpeg

热门文章

  1. java-数组_length 字符串_length() 集合_size()的区别
  2. android神器v2ex,这5个堪称神器的APP,用了让你爱不释手!
  3. android 自定义锁屏api,Android锁屏小部件
  4. python keyboard backspace_键盘记录器在按backspace键时抛出错误(Python)
  5. 运维就是一场没有硝烟的战争
  6. C#中位枚举(Flags)
  7. Scrum立会报告+燃尽图(十月二十五日总第十六次)
  8. Java基础教程笔记
  9. rootkit后门程序开发测试过程
  10. 【手写源码-设计模式9】-装饰器模式-基于王者荣耀英雄-甄姬皮肤场景