请忽略我的排版,抱歉。

项目上需要实现网络功能,就在现有的基础上添加一个RTL8152芯片,实现USB转网口。

据说Linux上有现成的8152驱动,以为一切会很顺利,没想到等板子焊好之后懵逼了,不能用,这个为啥呢?回顾一下原始的过程。

现在内核中添加8152的驱动模块。

卧槽懵逼了,出来这么多去哪找有没有8152驱动啊?

先搜索一下。

看来就可以按照这个顺序去找,我这个是我已经配置好了之后去截图的,按道理应该默认是没有的。

确保这个打上了*。

 如果之前主板上USB是可以用的话,这样的配置就已经完成了。要是USB配置还没有配置好,拿还要配置USB的驱动。

有些可能还要改dts,因为我这次修改的前提是主板上的USB是能用的,所以就用不到修改DTS文件。

改DTS可以参考一下这个大神的修改:

​​​​​​linux系统 RTL8152B网卡驱动移植-USB转网卡_u013921164的博客-CSDN博客

配置好了之后,编译内核,然后烧写kernel实验。

在r8152.c程序中添加自己的打印信息,分析代码有没有启动。

内核启动的时候有打印,真没驱动执行了。

但是主板就是没有网卡信息,仔细看打印的日志。

设备是挂载了,为什么不行呢?

 而且也是能够获取到网卡的?起了怪了,就只能靠猜测了,是不是没有MAC地址啊?

网上找找资料,有个大神也这么干。

在r8152.c文件中添加如下这段,设置一个随机MAC地址。

static int rtl8152_set_mac_address(struct net_device *netdev, void *p);//wanxu为了能够下面的函数调用,做声明
static inline void set_ethernet_addr(struct r8152 *tp)
{
#if 0//最原始的代码struct net_device *dev = tp->netdev;u8 *node_id;node_id = kmalloc(sizeof(u8) * 8, GFP_KERNEL);if (!node_id) {netif_err(tp, probe, dev, "out of memory");return;}if (pla_ocp_read(tp, PLA_IDR, sizeof(u8) * 8, node_id) < 0)netif_notice(tp, probe, dev, "inet addr fail\n");else {memcpy(dev->dev_addr, node_id, dev->addr_len);memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);}kfree(node_id);
#endif#if 1//wanxu 添加自动获取mac地址printk(KERN_INFO "%s\n", "wanxu add rtl8152_set_mac_address");struct net_device *dev = tp->netdev;struct sockaddr sa;int ret;ret = pla_ocp_read(tp, PLA_IDR, 8, sa.sa_data);if (ret < 0) {netif_err(tp, probe, dev, "ether addr fail\n");} else if (!is_valid_ether_addr(sa.sa_data)) {netif_warn(tp, probe, dev, "Invalid ether addr\n");eth_hw_addr_random(dev);memcpy(sa.sa_data, dev->dev_addr, ETH_ALEN);//unsigned char dev_addr[MAX_ADDR_LEN] ETH_ALEN = 6rtl8152_set_mac_address(dev, &sa);} else {if (tp->version == RTL_VER_01)memcpy(dev->dev_addr, sa.sa_data, ETH_ALEN);elseret = rtl8152_set_mac_address(dev, &sa);#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13)memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);#endif}
#endif
}

然后,奇迹就产生了,能用了,哈哈。感谢大神的文章。

https://blog.csdn.net/ruslan1/article/details/110499280?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

