备注

  • 平台:Hi3516dv300
  • WiFi:AP6181 (AP6XXX应该都差不多,我猜的);SDIO2.0接口(时钟设置在50M左右,其他 SDIO3.0的设置在150M左右,电压设置在1.8V)。
  • kernel:Linux4.9
  • 驱动:BCM通用驱动1.363.59

硬件连接

WL_REG_ON 内部电源调节开关(就是WIFI开关)
WL_HOST_WAKE 外部信号唤醒(这个引脚取决于配置,配置成OOB则使用,IB不使用)
SDIO SDIO连接在SDIO1上(设备树添加MMC2)

备注: 如果使用了GPIO11则要注意,GPIO11的使用与PMC有关,
PMC要处于工作状态,RTC也要处于工作模式,PWR控制寄存器也要设置PMC域上的GPIO复用使能。

开始

  1. 将源码解压到kernel中的 drivers/net/wireless/ 目录
  2. 修改wireless里面的Kconfig,添加 source “drivers/net/wireless/bcmdhd/Kconfig”
  3. 修改wireless里面的Makefile,添加obj-$(CONFIG_BCMDHD) += bcmdhd/
  4. 修改驱动源码里面的dhd_gpio.c,对应上面硬件的两个引脚。(海思GPIO,8个一组,引脚号:GPIO2_3,就是2*8+3=19。)

内核配置

  • Network support->Wireless,设置cfg80211和mac80211。
  • 如果要使用iwconfig,iwlist调试工具,需要配置WEXT.
  • AP6181需要配置IPV6,Network support->Networking options,设置The IPv6 protocol 。
  • MMC相关和GPIO相关的默认已经配置好了,可以不管。
  • Device Device->Network device support->wireless LAN,设置Broadcom FullMAC wireless cards support(设置为M,方便调试),下面设置固件路径和接口,中断类型与上面硬件的WL_HOST_WAKE是否使用设置IB和OOB.

设备树修改

  • 设备树文件在kernel,arch/arm/boot/dts,里面有一个dts,和dtsi,一般只需要修改dts即可。
  • 在dts里面将MMC2设置为*“okay”*。
  • 在dtsi的mmc2中添加属性mmc-hs200-1_8v
  • 若上面的配置中断类型设置为IB,内部中断,则需要在dtsi的mmc2属性中添加cap-sdio-irq

uboot修改

  • Hi3516的SDIO1默认是没有配置成的SDIO复用的(刚开始没注意,被坑了好久)。
  1. 在U-boot目录下编译出U-boot.bin,复制到osdrv/tools/pc/uboot_tools/
  2. tools/pc/hi_gzip编译一下gzip,把bin文件复制到arch/arm/cpu/armv7/hi3516cv500/hw_compressed/
  3. 修改配置表格,在pinout里面配置对应的管脚成SDIO,之后在main里面点击Generate reg bin file(需要宏,注意检查宏是否开启),会生成reg_info.bin。
  4. 将reg_info.bin复制到U-boot目录,重命名成 .reg
  5. 执行make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin,生成的bin文件就是需要的U-boot。

调试

  • 编译内核和模块,烧录新的内核、U-boot、dtb(如果开始的U-boot没有传递设备树文件,这里要记得修改启动传参)
  • 加载ko,iwconfig(需要移植wireless_tools)或者ifconfig -a 查看是否有wlan0网口,有就初始化成功了。
  • ifconfig wlan0 up启动网口。看是否成功
  • 之后就可以移植wpa_supplicant,hostapd进一步调试。

