正点原子嵌入式linux驱动开发——Linux 4G通信

news2024/11/27 18:36:39

前面学习了如何在Linux中使用有线网络或者WIFI,但是使用有线网络或者WIFI有很多限制,因为要布线,即使是WIFI也得先布线,然后再接个无线路由器。有很多场合是不方便布线的,这个时候就是4G大显身手的时候,产品可以直接通过4G连接到网络,实现无人值守。本章就来学一下如何在STM32MP157开发板中使用4G来实现联网功能

4G网络连接简介

4G网络连接,对于嵌入式Linux而言,4G网络连接其实不难!可以看一下其他的嵌入式Linux或者Android开发板,4G模块都是MiniPCIE接口的,包括很多4G模块都是MiniPCIE接口的。但是稍微深入研究一下就会发现,这些4G模块虽然用了MiniPCIE接口,但是实际上的通信接口都是USB,所以4G模块的驱动就转换为了USB驱动。而这些4G模块厂商都提供了详细的文档讲解如何在Linux下使用4G模块,以及如何修改Linux内核加入4G模块驱动。正点原子的STM32MP157开发板也有一个MiniPCIE形式的4G模块接口,虽然外形是MiniPCIE的,但是其实就是USB的。STM32MP157开发板的4G模块原理图如下图所示:

4g模块原理图

上图中的U22就是MiniPCIE接口,MiniPCIE接口连接到了FE2.1这个HUB芯片的DP7和DM7。U26就是Nano SIM接口,STM32MP157开发板使用Nano SIM卡,这样就可以直接拿自己的手机卡进行测试。STM32MP157开发板的4G接口位置如下图所示:

ALPHA开发板4G接口

在使用之前需要将4G模块插入到上图所示的MiniPCIE接口上,然后上紧两边的螺丝,Nano SIM卡插入到上图中的Nano SIM座里面,注意Nano SIM卡的方向!

Nano SIM 卡的金属触点朝下!

理论上所有的MiniPCIE接口的4G模块都可以连接到正点原子的STM32MP157开发板上,因为这些4G模块都遵循同样的接口标准,但是在使用的时候还是要详细的看一下4G模块的接口引脚描述。不同的4G模块其驱动形式也不同,本章讲解两款4G模块在开发板上的使用,一个是上海移远公司的EC20,另外一个是高新兴物联的ME3630,这两款4G模块都有MiniPCIE接口的,这两个4G模块如下图所示:

4G模块

上图中左侧的是高新兴物联的ME3630-W 4G模块,右侧的是上海移远的EC20 4G模块。本章就分别来讲解一下如何在开发板上使用EC20和ME3630这两个4G模块。

4G模块工作是需要天线的,因此在选购4G模块的时候一定要记得购买天线,否则无法进行测试。一般MiniPCIE接口的4G模块留出来的天线接口为IPEX座,因此购买天线的时候也要选择IPEX接口的,或者使用IPEX转SMA线来转接。

高新兴ME3630 4G模块实验

ME3630 4G模块简介

ME3630是一款LTE Cat.4七模全网通4G模块,在LTE模式下可以提供50Mbps上行速率以及150Mbps的下行速率,并支持回退到3G或2G网络。此模组支持分集接收、分集接收是终端产品支持双天线以提高通信质量和通信可靠性的无线连接技术ME3630支持多种网络协议,比如PAP、CHAP、PPP等,拥有多种功能,比如GNSS、Remote wakeup、SMS、支持FoTA空中升级等。ME3630 4G模块广泛应用于智能抄表、安防信息采集、工业路由器、车载通信以及监控等等M2M领域。ME3630 4G模组特性如下:

  1. 一路USB2.0接口。
  2. 一路UART接口。
  3. SIM卡接口支持1.8/3.0V。
  4. 内置TCP、UDP、FTP和HTTP等协议。
  5. 支持RAS/ECM/NDIS。
  6. 支持AT指令。

ME3630 4G模块有多种配置,比如纯数据版本、集成GNSS版本、全网通版本等等,本节教程主要使用到ME3630的数据通信功能,因此推荐大家购买全网通数据版,如果想要定位功能的话就购买全网通数据+GNSS版本,至于其他的版本大家根据自己的实际需求选择即可。在正式使用ME3630 4G模块之前,请先将其插入到开发板的MiniPCIE 座上、上紧螺、插入Nano SIM卡、接上天线,如下图所示:

开发板连接ME3630模块

