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

这篇具有很好参考价值的文章主要介绍了7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次主要参考:
荔枝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,

插入后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
在第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,
};

添加后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
在第985行,插入如下代码:

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

插入后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
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),
};

修改后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux

在第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,
};

修改后如下:

7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux

在第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;

修改后如下:7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
在第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);

修改后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
在第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);
}

修改后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
在第841行,插入代码如下:

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

修改后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux

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>

插入代码后,如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
在第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";
	};

插入后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
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";
};

插入后如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux
3.选择usb驱动添加到内核:
在内核顶层目录下,输入make menuconfig,进行如下配置

 Device Drivers  --->
     [*] USB support  --->
        <*> Inventra Highspeed Dual Role Controller
                MUSB 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

插入后,如下:
7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S),F1C200S,arm,物联网,嵌入式硬件,linux

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,会在第一时间处理。文章来源地址https://www.toymoban.com/news/detail-518959.html

到了这里,关于7、Lctech Pi(F1C200S)开启RNDIS,通过USB与电脑联网(CherryPi,Mangopi,F1C100S)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>

    目录 一、bootloader、kernel、rootfs联系 二、内核移植 1. 内核源码获取 2. 内核配置与编译 🍍 基础配置与编译 🍍 TF卡分区 🍍 内核烧录 三、参考内容 kernel可以理解为一个 庞大的裸机程序 ,和uboot以及其他比如点灯类似的裸机程序没有本质区别,只是kernel分为 用户态和内核态

    2024年02月15日
    浏览(85)
  • 全志F1C200S嵌入式驱动开发(串口驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         对于uboot、kernel和rootfs来说,他们的串口输出一般都是uart0。一般这么做,是没有问题的。只不过我们自己买的这块f1c200s电路板,设计者把uart转ttl的接口,改接到了uart1上面。不过这样

    2024年02月16日
    浏览(78)
  • 全志F1C200S嵌入式驱动开发(GPIO输出)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         和v3s一样,f1c200s本身的外部引脚比较少。所以这个时候,不可避免地,很多引脚的功能就会重叠在一起。这种情况下,我们就要学会取舍了。比如说,如果是学习sd卡的时候,那么s

    2024年02月16日
    浏览(45)
  • 全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数

    2024年02月14日
    浏览(45)
  • 全志F1C200S嵌入式驱动开发(soc系统集成)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         任何一个嵌入式设备都是由很多的子系统组成的。这里面有硬件、有软件,还可能有机械,并不一定就是大家看到的消费电子那样,即一个soc构成了所有的系统。现实情况是,要构建

    2024年02月12日
    浏览(39)
  • 全志F1C200S嵌入式驱动开发(从DDR中截取内存)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         linux内核起来的时候,不一定所有的内存都是分配给linux使用的。有的时候,我们是希望能够截留一部分内存的。为什么保留这部分内存呢?这里面可以有很多的用途。 比如说,第一,

    2024年02月14日
    浏览(41)
  • 全志F1C200S嵌入式驱动开发(spi-nand驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         和v3s一样,f1c200s也支持tf卡、spi-nor、spi-nand启动。前面也说过,tf卡由于机械结构的原因,更适合拿来学习,spi-nor和spi-nand比较适合用来进行工业部署和消费娱乐领域。只是spi-nor容量

    2024年02月16日
    浏览(58)
  • 全志F1C200S嵌入式驱动开发(调整cpu频率和dram频率)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         f1c200s默认的cpu频率是408M,默认的dram频率是156M。这两个数值,坦白说,都算不上特别高的频率。因为我们的晶振是24M输入,所以408/24=17,相当于整个cpu的频率只是晶振倍频了17倍。然

    2024年02月15日
    浏览(59)
  • 全志F1C200S嵌入式驱动开发(spi-nor image制作)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         一般soc系统里面添加spi-nor flash芯片,特别是对linux soc来说,都是把它当成文件系统来使用的。spi-nor flash和spi-nand flash相比,虽然空间小了点,但是胜在稳定,这是很多工业场景所必须

    2024年02月16日
    浏览(44)
  • 稚晖君又整活啦,基于全志F1C200s的超迷你&低成本开发板开源

    B站最强小电视(基于全志H3) 钢铁侠机械臂 曾经靠着“B站最强小电视”以及号称“钢铁侠机械臂”等硬核产品出圈的稚晖君又双叒叕来整活啦! 这次稚晖君开源了基于全志F1C200s的一个超迷你低成本的Linux开发板,项目名为Planck Pi,F1C200s采用的ARM9架构,SIP内置DDR的极简封装

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包