海思HI3516移植使用AP6181 BCM43362相关推荐

  1. 海思Hi3516移植opencv以及错误调试

    opencv移植总结------------------------------------------------------------ 使用cmake-gui------------------ ...

  2. 海思3559移植yolov3

    此人博客上有完整教程: https://blog.csdn.net/avideointerfaces/article/category/8762084 海思3559移植yolov3 海思AI芯片(Hi ...

  3. 关于 海思Hi3516横竖屏Qt使用QGraphicsScene代理窗口强制旋转导致弹窗旋转与阴影不显示的 解决方案

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/128592671 红胖子(红模仿)的博文大全:开发技术集 ...

  4. 海思Hi3516使用srs-librtmp推送视频流至阿里直播平台

    srs-librtmp可以直接推送H264格式的rtmp数据流,所以可以将海思HI3516通过VENC编码后的H264裸流数据直接通过srs-librtmp发送到阿里直播平台. 这里需要注意的是srs ...

  5. 我的内核学习笔记16:海思Hi3516平台PWM使用记录

    本文介绍海思平台 Hi3516 的 PWM 使用,包括手册介绍及用户空间控制. 一.PWM 概览 芯片一共提供2路独立的 PWM,分别以 PWM0 和 PWM1 称呼.PWM 时钟有3种选择:3MHz ...

  6. 我的内核学习笔记15:海思Hi3516平台GPIO使用记录

    本文介绍海思平台 Hi3516 的 GPIO 使用,包括手册介绍及用户空间控制. 一.GPIO概览 Hi3516 芯片支持 12 组GPIO(General Purpose Input/Output) ...

  7. 海思Hi3559AV100移植Qt5.9.9(一)

    目录 前言 1 基础环境搭建 1.1 概述 1.2 Ubuntu虚拟机安装 1.2.1 准备 1.2.2 安装 1.3 软件包安装 2 安装编译SDK 2.1 准备 2.2 解压缩SDK 2.3 展开 ...

  8. 海思3559U-Boot移植(二):更换新的SPI Nand Flash

    前言:   在开发板上的折腾终归是小打小闹,真正的实践还需要从实际项目和自己参考画的板子选的器件入手,记录更换未经SDK包测试过的国产FLASH调试记录和踩到的坑,重点参考SDK文档包下的Releas ...

  9. gpio复用 海思_我的内核学习笔记15:海思Hi3516平台GPIO使用记录

    本文介绍海思平台 Hi3516 的 GPIO 使用,包括手册介绍及用户空间控制. 一.GPIO概览 Hi3516 芯片支持 12 组GPIO(General Purpose Input/Output) ...

最新文章

  1. windows共享wifi
  2. Codeforces Round #375 (Div. 2)
  3. mysql索引失效_导致MySQL索引失效的几种常见写法
  4. 4.android.mk编写规范
  5. Codeforces 666E. Forensic Examination
  6. 面试--输入一堆随机数(0-1000),这里面会有重复的数字,把他们去除掉。然后由大到小排列。
  7. Juniper大中国区于肇烈
  8. 关于电脑周边配件的问题
  9. linux指令 sed,Linux命令sed
  10. 蔚来ET5将于2022年9月开启交付 补贴前售价32.8万元起
  11. linux下tmux
  12. CheckBox复选框控件
  13. 网络通信数据传输原理
  14. cad插件加载bplot成功用不了_CAD批量打印,加载Batchplot.vlx那个。 为什么我电脑输入BPLOT命令后没反应啊??急急急,求大神们解救!...
  15. MMA8452Q 三轴加速度传感器驱动
  16. 最长递增子序列O(NlogN)算法
  17. 智能算法系列之粒子群优化算法
  18. 物联网应用技术学习内容及就业前景
  19. 50个BA分析工具第五个-Business Model Cavans
  20. CSS 滚动条: 自定义滚动条样式

热门文章

  1. Windows留后门--教程(二)——Windows计划任务后门
  2. 什么是线性表?线性表的特点,线性表的顺序存储和链式存储
  3. 解析信号与Matlab hilbert函数
  4. URL Scheme 简介
  5. win10安装linux子系统详细教程(非虚拟机方式)
  6. perl中grep用法总结 z
  7. 店宝宝:是什么事情让各大巨头抢着做?
  8. testtesttesttest
  9. table中实现div完全填充td
  10. 跨时钟域传输和Verilog代码