移植MT7620A+MT7610E驱动到Openwrt trunk(Linux Kernel 3.14.18)(续:MT7620A)

按照上一篇的内容修改文件重新编译后不会报错,但是烧到flash里后运行的时候有问题,如下:

[   16.840000] mt7620: module license 'unspecified' taints kernel.
[   16.840000] Disabling lock debugging due to kernel taint
[   16.870000] mt7620: Unknown symbol ra_mtd_write_nm (err 0)
[   16.880000] mt7620: Unknown symbol ra_mtd_read_nm (err 0)
[   16.880000] mt7620: Unknown symbol procRegDir (err 0)
[   17.290000] mt7610: Unknown symbol ra_mtd_write_nm (err 0)
[   17.290000] mt7610: Unknown symbol ra_mtd_read_nm (err 0)
[   17.290000] mt7610: Unknown symbol procRegDir (err 0)
[   17.290000] mt7620: Unknown symbol ra_mtd_write_nm (err 0)
[   17.290000] mt7620: Unknown symbol ra_mtd_read_nm (err 0)
[   17.290000] mt7620: Unknown symbol procRegDir (err 0)
[   17.290000] ip_tables: (C) 2000-2006 Netfilter Core Team
[   17.290000] mt7610: Unknown symbol ra_mtd_write_nm (err 0)
[   17.620000] mt7610: Unknown symbol ra_mtd_read_nm (err 0)
[   17.620000] mt7610: Unknown symbol procRegDir (err 0)
[   17.670000] mt7620: Unknown symbol ra_mtd_write_nm (err 0)
[   17.690000] mt7620: Unknown symbol ra_mtd_read_nm (err 0)
[   17.690000] mt7620: Unknown symbol procRegDir (err 0)
[   17.700000] nf_conntrack version 0.5.0 (1979 buckets, 7916 max)
[   17.740000] xt_time: kernel timezone is -0000
[   17.780000] mt7610: Unknown symbol ra_mtd_write_nm (err 0)
[   17.800000] mt7610: Unknown symbol ra_mtd_read_nm (err 0)
[   17.800000] mt7610: Unknown symbol procRegDir (err 0)
[   17.860000] mt7620: Unknown symbol ra_mtd_write_nm (err 0)
[   17.880000] mt7620: Unknown symbol ra_mtd_read_nm (err 0)
[   17.880000] mt7620: Unknown symbol procRegDir (err 0)
[   17.900000] PPP generic driver version 2.4.2
[   17.900000] NET: Registered protocol family 24
[   17.940000] mt7610: Unknown symbol ra_mtd_write_nm (err 0)
[   17.960000] mt7610: Unknown symbol ra_mtd_read_nm (err 0)
[   17.960000] mt7610: Unknown symbol procRegDir (err 0)
[   18.020000] mt7620: Unknown symbol ra_mtd_write_nm (err 0)
[   18.020000] mt7620: Unknown symbol ra_mtd_read_nm (err 0)
[   18.040000] mt7620: Unknown symbol procRegDir (err 0)
[   18.080000] mt7610: Unknown symbol ra_mtd_write_nm (err 0)
[   18.090000] mt7610: Unknown symbol ra_mtd_read_nm (err 0)
[   18.100000] mt7610: Unknown symbol procRegDir (err 0)
[   18.160000] mt7620: Unknown symbol ra_mtd_write_nm (err 0)
[   18.160000] mt7620: Unknown symbol ra_mtd_read_nm (err 0)
[   18.180000] mt7620: Unknown symbol procRegDir (err 0)
[   28.440000] device eth0.1 entered promiscuous mode

解决方法

移植7620

1. 添加os/linux/rt_flash.c 内容为

