完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
项目上需要实现网络功能,就在现有的基础上添加一个RTL8152芯片,实现USB转网口。
据说Linux上有现成的8152驱动,以为一切会很顺利,没想到等板子焊好之后懵逼了,不能用,这个为啥呢?回顾一下原始的过程。 现在内核中添加8152的驱动模块。 卧槽懵逼了,出来这么多去哪找有没有8152驱动啊? 先搜索一下。 看来就可以按照这个顺序去找,我这个是我已经配置好了之后去截图的,按道理应该默认是没有的。 确保这个打上了*。 如果之前主板上USB是可以用的话,这样的配置就已经完成了。要是USB配置还没有配置好,拿还要配置USB的驱动。 有些可能还要改dts,因为我这次修改的前提是主板上的USB是能用的,所以就用不到修改DTS文件。 改DTS可以参考一下这个大神的修改 配置好了之后,编译内核,然后烧写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 failn"); 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 "%sn", "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 failn"); } else if (!is_valid_ether_addr(sa.sa_data)) { netif_warn(tp, probe, dev, "Invalid ether addrn"); eth_hw_addr_random(dev); memcpy(sa.sa_data, dev->dev_addr, ETH_ALEN);//unsigned char dev_addr[MAX_ADDR_LEN] ETH_ALEN = 6 rtl8152_set_mac_address(dev, &sa); } else { if (tp->version == RTL_VER_01) memcpy(dev->dev_addr, sa.sa_data, ETH_ALEN); else ret = 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 } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1393 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
1463 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
3242 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 04:47 , Processed in 0.792217 second(s), Total 45, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号