移植MT7620A+MT7610E驱动到Openwrt trunk(Linux Kernel 3.14.18)(续:MT7620A)
移植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)相关推荐
- Linux Kernel 5.14 arm64异常向量表解读-中断处理解读
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 5.14 文章目录 1.armv8-aarch64的异常向 ...
- 高通开发系列 - linux kernel更新msm-3.18升至msm-4.9
By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...
- 在mtk移植个linux内核,移植 Linux Kernel 造成無法開機之解決方案以及除錯工具
一般在以下情況, 我們會進行移植 Linux Kernel 的動作. 1. 將新版 Linux Kernel 移植到全新 SoC 上 開發人員為 SoC 廠商(e.g. MTK, TI, Allwin ...
- linux kernel有线网卡驱动enc28j60分析 一
1.为了更好低学习linux的网络驱动架构,本文选择分析linux kernel下的有线网卡驱动enc28j60来学习网络驱动架构. enc28j60是一个10/100Mb的有线网卡,适用于嵌入式设备 ...
- Android 核心已经从 Linux kernel 代码库中删除
Greg Kroah-Hartman Novell 的开发人员,他主要负责维护 Linux 操作系统的启动,USB和驱动核心,近日他表示谷歌 Android 系统的驱动核心 已经从 Linux ker ...
- Linux内核4.14版本——drm框架分析(1)——drm简介
目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 ...
- 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内核系列的一系列新更新. 这些新内核在他们之前发布的一 ...
- 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 ...
- 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. ...
- 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 ...
最新文章
- TLSAlloc()
- Angel Borja博士教你如何撰写科学论文三:Writing the first draft of your science paper — some dos and don’ts
- java设计模式adapter_Java设计模式--适配器(Adapter)模式
- [一起读源码]走进C#并发队列ConcurrentQueue的内部世界 — .NET Core篇
- 九度搜索引擎点击优化_吉林免费seo优化工具
- 报表的查询条件只能在数据上方吗?
- 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案...
- 竖版1:2500万标准中国地图
- 读史可以使人明智,鉴以往可以知未来
- Pigeon 工具类ExtensionLoader
- 干货|以产品要素设计解读线上小微信贷
- 王立柱《C语言程序设计》3.5.3
- teablue数据分析_数据分析-05 数据可视化
- android游戏和ios游戏哪个多,Android游戏类App占27.1% 与iOS差异显著
- python开发框架大全_最常用Python开源框架有哪些?
- DirectX9 10 11对比区别摘抄整理
- 开源mock server系统
- 正规的棋牌游戏开发公司需要具备哪些条件
- oc 协议 回调 静态成员_深入iOS系统底层之静态库
- 工程伦理第五章习题答案
热门文章
- 掌握这6个可视化图表,小白也能轻松玩转数据分析
- bifrostv配置文件_数据同步配置 - 全量任务配置 - 《Bifrost v1.1.0 中文文档》 - 书栈网 · BookStack...
- 增强现实(AR)智能眼镜的关键技术:标定、跟踪与交互
- 自己的服务器进不去显示403,HTTP 403错误:含义和解决方法
- Matlab的fprintf函数使用百分号问题
- 贪吃蛇python游戏
- 小程序各领域的代表出来溜大街了
- 面对对象原则:高内聚、低耦合
- 计算机网络 | 思科网络 | 什么是DHCPv4
- 移动端touch事件影响界面click/超链接事件无法点击