完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Platform: RK3288
OS: Android 6.0 Kernel: 3.10.92 背景: RK3288 Android6.0平台对AP6356S的支持不是很完善,直接wifi芯片类型后,会出现修改错误: [9.169008] dhdsdio_download_nvram: Open nvram file failed /system/etc/firmware/nvram_ap6356s.txt [9.169016] _dhdsdio_download_firmware:加密狗 nvram 文件下载失败 [9.169039] dhd_net_bus_devreset:dhd_bus_devreset:-35 [9.169045] dhd_prot_ioctl:总线已关闭。我们无事可做 [dh_net 48] dh_net d_net_devreset:-35 更新总线dev_bin的文件和nvram文件,需要更新和驱动。 解决方法: 驱动驱动 差异--git a/arch/arm/。 /dts/rk3288-ben.dts b/arch/arm/boot/dts/rk3288-ben.dts 索引 c6faa65..d903a36 100644 @@ -17,19 +17,19 @@ * rtl8188eu, rtl8723bs, rtl8723bu * esp8089 */ - wifi_chip_type = “ap6335”; + wifi_chip_type = “ap6354”; sdio_vref = 《1800》;//1800mv 或 3300mv //keep_wifi_power_on; //power_ctrl_by_pmu; - power_pmu_regulator = “act_ldo3”; + power_pmu_regulator = “rk818_ldo8”; power_pmu_enable_level = 《1》; //1-》HIGH, 0-》LOW //vref_ctrl_enable; //vref_ctrl_gpio = 《&gpio0 GPIO_A2 GPIO_ACTIVE_HIGH》; - vref_pmu_regulator = “ + vref_pmu_regulator = ”rk818_ldo8“; vref_pmu_enable_level = 《1》; //1-》HIGH, 0-》LOW WIFI,poweren_gpio = 《&gpio4 GPIO_D4 GPIO_ACTIVE_HIGH》; @@ -742,8 +742,8 @@ rk818_ldo8_reg: 调节器@11 { 调节器名称= ”rk818_ldo8“; - 调节器最小微伏 = 《3300000》; - 调节器最大微伏 = 《3300000》; + 调节器最小微伏 = 《1800000》; + 调节器最大微伏 = 《1800000》; 调节器初始状态 = 《3》; diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.cb/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c index 5f7e44c..2735b80 100755 --- a/drivers/ net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c @@ -5,7 +5,7 @@ #include 《bcmutils. h》 #include 《hndsoc.h》 #include 《bcmsdbus.h》 -#if 定义(HW_OOB) || 已定义(FORCE_WOWLAN) +#如果已定义(HW_OOB)|| 定义(FORCE_WOWLAN) #include 《bcmdefs.h》 #include 《bcmsdh.h》 #include 《sdio.h》 @@ -15,26 +15,25 @@ #include 《dhd_config.h》 #include 《dhd_dbg.h 》 -/* 消息级别 */ +/* 消息级别 */ #define CONFIG_ERROR_LEVEL 0x0001 #define CONFIG_TRACE_LEVEL 0x0002 -#define USER_CONFIG_PATH ”/data/misc/roam/config.properties“ - + uint config_msg_level = CONFIG_ERROR_LEVEL; - + #define CONFIG_ERROR(x) - do { + do { if (config_msg_level & CONFIG_ERROR_LEVEL) { printk(KERN_ERR ”CONFIG-ERROR) “); - printk x; - } - } while (0) + printk x; + } + } while (0) #define CONFIG_TRACE(x) - 做 { + 做 { if (config_msg_level & CONFIG_TRACE_LEVEL) { printk(KERN_ERR ”CONFIG-TRACE) “); - printk x; - } + printk x; + } } while (0) #define MAXSZ_BUF 1000 @@ -173,11 +172,11 @@ const static char *bcm4356a2_pcie_ag_fw_name[] = { }; #endif -#define htod32(i) i -#define htod16(i) i -#define dtoh32(i) i -#define dtoh16(i) i -#define htodchanspec(i) i +#define htod32(i) i +#define htod16(i) i +#define dtoh32(i) i +#define dtoh16(i) i +#define htodchanspec(i) i #define dtohchanspec(i) i #ifdef BCMSDIO @@ -534,8 +533,10 @@ dhd_conf_set_fw_name_by_chip(dhd_pub_t *dhd, char *fw_path, char * nv_path) } 中断; case BCM4356_CHIP_ID: - if (chiprev == BCM4356A2_CHIP_REV) - strcpy(&fw_path[i+1], bcm4356a2_ag_fw_name[fw_type]); + if (chiprev == BCM4356A2_CHIP_REV) { + strcpy(&fw_path[i+1], bcm4356a2_ag_fw_name[fw_type]); + strcpy(&nv_path[j+1], ”nvram_ap6356s.txt“); + } 休息; case BCM4371_CHIP_ID: if (chiprev == BCM4356A2_CHIP_REV) @@ -866,10 +867,10 @@ dhd_conf_fix_country(dhd_pub_t *dhd) if (!(dhd && dhd-》conf)) { return bcmerror; } - + memset(valid_chan_list, 0, sizeof(valid_chan_list)); - 列表 = (wl_uint32_list_t *)(void *) valid_chan_list; - 列表-》count = htod32(WL_NUMCHANNELS); + 列表 = (wl_uint32_list_t *)(void *) valid_chan_list; + 列表-》count = htod32(WL_NUMCHANNELS); if ((bcmerror = dhd_wl_ioctl_cmd(dhd, WLC_GET_VALID_CHANNELS, valid_chan_list, sizeof(valid_chan_list), FALSE, 0)) 《 0) { CONFIG_ERROR((”%s: get channels failed with %dn“, __FUNCTION__, bcmerror)); } @@ -1283,8 +1284,8 @@ dhd_conf_read_log_level(dhd_pub_t *dhd, char *bufp, uint len) if (pick) MFREE(dhd-》osh, pick, MAXSZ_BUF); -} - +} + void dhd_conf_read_wme_ac_params(dhd_pub_t *dhd, char *bufp, uint len) { @@ -1719,7 +1720,6 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) bool conf_file_exists; 结构 dhd_conf *conf = dhd-》conf; - conf_path = USER_CONFIG_PATH; conf_file_exists = ((conf_path != NULL) && (conf_path[0] != ‘ ’)); if (!conf_file_exists) { printf(”%s: 配置路径 %sn“, __FUNCTION__, conf_path); @@ -1759,7 +1759,7 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) /* 进程日志级别 */ dhd_conf_read_log_level(dhd, bufp, len); dhd_conf_read_roam_params(dhd,bufp,len); - dhd_conf_read_wme_ac_params(dhd,bufp,len); + dhd_conf_read_wme_ac_params(dhd,bufp,len); dhd_conf_read_fw_by_mac(dhd, bufp, len); dhd_conf_read_nv_by_mac(dhd, bufp, len); dhd_conf_read_nv_by_chip(dhd,bufp,len); @@ -1948,7 +1948,7 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) len_val = process_config_vars(bufp, len, pick, ”bus:txglom=“); if (len_val) { conf-》bus_txglom = (int)simple_strtol(pick, NULL, 10); - printf(”%s: bus:txglom = %dn“, __FUNCTION__, conf-》bus_txglom); + printf(”%s: 总线:txglom = %dn“, __FUNCTION__, conf-》bus_txglom); } /* 处理 ampdu_ba_wsize 参数 */ @@ -2010,7 +2010,7 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) printf(”%s: use_rxchain = %dn“, __FUNCTION__, conf-》use_rxchain); } -#if defined(BCMSDIOH_TXGLOM) +#if defined(BCMSDIOH_TXGLOM) /* 处理 txglomsize 参数 */ memset(pick, 0, MAXSZ_BUF); len_val = process_config_vars(bufp, len, pick, ”txglomsize=“); @@ -2022,42 +2022,42 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) } /* 处理 swtxglom 参数 */ - memset(pick, 0, MAXSZ_BUF); + memset(pick, 0, MAXSZ_BUF); len_val = process_config_vars(bufp, len, pick, ”swtxglom=“); - if (len_val) { - if (!strncmp(pick, ”0“, len_val)) + if (len_val) { + if (!strncmp(pick, ”0“, len_val)) conf-》swtxglom = FALSE; - else + else conf-》swtxglom = TRUE; printf(”%s: swtxglom = %dn“, __FUNCTION__, conf-》swtxglom); } - /* 处理 txglom_ext 参数 */ - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, ”txglom_ext=“); - if (!strncmp(pick, ”0“, len_val)) - conf-》txglom_ext = FALSE; - 否则 - conf-》txglom_ext = TRUE; - printf(”%s: txglom_ext = %dn“, __FUNCTION__, conf-》txglom_ext); - if (conf-》txglom_ext) { - if ((conf-》chip == BCM43362_CHIP_ID) || (conf-》chip == BCM4330_CHIP_ID)) - conf-》txglom_bucket_size = 1680; - else if (conf-》chip == BCM43340_CHIP_ID || conf-》chip == BCM43341_CHIP_ID || + /* 处理 txglom_ext 参数 */ + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp,len,pick,“txglom_ext=”); + if (len_val) { + if (!strncmp(pick, ”0“, len_val)) + conf-》txglom_ext = FALSE; + 否则 + conf-》txglom_ext = TRUE; + printf(”%s: txglom_ext = %dn“, __FUNCTION__, conf-》txglom_ext); + if (conf-》txglom_ext) { + if ((conf-》chip == BCM43362_CHIP_ID) || (conf-》chip == BCM4330_CHIP_ID)) + conf-》txglom_bucket_size = 1680; + else if (conf-》chip == BCM43340_CHIP_ID || conf-》chip == BCM43341_CHIP_ID || conf-》chip == BCM4334_CHIP_ID || conf-》chip == BCM4324_CHIP_ID) - conf-》txglom_bucket_size = 1684; - } - printf(”%s: txglom_bucket_size = %dn“, __FUNCTION__, conf-》txglom_bucket_size); - } + conf-》txglom_bucket_size = 1684; + } + printf(”%s: txglom_bucket_size = %dn“, __FUNCTION__, conf-》txglom_bucket_size); + } #endif /* 处理 disable_proptx 参数 */ memset(pick, 0, MAXSZ_BUF); len_val = process_config_vars(bufp, len, pick, ”disable_proptx=“); if (len_val) { - conf-》disable_proptx = (int)simple_strtol(pick, NULL, 10); - printf(”%s: disable_proptx = %dn“, __FUNCTION__, conf-》disable_proptx); + conf-》disable_proptx = (int)simple_strtol(pick, NULL, 10); + printf(”%s: disable_proptx = %dn“, __FUNCTION__, conf-》disable_proptx); } /* 处理 dpc_cpucore 参数 */ @@ -2131,44 +2131,44 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) if (len_val) { conf-》pktprio8021x = (int)simple_strtol(pick, NULL, 10); printf(”%s: pktprio8021x = %dn“, __FUNCTION__, conf-》pktprio8021x); - } - - /* 处理 txctl_tmo_fix 参数 */ - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp,len,pick,“txctl_tmo_fix=”); - if (len_val) { - if (!strncmp(pick, ”0“, len_val)) - conf-》txctl_tmo_fix = FALSE; - 别的 - conf-》txctl_tmo_fix = TRUE; - printf(”%s: txctl_tmo_fix = %dn“, __FUNCTION__, conf-》txctl_tmo_fix); - } - - /* 处理 tx_in_rx 参数 */ - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, ”tx_in_rx=“); - if (len_val) { - if (!strncmp(pick, ”0“, len_val)) - conf-》tx_in_rx = FALSE; - 否则 - conf-》tx_in_rx = TRUE; - printf(”%s: tx_in_rx = %dn“, __FUNCTION__, conf-》tx_in_rx); - - /* 处理 dhd_txbound 参数 */ - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, ”dhd_txbound=“); - if (len_val) { - dhd_txbound = (uint)simple_strtol(pick, NULL, 10); - printf(”%s: dhd_txbound = %dn“, __FUNCTION__, dhd_txbound); - } - - /* 处理 dhd_rxbound 参数 */ - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, ”dhd_rxbound=“); - if (len_val) { - dhd_rxbound = (uint)simple_strtol(pick, NULL, 10); - printf(”%s: dhd_rxbound = %dn“, __FUNCTION__, dhd_rxbound); + } + + /* 处理 txctl_tmo_fix 参数 */ + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp,len,pick,“txctl_tmo_fix=”); + if (len_val) { + if (!strncmp(pick, ”0“, len_val)) + conf-》txctl_tmo_fix = FALSE; + 否则 + conf-》txctl_tmo_fix = TRUE; + printf(”%s: txctl_tmo_fix = %dn“, __FUNCTION__, conf-》txctl_tmo_fix); + } + + /* 处理 tx_in_rx 参数 */ + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp,len,pick,“tx_in_rx=”); + if (len_val) { + if (!strncmp(pick, ”0“, len_val)) + conf-》tx_in_rx = FALSE; + 否则 + conf-》tx_in_rx = TRUE; + printf(”%s: tx_in_rx = %dn“, __FUNCTION__, conf-》tx_in_rx); + } + + /* 处理 dhd_txbound 参数 */ + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp,len,pick,“dhd_txbound=”); + if (len_val) { + dhd_txbound = (uint)simple_strtol(pick, NULL, 10); + printf(”%s: dhd_txbound = %dn“, __FUNCTION__, dhd_txbound); + } + + /* 处理 dhd_rxbound 参数 */ + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp,len,pick,“dhd_rxbound=”); + if (len_val) { + dhd_rxbound = (uint)simple_strtol(pick, NULL, 10); + printf(”%s: dhd_rxbound = %dn“, __FUNCTION__, dhd_rxbound); /* 处理 tx_max_offset 参数 */ @@ -2186,14 +2186,14 @@ dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path) conf-》rsdb_mode = (int)simple_strtol(pick, NULL, 10); printf(”%s: rsdb_mode = %dn“, __FUNCTION__, conf-》rsdb_mode); } - + /* 处理 txglom_mode 参数 */ - memset(pick, 0, MAXSZ_BUF); + memset(pick, 0, MAXSZ_BUF); len_val = process_config_vars(bufp, len, pick, ”txglom_mode=“); - if (len_val) { - if (!strncmp(pick, ”0“, len_val)) + if (len_val) { + if (!strncmp(pick, ”0“, len_val)) conf-》txglom_mode = FALSE; - else + else conf-》txglom_mode = TRUE; printf(”%s: txglom_mode = %dn“, __FUNCTION__, conf-》txglom_mode); } @@ -2332,9 +2332,9 @@ dhd_conf_preinit(dhd_pub_t *dhd) conf-》roam_delta[0] = 15; #endif conf-》roam_delta[1] = WLC_BAND_ALL; -#ifdef FULL_ROAMING_SCAN_PERIOD_60_SEC +#ifdef FULL_ROAMING_SCAN_PERIOD_60_SEC conf-》fullroamperiod = 60; -#else /* FULL_ROAMING_SCAN_PERIOD_60_SEC */ +#else /* FULL_ROAMING_SCAN_PERIOD_60_SEC */ conf-》fullroamperiod = 120; #endif /* FULL_ROAMING_SCAN_PERIOD_60_SEC */ #ifdef CUSTOM_KEEP_ALIVE_SETTING @@ -2374,7 +2374,7 @@ dhd_conf_preinit(dhd_pub_t *dhd) conf-》tcpack_sup_mode = TCPACK_SUP_OFF; #endif 配置-》dhd_poll = -1; -conf-》pktprio8021x = -1; + conf-》pktprio8021x = -1; conf-》txctl_tmo_fix = 假; conf-》tx_in_rx = TRUE; conf-》rsdb_mode = -2; @@ -2386,7 +2386,7 @@ dhd_conf_preinit(dhd_pub_t *dhd) if (conf-》chip == BCM43430_CHIP_ID) { conf-》bus_rxglom = FALSE; conf-》use_rxchain = 0; - } + } if (conf-》chip == BCM4339_CHIP_ID) { conf-》txbf = 1; } 2. 更新固件和nvram文件 kris@eco:~/rk3288/external/wlan_loader$ g st 在分支tek_dev 你的分支是最新的‘origin/tek_dev’。 未跟踪的文件:( 使用“git add 《file》。..”来包含将要提交的内容) firmware/fw_bcm4356a2_ag.bin firmware/fw_bcm4356a2_ag_apsta.bin firmware/fw_bcm4356a2_ag_p2p.bin firmware/nvram_ap6356.txt firmware/nvram_ap6356s.txt 注意: AP6356S包含额外的BT功能,因此也要更新,这里就不提供了。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
2487 浏览 0 评论
2802 浏览 1 评论
2292 浏览 1 评论
3624 浏览 1 评论
4376 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 06:41 , Processed in 0.600653 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号