记录mt7615e wifi 驱动移植到openwrt cc

此文章只作记录参考,如果文章中有错误或者不足, 请指正, 谢谢!

准备工作:

  1. 要移植驱动 , 必须找到原厂 SDK 的WIFI驱动, 代码虽非开源, 但在论坛里面大多能下载, 搜索mtk-openwrt-sdk-20170518-1443366e.tar 找到并下载, 博主这里就不提供了.

  2. 解压编译原厂SDK包, 编译MT7621 +MT7615E驱动,因为博主是以K2P 来移植, 添加了一个型号, 添加型号方法参考openwrt WIKI, 这里不过多介绍.

  3. 获取CC版本源代码git clone https://github.com/openwrt/chaos_calmer ,编译MT7621主芯片(这里选用相同的主要是作对比用,如果其他主芯片可以换).

开始移植

  1. 将原厂SDK $(TOPDIR)/package/ralink/ 目录拷贝到cc $(TOPDIR)/package/ 目录下,.

  2. 将原厂SDK $(TOPDIR)/dl/MT7615_LinuxAP_V4.4.1.2_20170514.tar.bz2 文件拷贝到cc $(TOPDIR)/dl/ 目录下

  3. 将 原厂SDK $(TOPDIR)/include/wifi.mk 文件拷贝到cc $(TOPDIR)/include/ 下, 对比SDK和cc $(TOPDIR)/include/kernel-default.mk文件将包含的wifi.mk 行复制到对应行, 如下, + 号行代表cc $(TOPDIR)/include/kernel-default.mk 文件中需要添加.

-
+include $(INCLUDE_DIR)/wifi.mk
 KERNEL_MAKEOPTS := -C $(LINUX_DIR) \
 	HOSTCFLAGS="$(HOST_CFLAGS) -Wall -Wmissing-prototypes -Wstrict-prototypes" \
 	CROSS_COMPILE="$(KERNEL_CROSS)" \
@@ -32,6 +32,7 @@ export HOST_EXTRACFLAGS=-I$(STAGING_DIR_HOST)/include
 
 # defined in quilt.mk
 Kernel/Patch:=$(Kernel/Patch/Default)
+WiFi/Patch:=$(WiFi/Patch/Default)
 
 KERNEL_GIT_OPTS:=
 ifneq ($(strip $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY)),"")
@@ -47,6 +48,7 @@ ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
     define Kernel/Prepare/Default
 	xzcat $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
 	$(Kernel/Patch)
+	$(call wifi-prepare)
 	touch $(LINUX_DIR)/.quilt_used
     endef
   else
  1. 上述步骤做完后, 会发现依然没有编译选项去编译MT7615E的WIFI驱动, 对比编译目录linux的内核文件, 没有Kconfig 配置目录,将SDK $(LINUX)/ralink/ 目录 拷贝出来,放在cc 的目录下,这个目录由你自己决定, 因为后面可以选择是补丁的形式放到内核,或者在kernel-default.mk 内核解压后以拷贝的方式放进去, 我这里是选择拷贝,代码写在wifi.mk里面方便管理.
    下面的补丁文件以及rt_mmap.h, ralink-flash.c ralink-flash.h(编译时会报找不到头文件里面的内容,所以加入) ,用find 在SDK里面找.
    直接用rt_mmap.h这个文件,依然提示会找不到 RALINK_SYSCTL_BASE, 因为在cc中没有定义CONFIG_RALINK_MT7621,所以需要添加,或者改成其他可以的宏定义即可.

也可以下载: https://download.csdn.net/download/jianzhizuo/10844586

+	cp -f $(TOPDIR)/package/ramips/patch_file/1000-add-ramips-mt7615.patch $(TOPDIR)/target/linux/ramips/patches-3.18/
+	cp -f $(TOPDIR)/package/ramips/patch_file/1604-mt7615-buildin.patch $(TOPDIR)/target/linux/ramips/patches-3.18/
+	cp -rf $(TOPDIR)/package/ramips/ralink  $(LINUX_DIR);
+	cp -f $(TOPDIR)/package/ramips/patch_file/ralink-flash*   $(LINUX_DIR)/drivers/mtd/maps/
+	mkdir -p $(LINUX_DIR)/arch/mips/include/asm/rt2880
+	mkdir -p $(LINUX_DIR)/user_headers/include/asm/rt2880
+	cp -f $(TOPDIR)/package/ramips/patch_file/rt_mmap.h   $(LINUX_DIR)/arch/mips/include/asm/rt2880/
+	cp -f $(TOPDIR)/package/ramips/patch_file/rt_mmap.h   $(LINUX_DIR)/user_headers/include/asm/rt2880/
  1. 一个坑, 无法读取到eeprom 文件里面的mac地址, 还需要修改一个地方, MTK 在读取Factory 分区是写死的Factory,而cc默认这个分区是factory 小写f ,所以要改一下dts 对应或者修改驱动代码如下文件.

在这里插入图片描述

写在结尾

同版本内核移植并不难, 只是对比文件比较繁琐, 记录下只是想在后面移植其他驱动时方便查找
已经把MT7628的驱动也移植好了, 后面会写博文补充

如果你也在移植 按照这样修改还没有移植成功, 可能是我在记录时,少记录了些东西, 可以在下面留言,
因为你遇到的坑,我肯定也遇到过.

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
移植WiFi驱动是将适用于特定硬件平台的驱动程序适配到OpenWrt操作系统上的过程。在移植过程中,我们需要了解特定的硬件平台和所需的驱动程序。 首先,我们需要确定所使用的硬件平台的型号和制造商。这可以通过查询设备的规格和型号来得到。了解硬件平台的具体信息对于寻找并移植相应的驱动程序至关重要。 接下来,我们需要找到与所使用硬件平台兼容的驱动程序。OpenWrt社区提供了大量的驱动程序,可以从OpenWrt的官方网站或各种开发者社区中获取。可以通过查看类似硬件平台的设备的驱动程序,或者通过与其他开发者交流来找到合适的驱动程序。 一旦找到兼容的驱动程序,就需要将其移植OpenWrt操作系统中。这个过程涉及分析驱动程序的源代码,并进行适当的修改以适应OpenWrt的内核和环境。这可能涉及到处理与OpenWrt不兼容的底层接口、库和头文件等问题。 在移植过程中,可能会遇到一些问题,例如编译错误、依赖项缺失等。解决这些问题通常需要深入了解驱动程序的源代码,以及OpenWrt操作系统的配置和编译流程。这可能需要花费一些时间和精力来解决。 当驱动程序成功移植OpenWrt操作系统后,我们就可以在该系统上使用相应的WiFi功能。我们需要根据OpenWrt的指南进行一些配置,并确保驱动程序正确加载和使用。 总结来说,移植WiFi驱动是一个复杂的过程,需要对硬件平台和驱动程序的工作原理有深入的理解。只有在成功移植并正确配置驱动程序后,我们才能在OpenWrt操作系统中使用WiFi功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值