#include <linux/module.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/err.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/sched.h>
#include <linux/backing-dev.h>
#include <linux/compat.h>
#include <linux/mount.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/map.h>
#include <linux/mtd/concat.h>
#include <linux/mtd/partitions.h>struct proc_dir_entry *procRegDir;
/** Flash API: ra_mtd_read, ra_mtd_write* Arguments:*   - num: specific the mtd number*   - to/from: the offset to read from or written to*   - len: length*   - buf: data to be read/written* Returns:*   - return -errno if failed*   - return the number of bytes read/written if successed*/
int ra_mtd_write_nm(char *name, loff_t to, size_t len, const u_char *buf)
{int ret = -1;size_t rdlen, wrlen;struct mtd_info *mtd;struct erase_info ei;u_char *bak = NULL;mtd = get_mtd_device_nm(name);if (IS_ERR(mtd)) {ret = (int)mtd;goto out;}if (len > mtd->erasesize) {put_mtd_device(mtd);ret = -E2BIG;goto out;}bak = kzalloc(mtd->erasesize, GFP_KERNEL);if (bak == NULL) {put_mtd_device(mtd);ret = -ENOMEM;goto out;}#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)ret = mtd_read(mtd, 0, mtd->erasesize, &rdlen, bak);
#elseret = mtd->read(mtd, 0, mtd->erasesize, &rdlen, bak);
#endifif (ret) {goto free_out;}if (rdlen != mtd->erasesize)printk("warning: ra_mtd_write_nm: rdlen is not equal to erasesize\n");memcpy(bak + to, buf, len);ei.mtd = mtd;ei.callback = NULL;ei.addr = 0;ei.len = mtd->erasesize;ei.priv = 0;#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)ret = mtd_erase(mtd, &ei);
#elseret = mtd->erase(mtd, &ei);
#endifif (ret != 0)goto free_out;#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)ret = mtd_write(mtd, 0, mtd->erasesize, &wrlen, bak);
#elseret = mtd->write(mtd, 0, mtd->erasesize, &wrlen, bak);
#endifudelay(10); /* add delay after write */free_out:if (mtd)put_mtd_device(mtd);if (bak)kfree(bak);
out:return ret;
}int ra_mtd_read_nm(char *name, loff_t from, size_t len, u_char *buf)
{int ret;size_t rdlen = 0;struct mtd_info *mtd;mtd = get_mtd_device_nm(name);if (IS_ERR(mtd))return (int)mtd;#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)ret = mtd_read(mtd, from, len, &rdlen, buf);
#elseret = mtd->read(mtd, from, len, &rdlen, buf);
#endifif (rdlen != len)printk("warning: ra_mtd_read_nm: rdlen is not equal to len\n");put_mtd_device(mtd);return ret;
}EXPORT_SYMBOL(ra_mtd_write_nm);
EXPORT_SYMBOL(ra_mtd_read_nm);
EXPORT_SYMBOL(procRegDir);MODULE_AUTHOR("Steven Liu <steven_liu@ralinktech.com.tw>");
MODULE_DESCRIPTION("Ralink APSoC Flash Map");
MODULE_LICENSE("GPL");

2. 修改os/linux/rt_proc.c

struct proc_dir_entry *procRegDir

改为:

struct proc_dir_entry *procRegDir2860v2

并将该文件中所有调用procRegDir 的地方改为: procRegDir2860v2

3. 在Makefile中添加

rt2860v2_ap-objs += ../rt2860v2/os/linux/rt_flash.o

4. 修改 include/chip/rt2880.h

将:

#include <asm/rt2880/rt_mmap.h>

改为:

#include "rt_mmap.h" //fix

5. 修改 include/iface/rtmp_rbs.h

将:

#define RTMP_MAC_IRQ_NUM    4

改为

#define RTMP_MAC_IRQ_NUM    6

6. 修改 include/video.h

添加

VOID VideoTurbineDynamicTune(IN PRTMP_ADAPTER pAd);