基于RK3288安卓Android5.1平台移植RTL8152驱动相关推荐

  1. 基于S3C2440的linux-3.6.6移植——LED驱动

    目前的linux版本的许多驱动都是基于设备模型,LED也不例外. 简单地说,设备模型就是系统认为所有的设备都是挂接在总线上的,而要使设备工作,就需要相应的驱动.设备模型会产生一个虚拟的文件系统--sy ...

  2. ART-PI平台移植Touchgfx 驱动gt9147 触摸屏幕点亮LED

    本篇文章用来介绍一下怎么使用RTThread Studio 在ART-PI平台上面移植TouchGFX,并做一个简单的触摸按键让LED灯闪烁试验. 我使用的液晶屏幕是正点原子的4.3寸RGBLCD,触 ...

  3. 基于S3C2440的Linux-3.6.6移植——声卡驱动

    Linux的ALSA声卡驱动较为复杂,它需要注册多个平台设备.在mach-zhaocj2440.c文件中的平台设备数组内一共有四个与ALSA相关的平台设备: &s3c_device_iis, ...

  4. 基于rk3288平台的gt9xx 触摸驱动移植

                                              基于rk3288平台的gt9xx 触摸驱动移植 一.硬件介绍:     1 core-rk3288j 核心板     ...

  5. 基于原生开发的全新中文安卓应用开发平台

    VcnStudio基于原生开发的全新中文安卓应用开发平台 简介 新版特征 界面预览 后记 简介 VcnStudio 全称为Visual Chinese Studio:是一款依照现有的开发语言进行扩展使 ...

  6. 基于Anycloud平台移植Zbar

    基于Anycloud平台移植Zbar 0. 环境准备 zbar 下载 官网ZBar bar code reader (sourceforge.net)下载代码zbar-0.10.tar.bz2 下载i ...

  7. 基于RK3288 平台 Simple card声卡添加及调试

        基于RK3288 平台 Simple card声卡添加及调试 Simple card即简单通用的machine driver, 如果simple-card框架足够满足需求,建议优先使用simp ...

  8. 基于MSM平台的振动器驱动移植

    前言: 振动器是Android智能手机操作系统中比较常见的功能之一,在实际应用中可以将来电显示设置为振动模式作为提醒.在Android系统中,通过振动系统米快可以实现俩点铃声和来电的振动功能..本篇b ...

  9. 安卓底层linux开发教程,Android手机平台移植与底层开发 PDF

    支持Android的热门ARM硬件平台简介 ARMv7架构SOC l TI OMAP系列,2009年OMAP3和OMAP4关注度较高 l Freescale i.MX51系列 l Qualcomm 8 ...

最新文章

  1. Codeforces 300E(数学)
  2. 电击、警棍、爆头,被骗去柬埔寨的程序员有多惨?
  3. 6月8号=》105页-110页
  4. POJ1195Mobile phones
  5. kafka可视化客户端工具(Kafka Tool)的基本使用
  6. 课程分类管理-添加课程分类
  7. 谈谈JAVA中的安全发布
  8. 平均年薪60.8万!拿下这个证书,算法岗直接起飞!
  9. jetty源码阅读总结1
  10. 免费下载天地图全国基础地理信息矢量数据的一种方法
  11. AdBlock Plus 大幅飙升 Firefox 内存开销
  12. 一招教你表格里面给方框内打勾
  13. 基于wifi的物联网技术,主要有哪些优势?
  14. js中获取月份date.getMonth()获取的是0-11
  15. Matlab中如何定义和使用colormap?|colormap的使用
  16. 解决gitee/github上传图片数量受限
  17. python提取图片中的文字
  18. Android Studio ---------------- 软件使用小细节(更新中。。。。。。)
  19. Mybatis的_parameter使用
  20. ROS path问题解决方案

热门文章

  1. Python优缺点总结
  2. 计算机网络第一章概述总结知识点
  3. 遗传算法(GA)详解
  4. 传奇GM操作教程方法
  5. 2022-4-15 基于单片机的超声波测距报警
  6. sniffer(Wireshark)抓包
  7. 2008服务器注销设置,windows-server-2008 – 终端服务器在5分钟后注销用户
  8. 记2018年北航夏令营+机试面试心得体会
  9. 专栏 | 香侬科技独家对话Facebook AI研究院首席科学家Devi Perikh
  10. 浅谈Linux内核无锁编程原理