一切准备就绪以后就可以开始驱动ME3630 4G模块了。

ME3630 4G模块驱动修改

添加USB设备信息

需要先在Linux内核中添加ME3630的USB设备信息,因为前面说了,ME3630 4G模块用的USB接口。打开Linux源码的drivers/usb/serial/option.c文件,找到option_ids数组,然后在里面添加ME3630的PID和VID,要添加的内容如下:

示例代码 54.2.2.1 ME3630 PID 和 VID 信息
1 { USB_DEVICE(0x19d2, 0x0117) }, /* ME3630*/
2 { USB_DEVICE(0x19d2, 0x0199) },
3 { USB_DEVICE(0x19d2, 0x1476) },

完成以后的option_ids数组如下图所示:

添加PID和VID后的option_ids数组

添加ECM支持程序

ME3630支持ECM接口,可以通过ECM接口轻松联网,如果要使用ECM接口的话需要修改 drivers/usb/serial/option.c文件里面的option_probe函数。找到此函数,然后在里面输入如下内容:

示例代码 54.2.2.2 option_probe 函数需要添加的内容
1  /* GOSUNCN 4G modems */
2  printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\r\n",
3              serial->dev->descriptor.idVendor,
4              serial->dev->descriptor.idProduct,
5              serial->interface->cur_altsetting->desc. bInterfaceNumber);
6 
7  if (serial->dev->descriptor.idVendor == 0x19d2 &&
8      serial->dev->descriptor.idProduct == 0x1476 &&
9      serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
10     return -ENODEV;
11
12 if (serial->dev->descriptor.idVendor == 0x19d2 &&
13     serial->dev->descriptor.idProduct == 0x1476 &&
14     serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
15     return -ENODEV;
16
17 if (serial->dev->descriptor.idVendor == 0x19d2 &&
18     serial->dev->descriptor.idProduct == 0x1509 &&
19     serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
20     return -ENODEV;
21
22 if (serial->dev->descriptor.idVendor == 0x19d2 &&
23     serial->dev->descriptor.idProduct == 0x1509 &&
24     serial->interface->cur_altsetting->desc. bInterfaceNumber == 5)
25     return -ENODEV;

添加完成以后的option_probe函数如下图所示:

向option_probe添加的内容

配置Linux内核

需要配置Linux内核,首先使能USBNET功能,路径如下:

-> Device Drivers
-> [*]Network device support
-> USB Network Adapters
-> <*> Multi-purpose USB Networking Framework

配置如下图所示:

使能USB网络

接下来还需要使能USB串口GSM、CDMA驱动,配置路径如下:

-> Device Drivers
-> [*] USB support
-> <*> USB Serial Converter support //选中
-> <*> USB driver for GSM and CDMA modems //选中

配置如下图所示:

USB GSM和CDMA

继续配置Linux内核,使能USB的CDC ACM模式,配置路径如下:

-> Device Drivers
-> [*] USB support
-> <*> Support for Host-side USB
-> <*> USB Modem (CDC ACM) support

配置如下图所示:

使能USB的CDC ACM功能

关于Linux内核的配置就到此为止,编译一下Linux内核,然后使用新的uImage启动开发板。如果ME3630已经插上的话,系统启动以后就会输出如下图所示的信息:

ME3630虚拟USB信息

从上图可以看出,ME3630虚拟出了3个USB设备,分别为ttyUSB0-ttyUSB2。对于支持ECM接口的4G模块来讲,比如ZM5330/ZM8620/ME3620/ME3630。如果模块工作在ECM模式下,可以通过运行“ifconfig -a”命令查看对应的网卡,网卡的名字可能为usbX/ecmX/ethX等,X是具体的数字,如果存在的话就说明ECM接口驱动加载成功。输入“ifconfig -a”命令,会发现多了一个名为“usb0”的网卡,如下图所示:

ME3630对应的usb0网卡

ME3630 4G模块ppp联网测试

使能Linux内核ppp功能

-> Device Drivers
-> [*] Network device support
-> <*> PPP (point-to-point protocol) support
-> <*> PPP BSD-Compress compression
-> <*> PPP Deflate compression
-> [*] PPP filtering
-> <*> PPP MPPE compression (encryption)
-> [*] PPP multilink support
-> <*> PPP over Ethernet
-> <*> PPP support for async serial ports
-> <*> PPP support for sync tty ports

配置完成后如下图所示:

Linux内核PPP使能

配置完成以后重新编译一下Linux内核,得到新的uImage镜像文件,然后使用新的uImage镜像文件启动开发板。

移植pppd软件

需要通过pppd这个软件来实现ppp拨号上网,直接在buildroot里面使能即可,配置路径如下:

-> Target packages
-> Networking applications
-> pppd
-> [*] filtering
-> [*] radius
-> [*] overwrite /etc/resolv.conf (NEW)

配置如下图所示:

pppd工具

配置完成后重新编译文件系统,编译完成后,进入output/images目录,运行以下命令把文件系统替换进去:

cd output/images/ //进入到 output/images 目录
sudo tar -axvf rootfs.tar -C /home/zuozhongkai/linux/nfs/rootfs //解压到 nfsroot 目录

上述命令将buildroot中output/images/rootfs.tar这个压缩包解压到/home/zuozhongkai/linux/nfs/rootfs这个目录中,这个目录就是教程中nfsroot目录,根据自己的实际情况解压到对应的目录文件中。

重启开发板,重启以后输入“pppd -v”查看一下pppd的版本号,如果pppd版本号显示正常的话就说明pppd移植成功,如下图所示:

pppd版本号信息

ppp上网测试

在使用pppd进行拨号上网之前需要先创建4个文件,这个4个文件必须放到同一个目录下。在开发板根文件系统下创建/etc/ppp/gosuncn目录,进入到刚刚创建的/etc/ppp/gosuncn目录下,然后新建一个名为“ppp-on”的shell脚本文件,在ppp-on文件里面输入如下所示内容:

示例代码 54.2.3.1 ppp-on 文件内容
1 #!/bin/sh
2 clear
3 OPTION_FILE="gosuncn_options"
4 DIALER_SCRIPT=$(pwd)/gosuncn_ppp_dialer
5 exec pppd file $OPTION_FILE connect "chat -v -f ${DIALER_SCRIPT}"

再新建一个名为“gosuncn_options”的文件,在文件里面输入如下所示内容:

示例代码 54.2.3.2 gosuncn_options 文件内容
1 /dev/ttyUSB2
2 115200
3 crtscts
4 modem
5 persist
6 lock
7 noauth
8 noipdefault
9 debug
10 nodetach
11 user Anyname
12 password Anypassword
13 ipcp-accept-local
14 ipcp-accept-remote
15 defaultroute
16 usepeerdns
17 noccp
18 nobsdcomp
19 novj
20 dump

第1行,如果是联通或移动的卡就是用ttyUSB2。

再新建一个名为“gosuncn_ppp_dialer”的文件,输入如下所示内容:

示例代码 54.2.3.3 gosuncn_ppp_dialer 文件内容
1 ABORT "NO CARRIER"
2 ABORT "ERROR"
3 TIMEOUT 120
4 "" ATE
5 SAY "ATE"
6 ECHO ON
7 OK ATH
8 OK ATP
9 OK AT+CGDCONT=1,\"IP\",\"3GNET\"
10 OK ATD*99#
11 CONNECT

第9、10行是网络APN码,如果是联通卡,那么第9、10行内容如下:

OK AT+CGDCONT=1,\"IP\",\"3GNET\"
OK ATD*99#

如果是电信卡,那么第9、10行内容如下:

OK AT+CGDCONT=1,\"IP\",\"CTNET\"
OK ATD*99#

如果是移动卡,那么第9、10行内容如下:

OK AT+CGDCONT=1,\"IP\",\"CMNET\"
OK ATD*99#

最后新建一个名为“disconnect”的shell脚本,输入如下所示内容:

示例代码 54.2.3.4 disconnect 文件内容
1 #!/bin/sh
2 killall pppd

这四个文件编写完成以后要给予ppp-on和disconnect这两个文件可执行权限,命令如
下:

chmod 777 ppp-on disconnect

完成以后输入如下命令连接4G网络:

./ppp-on &

如果ME3630连接4G网络成功,那么就会自动申请IP地址,并且打印出对应的地址信息,如下图所示:

4G连接过程

从上图可以看出,4G网络连接成功,IP地址为10.40.133.153。ppp拨号成功以后就会生成一个名为“ppp0”的网卡,如上图所示:

ppp0网卡信息

4G网络测试需要关闭其他网卡,否则的话网络测试可能有问题,但是现在是通过网络启动的系统,并且通过NFS挂载的根文件系统,因此没法关闭其他的网卡,比如eth0。为了解决这个问题,只能将uboot、Linux kernel、.dtb设备树和根文件系统都烧写到板子的EMMC里面,然后直接启动EMMC上的系统即可,这样就不需要其他网卡工作了

烧写完成以后重启启动开发板,确保当前开发板只有一个ME3630对应的ppp0网卡,最后直接ping百度官网即可,结果如下图所示:

ME3630 4G模块ping百度官网

ME3630 4G模块ECM联网测试

对于支持ECM接口的模块可以直接通过ECM上网,ME3630模块支持ECM接口,重启开发板,输入“ifconfig -a”命令可以看到有一个名为“usb0”的网卡,如下图所示:

usb0网卡

这个usb0网卡就是ECM接口对应的网卡,在开发板根文件系统的/etc/ppp/gosuncn(上一小节创建的)目录下创建一个名为“ecm_on”的shell脚本,内容如下:

示例代码 54.2.4.1 ecm_on 文件内容
1 #!/bin/sh
2 clear
3 OPTION_FILE="gosuncn_options"
4 DIALER_SCRIPT=$(pwd)/gosuncn_ecm_dialer
5 exec pppd file $OPTION_FILE connect "chat -v -f ${DIALER_SCRIPT}"

最后再创建一个名为“gosuncn_ecm_dialer”的文件,文件内容为:

示例代码 54.2.4.2 gosuncn_ecm_dialer 文件内容
1 ABORT "NO CARRIER"
2 ABORT "ERROR"
3 TIMEOUT 120
4 "" ATE
5 SAY "ATE"
6 ECHO ON
7 OK ATH
8 OK ATP
9 OK AT+ZSWITCH=L
10 OK AT+ZECMCALL=1
11 OK AT+CGDCONT=1,"IP","3GNET"
12 OK ATD*99#
13 CONNECT

第11、12行是网络APN码,如果是联通卡,那么第11、12行内容如下:

OK AT+CGDCONT=1,\"IP\",\"3GNET\"
OK ATD*99#

如果是电信卡,那么第11、12行内容如下:

OK AT+CGDCONT=1,\"IP\",\"CTNET\"
OK ATD*99#

如果是移动卡,那么第11、12行内容如下:

OK AT+CGDCONT=1,\"IP\",\"CMNET\"
OK ATD*99#

完成后要给予ecm-on文件可执行权限,命令如
下:

chmod 777 ecm-on

完成以后输入如下命令连接4G网络:

./ecm-on &

如果ME3630连接4G网络成功会出现如下图所示信息:

ECM网络连接成功

连接成功以后打开usb0网卡,命令如下:

ifconfig usb0 up //打开 usb0 网卡

usb0网卡打开以后输入如下命令获取IP地址:

udhcpc -i usb0 //获取 IP 地址

IP地址获取过程如下图所示:

usb0网卡获取IP地址过程

从上图可以看出,usb0网卡获取到的IP地址为10.35.243.53,然后ping一下百度官网,如果能ping通就说明ME3630的ECM接口联网成功。

至此ME3630 4G模块的网络连接就已经全部测试完成,可以在正点原子的STM32MP157开发板上使用4G上网了。

ME3630 4G模块GNSS定位测试

注意!ME3630-C3C 的 GNSS 要用无源天线,不能使用有源天线,否则无法定位!

有些型号的ME3630带有GNSS功能,也就是GPS定位。在之前移植ME3630驱动的时候知道最终会出现3个ttyUSB设备,分别为ttyUSB0-ttyUSB2,其中ttyUSB1为GNSS接口。如果以前用过其他的GPS模块的话应该知道,GPS模块是串口输出的,ME3630也一样,只不过ME3630是USB转串口,ttyUSB1就是ME3630转出来的GNSS串口。所以可以直接使用minicom来查看ttyUSB1输出的GNSS信息。ME3630的GNSS定位使用ttyUSB1接口,波特率为115200,因此本小节中的minicom配置如下图所示:

minicom配置

使用AT指令配置ME3630

ME3630默认关闭了GNSS定位输出功能的,必须先使用AT指令配置。AT指令配置过程如下,其中深色是AT指令,“OK”为ME3630返回值:

ME3630-C3C AT指令配置GPS

AT指令配置完成以后ME3630就会开始搜星,注意,GPS天线一定要放到室外!等ME3630搜星结束以后就会输出NEMA格式的定位信息,如下图所示:

GNSS定位信息

在实际的应用开发中直接解析NEMA格式数据,然后得到具体的经纬度、速度、高度、UTC时间等信息。

EC20 4G模块实验

这一部分我买的是正点原子的4G模块,所以就是上一个实验的,这里就没看。

移远GobiNET驱动移植

这个是针对EC20的4G模块的,也没看。

总结

我看了一下网上,像野火那边就是EC20的4G模块,所以如果是用那个模块也可以看一下这一章节对应的正点原子的教程。

4G模块一样,也是驱动程序不用自己写,只要学会使用就可以了。

首先需要在drivers/usb/serial/option.c中,添加option_ids数组的对应ME3630的PID和VID,然后在option_probe函数中添加ECM支持程序。

之后需要配置Linux内核,使能USBNET,使能USB串口GSM、CDMA驱动,使能USB的CDC ACM模式;同时为了测试4G模块联网,需要使能LInux内核的ppp功能,并在buildroot中安装pppd软件。

ppp上网测试需要自行创建/etc/ppp/gosuncn目录,并创建对应的4个文件,赋予执行权限后进行测试,这里的话需要烧写到EMMC后进行测试,如果还是用nfs挂载可能会出现问题。

ECM联网测试,需要在/etc/ppp/gosuncn中添加2个文件并给予执行权限。

该模块的GNSS定位测试,就需要对minicom配置为115200的波特率来读取,然后通过对应的AT命令配置好ME3630就可以读取NEMA格式的数据了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1177274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mediapipe流水线分析 二

目标检测 Graph 一 流水线上游输入处理 1 TfLiteConverterCalculator 将输入的数据转换成tensorflow api 支持的Tensor TfLiteTensor 并初始化相关输入输出节点 &#xff0c;该类的业务主要通过 interpreter std::unique_ptrtflite::Interpreter interpreter_ nullptr; 实现…

Ansible入门使用

目录 前言 一、环境概况 修改主机名&#xff08;可选项&#xff09; 二、安装部署 1.安装epel扩展源 2.安装Ansible 3.修改Ansible的hosts文件 4.生成密钥 三、Ansible模块使用介绍 Command模块 Shell模块 User模块 Copy模块 File模块 Hostname模块 Yum模块 Se…

windows下mysql5.7.19批处理安装启动修改密码

有时候要在windows下安装mysql&#xff0c;新手一般觉得复杂&#xff0c;要搞命令行。 于是弄了些批处理&#xff0c;win7 64 测试通过&#xff0c; windows server 2012测试通过 mysql5.7.19 x64版本在windows下的一键安装批处理与mysql解压包 1&#xff0c;无需管理员运…

中国人民大学与加拿大女王大学金融硕士——一把开启未来金融世界的金钥匙

在这个日新月异、竞争激烈的时代&#xff0c;每个人都渴望不断提升自我&#xff0c;以应对不断变化的世界。在当今的金融领域&#xff0c;国际化的视野和多元化的知识结构变得越来越重要。如何才能掌握未来世界的金钥匙呢&#xff1f;其实&#xff0c;这把金钥匙并非遥不可及&a…

北斗升级轨道检查,高精度定位确保铁路畅通无阻

北斗升级轨道检查&#xff0c;高精度定位确保铁路畅通无阻 随着科技的发展&#xff0c;北斗卫星系统在各个领域的应用越来越广泛。其中&#xff0c;在铁路轨道检查中&#xff0c;北斗卫星技术的应用不仅能够提高效率&#xff0c;减少人力成本&#xff0c;还能够保障安全&#x…

变压器试验VR虚拟仿真操作培训提升受训者技能水平

VR电气设备安装模拟仿真实训系统是一种利用虚拟现实技术来模拟电气设备安装过程的培训系统。它能够为学员提供一个真实、安全、高效的学习环境&#xff0c;帮助他们更好地掌握电气设备的安装技能。 华锐视点采用VR虚拟现实技术、MR混合现实技术、虚拟仿真技术、三维建模技术、人…

css布局grid-template-columns属性

grid-template-columns属性可以用于创建一个网格布局&#xff0c;以下是使用此属性的步骤&#xff1a; 首先在网格容器上使用 display: grid; 将其转换为网格容器。 然后使用 grid-template-columns 属性来定义列的数量和大小。例如&#xff0c;使用 “grid-template-columns:…

私域流量搭建与运营,技巧全攻略!

2023年是比拼运营深度和服务效率的一年&#xff0c;用户对于体验的期望值将持续增长&#xff0c;企业需提供无缝的客户体验&#xff0c;以推动增长、保障收入、确保客户忠诚度。在疫情新常态下&#xff0c;企业已构建起APP、小程序等一系列线上触点矩阵&#xff0c;而各个触点之…

承载AI计算的数据中心网络和传统数据中心有何不同?

生成式AI正在风靡全球&#xff0c;不少企业开始研究如何在其业务流程中采用人工智能技术&#xff0c;更有一些企业客户开始考虑在数据中心和私有云中部署自己的AIGC和 GPU 扩展网络。从网络角度来看&#xff0c;用于承载这类业务的数据中心与传统的数据中心有很大不同&#xff…

Qt6远程连接MySQL数据库(简单易上手版)

在对照文章开始操作之前&#xff0c;MySQL 和 Navicat 的安装配置要自己提前弄好。 步骤1&#xff1a; 在电脑桌面任务栏中的搜索框中输入 mysql&#xff0c;找到名为&#xff1a;MySQL 8.0 Command Line Client&#xff0c;然后打开。 步骤2&#xff1a; 输入密码后回车&a…

从Hugging Face下载数据测试whisper、fast_whisper耗时

时长比较短的音频&#xff1a;https://huggingface.co/datasets/PolyAI/minds14/viewer/en-US 时长比较长的音频&#xff1a;https://huggingface.co/datasets/librispeech_asr?row8 下载数据集 from datasets import load_datasetminds_14 load_dataset("PolyAI/mind…

找短视频素材就上这8个网站

找短视频素材就上这8个网站&#xff0c;视频剪辑、自媒体必备&#xff0c;质量高&#xff0c;还能免费下载&#xff0c;赶紧收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富&#xff0c;网站主要还是以设计类素材为主&…

行业追踪,重构代码,把数据库数据搞坏了

自动复盘 2023-11-06 最近行情好&#xff0c;又有动力搞了&#xff0c;重构了数据库方面的代码&#xff0c;力求更快更稳定的更新数据&#xff0c;结果把数据库数据搞坏了&#xff0c;图有点问题。 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是…

Win10 + VS017 编译SQLite3.12.2源码

参考&#xff1a; [1] WIN10 VS2019下编译GDAL3.0PROJ6SQLite_gdal 3 win10编译-CSDN博客 [2] 如何编译SQLite-How To Compile SQLite-CSDN博客 如何生成静态库&#xff1a; 参考&#xff1a; WIN10 VS2019下编译GDAL3.0PROJ6SQLite_gdal 3 win10编译-CSDN博客 如何生成exe:…

如何在Linux环境搭建SVN服务器并实现公网访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

C++项目的一些环境配置

今天学习下OpenCV&#xff0c;环境配置顺便理一下&#xff1a; 1.用到外部的C文件要在&#xff1a;项目的属性页->VC目录->包含目录&#xff0c;添加相应的路径 2.用到外部的库文件需要在&#xff1a;项目的属性页->VC目录->库目录&#xff0c;添加相应的路径&…

Ceph文件存储

1、存储基础 //单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xff08;网络附加存储&…

人,要懂得享受孤独

喜欢在如水的月光下&#xff0c;望一轮洁白的皓月&#xff0c; 喜欢在清寂的夜晚&#xff0c;看那星光流转倏忽间的变幻&#xff0c;牵动心中万千情怀。 独享这份清幽&#xff0c;遐想那月中寻桂子的浪漫。 这个世界太喧闹&#xff0c;偶尔&#xff0c;需要关一关窗&#xff0c…

当阿里云上的Saleforce,遇到瓴羊

基于Salesforce成熟的产品及瓴羊贯穿企业经营全链路的数字化产品能力&#xff0c;双方将共同为中国客户提供优质的数字化解决方案和全面的服务保障。 来源|瓴羊DaaS 新的变化正在发生。 上周四&#xff0c;为期三天的全球顶级科技盛会云栖大会202在浙江杭州落下落幕。本次活…

古典舞学习的独舞与群舞,古典舞的成品舞蹈教学大全

一、教程描述 本套教程的古典舞是很全面的&#xff0c;不仅有舞蹈动作分解教学&#xff0c;而且有成品舞的完整教学&#xff0c;同时提供独立的背景音乐文件&#xff0c;可以让你更快地学会古典舞。本套教程&#xff0c;大小30.54G&#xff0c;共有276个文件。 二、教程目录 …