移植MT7620A+MT7610E驱动到Openwrt trunk(Linux Kernel 3.14.18)(续:MT7620A)相关推荐

  1. Linux Kernel 5.14 arm64异常向量表解读-中断处理解读

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 5.14 文章目录 1.armv8-aarch64的异常向 ...

  2. 高通开发系列 - linux kernel更新msm-3.18升至msm-4.9

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...

  3. 在mtk移植个linux内核,移植 Linux Kernel 造成無法開機之解決方案以及除錯工具

    一般在以下情況, 我們會進行移植 Linux Kernel 的動作. 1. 將新版 Linux Kernel 移植到全新 SoC 上 開發人員為 SoC 廠商(e.g. MTK, TI, Allwin ...

  4. linux kernel有线网卡驱动enc28j60分析 一

    1.为了更好低学习linux的网络驱动架构,本文选择分析linux kernel下的有线网卡驱动enc28j60来学习网络驱动架构. enc28j60是一个10/100Mb的有线网卡,适用于嵌入式设备 ...

  5. Android 核心已经从 Linux kernel 代码库中删除

    Greg Kroah-Hartman Novell 的开发人员,他主要负责维护 Linux 操作系统的启动,USB和驱动核心,近日他表示谷歌 Android 系统的驱动核心 已经从 Linux ker ...

  6. Linux内核4.14版本——drm框架分析(1)——drm简介

    目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 ...

  7. linux4.14内核,Linux内核4.14.14,4.9.77,4.4.112和3.18.92更新发布

    导读 正如所承诺的,Linux内核维护者Greg Kroah-Hartman今天发布了针对长期支持的Linux 4.14,4.9,4.4和3.18内核系列的一系列新更新. 这些新内核在他们之前发布的一 ...

  8. linux内核3.14.4,Linux内核4.14.14,4.9.77,4.4.112和3.18.92更新发布

    原标题:Linux内核4.14.14,4.9.77,4.4.112和3.18.92更新发布 导读 正如所承诺的,Linux内核维护者Greg Kroah-Hartman今天发布了针对长期支持的Linu ...

  9. linux内核关闭igmp,Linux kernel IGMP多个安全漏洞

    受影响系统: Linux kernel 2.6.9 Linux kernel 2.6.8 Linux kernel 2.6.7 Linux kernel 2.6.6 Linux kernel 2.6. ...

  10. linux内核漏洞分类,blog/linux kernel double-free类型漏洞的利用.md at master · snorez/blog · GitHub...

    对linux kernel double-free类型漏洞的较通用利用方法 update Wed Nov 29 16:39:01 HKT 2017 linux kernel 4.14 released ...

最新文章

  1. TLSAlloc()
  2. Angel Borja博士教你如何撰写科学论文三:Writing the first draft of your science paper — some dos and don’ts
  3. java设计模式adapter_Java设计模式--适配器(Adapter)模式
  4. [一起读源码]走进C#并发队列ConcurrentQueue的内部世界 — .NET Core篇
  5. 九度搜索引擎点击优化_吉林免费seo优化工具
  6. 报表的查询条件只能在数据上方吗?
  7. 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案...
  8. 竖版1:2500万标准中国地图
  9. 读史可以使人明智,鉴以往可以知未来
  10. Pigeon 工具类ExtensionLoader
  11. 干货|以产品要素设计解读线上小微信贷
  12. 王立柱《C语言程序设计》3.5.3
  13. teablue数据分析_数据分析-05 数据可视化
  14. android游戏和ios游戏哪个多,Android游戏类App占27.1% 与iOS差异显著
  15. python开发框架大全_最常用Python开源框架有哪些?
  16. DirectX9 10 11对比区别摘抄整理
  17. 开源mock server系统
  18. 正规的棋牌游戏开发公司需要具备哪些条件
  19. oc 协议 回调 静态成员_深入iOS系统底层之静态库
  20. 工程伦理第五章习题答案

热门文章

  1. 掌握这6个可视化图表,小白也能轻松玩转数据分析
  2. bifrostv配置文件_数据同步配置 - 全量任务配置 - 《Bifrost v1.1.0 中文文档》 - 书栈网 · BookStack...
  3. 增强现实(AR)智能眼镜的关键技术:标定、跟踪与交互
  4. 自己的服务器进不去显示403,HTTP 403错误:含义和解决方法
  5. Matlab的fprintf函数使用百分号问题
  6. 贪吃蛇python游戏
  7. 小程序各领域的代表出来溜大街了
  8. 面对对象原则:高内聚、低耦合
  9. 计算机网络 | 思科网络 | 什么是DHCPv4
  10. 移动端touch事件影响界面click/超链接事件无法点击