rockchip wificountry code
通过在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相关推荐
- Rockchip RK3588 kernel dts解析之音频模块
Rockchip RK3588 kernel dts解析之音频模块 RK3588 EVB板子使用的是外接声卡ES8388 DTS配置参考:rk3588-evb1-lp4.dtsi 系统声音配置: es ...
- Rockchip RK3288型号获取
Platform:Android 5.1 Rockchip RK3288系列也分了好几个型号,这里主要区分:RK3288和RK3288W 本文主要介绍两者之间型号的获取与区分,通过以下方式: 封装丝印 ...
- Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记
1.开发平台 CPU:RK3566 编译环境:Ubuntu18.04 内核版本:kernel 4.19 2.目的 因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核 ...
- ROCKCHIP 3568平板游戏机移植EMUELC教程(一)
最近工作有点小忙,所以一直未更新.近期有朋友想在rk3568上进行emuelec,虽然在4.4之后,github上已经有一个rk3568的device,但是linux内核是ff的源码,仅仅支持他自己的 ...
- Rockchip RK3588 Android+Linux双系统方案的实现
Rockchip RK3588 Android+Linux双系统方案的实现 文章目录 Rockchip RK3588 Android+Linux双系统方案的实现 概述 硬件环境 软件环境 要求 代码修 ...
- Android Fatal signal 6 (SIGABRT) at 0x0000271d (code=-6)
Android Fatal signal 6(SIGABRT) at 0x0000271d (code=-6) 本人第一次在网上写文章,有什么好的地方请大家担待,有问题欢迎提出,一起讨论.下面我遇到的 ...
- 华北工控EMB3581 瑞芯微Rockchip RK3568,python部署rknn_toolkit_lite2
EMB-3581 瑞芯微Rockchip RK3568 处理器,2LAN,4USB3.0,4USB2.0,7COM,3.5寸板 ◆ 支持瑞芯微Rockchip RK3568处理器 ◆ 板载4GB LP ...
- 瑞芯微 Rockchip RKNN-Toolkit 环境搭建
瑞芯微 Rockchip RKNN-Toolkit 环境搭建 flyfish RKNN-Toolkit介绍 RKNN-Toolkit是一个软件开发工具包,为用户提供在 PC 和 Rockchip NP ...
- 如何在团队中做好Code Review
一.Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1.互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务 ...
- 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 后执行失败 ...
最新文章
- 读Zepto源码之操作DOM
- 点云的无序性_PU-Net:解决3D点云数据的上采样问题
- 【转】sql if else 语句
- java读书心得_Java读书笔记 20100815
- 张家口张北:加速“云计算”产业集聚
- Keras之ML~P:基于Keras中建立的回归预测的神经网络模型(根据200个数据样本预测新的5+1个样本)——回归预测
- Boost:可移植地自定义boost :: hash的测试程序
- [TCP/IP] HTTPS的工作原理
- Message popover
- wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!
- c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...
- 中小企业文件、打印解决方案
- ListIterator和Iterator的区别
- 投简历:求求你给我个机会「小废物招聘全记录①」
- 安装qt qmake 错误:could not find a Qt installation of ''
- EPLAN软件卡顿的解决办法
- 双目视觉(1)---立体匹配介绍
- 仪用放大电路+lm324三级放大+滤波
- 特征工程之数据预处理与可视化
- js mp4解码合并成ffmpeg
热门文章
- java-数组_length 字符串_length() 集合_size()的区别
- android神器v2ex,这5个堪称神器的APP,用了让你爱不释手!
- android 自定义锁屏api,Android锁屏小部件
- python keyboard backspace_键盘记录器在按backspace键时抛出错误(Python)
- 运维就是一场没有硝烟的战争
- C#中位枚举(Flags)
- Scrum立会报告+燃尽图(十月二十五日总第十六次)
- Java基础教程笔记
- rootkit后门程序开发测试过程
- 【手写源码-设计模式9】-装饰器模式-基于王者荣耀英雄-甄姬皮肤场景