7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S)

article/2025/9/22 4:03:29

本次主要参考:
荔枝nano开启RNDIS驱动,无需补丁。
https://github.com/peng-zhihui/Planck-Pi#head23
https://github.com/mangopi-sbc/buildroot-mangopi-r
https://www.cnblogs.com/listenscience/p/13758272.html
(如果方便请给这几位大佬一个关注)

注意代码块之间的空行

本次是摸索出来的,如果用到项目需慎重,有不足之处,欢迎指出。

1、修改驱动文件
1.1、在drivers/phy/allwinner/phy-sun4i-usb.c文件中,修改如下:
在第101行,插入如下代码:

suniv_f1c100s_phy,

插入后如下:
在这里插入图片描述
在第862行,添加如下代码:

static const struct sun4i_usb_phy_cfg suniv_f1c100s_cfg = {
    .num_phys = 1,
    .type = suniv_f1c100s_phy,
    .disc_thresh = 3,
    .phyctl_offset = REG_PHYCTL_A10,
    .dedicated_clocks = true,
};

添加后如下:
在这里插入图片描述
在第985行,插入如下代码:

{ .compatible = “allwinner,suniv-f1c100s-usb-phy”, .data = &suniv_f1c100s_cfg },

插入后如下:
在这里插入图片描述
1.2、在drivers/usb/musb/sunxi.c文件中,修改如下:
在第647~657行中间,代码修改如下:

/* SUNIV OTG supports only 3 endpoints */
#define SUNXI_MUSB_MAX_EP_NUM_SUNIV 4

static struct musb_fifo_cfg sunxi_musb_mode_cfg_suniv[] = {
    MUSB_EP_FIFO_SINGLE(1, FIFO_TX, 512),
    MUSB_EP_FIFO_SINGLE(1, FIFO_RX, 512),
    MUSB_EP_FIFO_SINGLE(2, FIFO_TX, 512),
    MUSB_EP_FIFO_SINGLE(2, FIFO_RX, 512),
    MUSB_EP_FIFO_SINGLE(3, FIFO_TX, 512),
    MUSB_EP_FIFO_SINGLE(3, FIFO_RX, 512),
};

修改后如下:
在这里插入图片描述

在第677~684行中间,代码修改如下:

static struct musb_hdrc_config sunxi_musb_hdrc_config_suniv = {
    .fifo_cfg = sunxi_musb_mode_cfg_suniv,
    .fifo_cfg_size = ARRAY_SIZE(sunxi_musb_mode_cfg_suniv),
    .multipoint = true,
    .dyn_fifo = true,
    .num_eps = SUNXI_MUSB_MAX_EP_NUM_SUNIV,
    .ram_bits = SUNXI_MUSB_RAM_BITS,
};

修改后如下:

在这里插入图片描述

在第728~733行中间,代码修改如下:

if (!of_device_is_compatible(np, “allwinner,sun8i-h3-musb”))
    pdata.config = &sunxi_musb_hdrc_config_h3;
else if (of_device_is_compatible(np, “allwinner,suniv-f1c100s-musb”))
    pdata.config = &sunxi_musb_hdrc_config_suniv;
else
    pdata.config = &sunxi_musb_hdrc_config;

修改后如下:在这里插入图片描述
在第739~741行中间,代码修改如下:

if (of_device_is_compatible(np, “allwinner,sun4i-a10-musb”) ||
    of_device_is_compatible(np, “allwinner,suniv-f1c100s-musb”))
    set_bit(SUNXI_MUSB_FL_HAS_SRAM, &glue->flags);

修改后如下:
在这里插入图片描述
在第746~751行中间,代码修改如下:

if (of_device_is_compatible(np, “allwinner,sun8i-a33-musb”) ||
    of_device_is_compatible(np, “allwinner,sun8i-h3-musb”) ||
    of_device_is_compatible(np, “allwinner,suniv-f1c100s-musb”)) {
    set_bit(SUNXI_MUSB_FL_HAS_RESET, &glue->flags);
    set_bit(SUNXI_MUSB_FL_NO_CONFIGDATA, &glue->flags);
}

修改后如下:
在这里插入图片描述
在第841行,插入代码如下:

{ .compatible = “allwinner,suniv-f1c100s-musb”, },

修改后如下:
在这里插入图片描述

2、配置设备树
2.1、修改suniv-f1c100s.dtsi文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s.dtsi文件。
在第9行插入如下代码:

#include “sunxi-common-regulators.dtsi”
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/dma/sun4i-a10.h>

插入代码后,如下:
在这里插入图片描述
在第289行插入如下代码:

	usb_otg: usb@1c13000 {compatible = "allwinner,suniv-f1c100s-musb";reg = <0x01c13000 0x0400>;clocks = <&ccu CLK_BUS_OTG>;resets = <&ccu RST_BUS_OTG>;interrupts = <26>;interrupt-names = "mc";phys = <&usbphy 0>;phy-names = "usb";extcon = <&usbphy 0>;allwinner,sram = <&otg_sram 1>;status = "disabled";};usbphy: phy@1c13400 {compatible = "allwinner,suniv-f1c100s-usb-phy";reg = <0x01c13400 0x10>;reg-names = "phy_ctrl";clocks = <&ccu CLK_USB_PHY0>;clock-names = "usb0_phy";resets = <&ccu RST_USB_PHY0>;reset-names = "usb0_reset";#phy-cells = <1>;status = "disabled";};

插入后如下:
在这里插入图片描述
2.2、修改suniv-f1c100s-licheepi-nano.dts文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts文件。
在文件最后插入如下代码:

&otg_sram {status = "okay";
};&usb_otg {dr_mode = "peripheral";status = "okay";
};&usbphy {/* usb0_id_det = <&pio 4 2 GPIO_ACTIVE_HIGH>; */ /* PE2 */status = "okay";
};

插入后如下:
在这里插入图片描述
3.选择usb驱动添加到内核:
在内核顶层目录下,输入make menuconfig,进行如下配置

 Device Drivers  --->[*] USB support  ---><*> Inventra Highspeed Dual Role ControllerMUSB Mode Selection (Dual Role mode)  --->  (这里要配置为Dual Role mode)*** Platform Glue Layer ***<*> Allwinner (sunxi)*** MUSB DMA mode ***[ ] Disable DMA (always use PIO)USB Physical Layer drivers  ---><*> NOP USB Transceiver Driver<*>   USB Gadget Support  ---><*>   USB Gadget functions configurable through configfs[*]     Ethernet Control Model (CDC ECM)[*]     Ethernet Control Model (CDC ECM) subset[*]     RNDIS[*]     Ethernet Emulation Model (EEM)[*]     Function filesystem (FunctionFS)USB Gadget precomposed configurations  ---><*> Ethernet Gadget (with CDC Ethernet support)[*]   RNDIS support<*> CDC Composite Device (Ethernet and ACM)

然后保存退出内核配置

4、最后按照之前的方法编译,并将新的内核与设备树文件,按照之前的方法在板子上运行,运行后不要拔下开发板与电脑连接的USB线。
开发板运行起来之后,在开发板命令行终端输入如下命令:

vi /etc/network/interfaces

在文件的最后插入如下代码:

allow-hotplug usb0
auto usb0
iface usb0 inet static
address 192.168.5.100
netmask 255.255.255.0
gateway 192.168.5.1

插入后,如下:
在这里插入图片描述

5、win7安装相关驱动
打开电脑设备管理器,在其他设备条目中,会看到RNDIS/Ethernet Gadget有感叹号。
驱动安装步骤如下:
5.1、右击RNDIS/Ethernet Gadget条目,选中更新驱动程序软件;
5.2、点击------浏览计算机以查找驱动程序软件;
5.3、点击------从计算机的设备驱动程序列表中选择;
5.4、选择网络适配器,并点击下一步;
5.5、厂商选择Microsoft Corporation,网络适配器选择Remote NDIS Compatible Device(实际测试选择Remote NDIS based Internet Share Device也可以),然后点击下一步,如有警告弹窗,点击是,等待安装完成。

6、win10安装相关驱动
当设备插入WIN10系统时,有的时候会识别为虚拟串口,更新以下驱动,可以实现USB网络功能(RNDIS)。

7、然后将开发板与电脑配置成同一个网段,一定要关闭电脑防火墙或者设置ip白名单,然后开发板与电脑就可以相互ping通。

QQ:763314235,会在第一时间处理。


http://chatgpt.dhexx.cn/article/askv90aN.shtml

相关文章

全志F1C200S F1C100S 介绍

很久以前发现了一颗性价比极高而且比较好玩的SOC&#xff0c;加群请仔细阅读本博客&#xff08;见DKTool界面&#xff0c;请备注“来自博客”&#xff09; 那就是全志F1C100S F1C200S&#xff0c;其中F1C100S内置32MB DDR1内存&#xff0c;F1C200S内置64MB DDR1内存。 这个片…

6、Lctech Pi(F1C200S)4.3寸(480*272)16位RGB565LCD屏驱动适配(CherryPi,Mangopi,F1C100S)

本次主要参考&#xff1a; https://blog.csdn.net/wending1986/article/details/106837597/ http://blog.chinaunix.net/uid-20543672-id-3246283.html https://wiki.sipeed.com/soft/Lichee/zh/Nano-Doc-Backup/index.html 李山文大佬 &#xff08;如果方便请给这几位大佬一个…

【F1C100S】编译启动所需的uboot,kernel,rootfs

个人画了块没有连接任何其他模块的F1C100S开发板&#xff0c;没有链接任何外设&#xff0c;本文是编译所有启动所需的三大件。&#xff08;只要编译出三个东西复制到sd卡就可启动&#xff0c;不需要制作成镜像img文件&#xff09; 环境&#xff1a;使用安装了ubuntu18的电脑进…

荔枝派nano(f1c100s)从零开始TF卡启动(附源码下载)

本文所使用的所有文件都已打包到SDK中&#xff0c;可以直接使用&#xff0c;有些细节我已省略&#xff0c;直接使用我包里的文件即可。 (无需积分&#xff0c;免费下载&#xff0c;里面的东西都来源于官方&#xff09; 觉得可以的&#xff0c;可以点个赞、点个关注&#xff0…

全志F1C100s使用记录:u-boot linux rootfs 编译与烧录测试(基于SD卡)

文章目录 目的基础准备硬件准备开发环境 制作toolchain和rootfs设置编译工具链 u-boot & linux编译u-bootboot.scrlinux 测试程序文件烧录分区设置分块烧录 上电测试系统镜像制作镜像文件使用镜像文件 可能会遇到的问题SDK数据包总结 目的 这篇文章中将测试在 F1C100s 中运…

【f1c200s/f1c100s】RGB接口 LCD驱动适配

【f1c200s/f1c100s】RGB接口 LCD驱动适配 RGB模式介绍F1C200s/F1C100s RGB LCD驱动适配设备树修改源码修改结果 RGB模式介绍 RGB 模式就是我们通过说的 RGB 屏&#xff0c;以 RGB&#xff08;TTL 信号&#xff09;并行数据线传输&#xff0c;广泛的应用于 5 寸及以上的 TFT-LC…

全志F1C100s入坑与填坑 uboot Linux Kernel 与buildroot

全志F1C100s 入手了几块全志的板子准备玩一玩随便记录一下&#xff01;&#xff01; 如图 是一块荔枝派 Nano 从sipeed官网可得如下介绍 官网传送门-----》 sipeed Nano 硬件参数# 硬件参数 CPU&#xff1a; 全志 F1C100s&#xff0c; ARM 926EJS , 最高 900MHz 内存&#xf…

全志F1C100S声卡驱动探究

如果有问题&#xff0c;请加QQ群 891339868 进行交流 最近刚上手全志的F1C100S这个片子&#xff0c;听一下音乐&#xff0c;本来想着挺简单&#xff0c;内核配置一下驱动就OK&#xff0c;谁知道上来就一闷棍&#xff0c;主线内核不支持内置声卡&#xff0c;经过多方面的研究&am…

【f1c200s/f1c100s】全志f1c200s开发板设计(含原理图和PCB)

f1c200s开发板设计 芯片特征开发板包含资源 开发板如图所示&#xff0c;模仿树莓派取了一个mango-pi的名字&#xff0c;haha~。 硬件主要参考了荔枝派nano和正点原子开发板。经过测试&#xff0c;全部功能正常。 芯片特征 全志F1C200s与F1C100s的区别为F1C200s含有64M SIP RA…

全志F1C100s使用记录:资料索引与基础说明

文章目录 前言资料来源u-boot & linux基础特性启动过程FEL模式电路设计 前言 最早接触到F1C100s是前两年的一个文章&#xff0c;里面使用F1C100s制作了一张可以运行Linux的名片&#xff0c;就是下图这个。下图上实际电路部分就占用角落一点点面积&#xff0c;当时觉得蛮有…

MySql 内连接与外连接 作用和 区别

内连接&#xff1a;指连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都应该符合连接条件。 外连接&#xff1a;连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。 左外连接&#xff1a;左边表数据行全部保留…

php左内连接,内连接和外连接的区别是什么

内连接和外连接的区别&#xff1a;1、连接结果不同&#xff0c;内连接的连接结果仅包含符合连接条件的行&#xff0c;而外连接的连接结果包含了符合连接条件的行&#xff1b;2、注意事项不同&#xff0c;内连接需要注意区分在嵌套查询时使用的any以及all的区别&#xff0c;外连…

Mysql内连接和外连接的区别

内连接 简单来说&#xff1a;就是根据交集的部分来链接到一条完整的数据&#xff0c;以此来完成查询 以两张表相同的部分来链接上两张表的数据&#xff0c;而不是说&#xff0c;内连接查询的就是交集的部分&#xff0c;那样查询出来的不就是表的id信息了或者仅仅是关联的信息 …

mysql内连接和左连接的区别_MySQL连接查询 内连接和外连接的区别

展开全部 内连接&#xff1a;指连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都应该符合连接条件。 外连62616964757a686964616fe78988e69d8331333363393638接&#xff1a;连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连…

mysql内外三种连接,mysql内连接和外连接的区别

以下面两张表为例来看一下内连接与外连接的区别&#xff1a; 一、内连接( 最常用 ) 定义&#xff1a;仅将两个表中满足连接条件的行组合起来作为结果集。 关键词&#xff1a;INNER JOINselect * from employees e inner join department d on e.employee_id d.department_id …

Sql 中内连接、外连接、全连接、交叉连接的区别

外连接(out join) 外连接分为外左连接(left outer join)和外右连接(right outer join) 注释&#xff1a;left outer join 与 left join 等价&#xff0c; 一般写成left join right outer join 与 right join等价&#xff0c;一般写成right join 左连接&#xf…

谈谈你对计算机的发展,结合您目前对计算机的认识,请您谈谈对计算机发展趋势的看法。...

计算机从出现至今&#xff0c;经历了机器语言、程序语言、简单操作系统和Linux、Macos、BSD、Windows等现代操作系统四代&#xff0c;运行速度也得到了极大的提升&#xff0c;第四代计算机的运算速度已经达到几十亿次每秒。 计算机也由原来的仅供军事科研使用发展到人人拥有&am…

对计算机科学与技术专业课程的认识,计算机科学与技术专业课程

计算机科学与技术专业课程计算机科学与技术专业课程 二、课程简介 TOP 1.数字逻辑电路: “数字逻辑”是计算机专业本科生的一门主要课程,具有自身的理论体系和很强的实践性。它是计算机组成原理的主要先导课程之一,是计算机应用专业关于计算机系统结构方面的主干课程之一。…

计算机网络技术的专业认识,计算机网络技术课程学习后的自我认识

计算机网络技术课程学习后的自我认识 随着计算机、多媒体、现代通讯网络为代表的信息技术的迅猛发展&#xff0c;信息技术已经渗透到了教育领域&#xff0c;在教育领域中引起了一场深刻的变化。小编是YJBYS小编整理的计算机网络技术课程学习后的自我认识&#xff0c;欢迎阅读 信…

计算机专业认识和规划,计算机科学与技术专业认识与规划

计算机科学与技术专业认识与规划 专业认识与规划专业认识与规划对于这个专业的学生&#xff0c;它要求学生的英语水平&#xff0c;数学水平很高。最主要的是&#xff0c;它的专业课程很多&#xff0c;很复杂&#xff0c;很累人&#xff0c;它需要你付出很多的努力&#xff0c;…