Linux驱动.之MT7601,USB-WiFi网卡移植到X210开发板,wpa_supplicant配置工具的使用(一)
一、移植前
1、下载与解压无线网卡MT7601U驱动源码压缩包
DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
解压后有如下文件
ate common iwpriv_usage.txt Makefile mgmt phy README_STA_usb RT2870STA.dat sta_ate_iwpriv_usage.txt
chips include mac mcu os rate_ctrl RT2870STACard.dat sta tools
下载如下开源工具openssl是wpa_supplicant需要的库
openssl-0.9.8za
wpa_supplicant-2.5
openssl-0.9.8za.tar.gz
wpa_supplicant-2.5.tar.gz
3、确认无线网卡的硬件信息
在板载系统上使用lsusb命令查看无线网卡的“VID:PID”,分别是厂商ID和产品ID。
还没有插入USB-WIFI时显示的内容
[root@x210v3 ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 05e3:0608
#插入usb-wifi时显示的内容
[ 259.833929] usb 1-1.1: New USB device found, idVendor=148f, idProduct=7601
[ 259.840211] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 259.847456] usb 1-1.1: Product: 802.11 n WLAN
[ 259.852241] usb 1-1.1: Manufacturer: MediaTek
[ 259.856163] usb 1-1.1: SerialNumber: 1.0
Bus 001 Device 003: ID 148f:7601,多了这个信息,如下
[root@x210v3 ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 05e3:0608
Bus 001 Device 003: ID 148f:7601
二、编译驱动源码得到mt7601Usta.ko文件
得到无线网卡的驱动,即mt7601Usta.ko文件。
1、确认USB的VID和PID
在x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/common/rtusb_dev_id.c文件中的rtusb_dev_id[ ]数组里,列出了该驱动所支持的USB的VID和PID。如果USB-WIFI网卡的USB的VID和PID不在该数组中,移植时要添加。
USB_DEVICE_ID rtusb_dev_id[] = {
#ifdef RT6570{USB_DEVICE(0x148f,0x6570)}, /* Ralink 6570 */
#endif /* RT6570 */{USB_DEVICE(0x148f, 0x7650)}, /* MT7650 */
#ifdef MT7601U{USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 */{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */ // 我们的模块就是这个
#endif /* MT7601U */{ }/* Terminating entry */
};
2、修改Makefile文件
修改x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/Makefile文件。
(1)注释掉之前的PLATFORM,然后在67行添加“PLATFORM = SMDK”。
//注释掉以下这些代码
#PLATFORM: Target platform
//省略部分代码
#PLATFORM = BLPMP
#PLATFORM = MT85XX
#PLATFORM = MT53XX
#PLATFORM = NXP_TV550
#PLATFORM = MVL5
#PLATFORM = RALINK_3352
#PLATFORM = UBICOM_IPX8
#PLATFORM = INTELP6
#PLATFORM = MSTARTV
//添加下面代码
PLATFORM = SMDK
(2)根据实际情况设置内核源码树的路径、交叉编译工具链路径。如果交叉编译工具链没有export出来的话就要添加绝对路径。
ifeq ($(PLATFORM),SMDK)
#LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung
#CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
LINUX_SRC = /home/xjh/iot/embedded_basic/kernel/x210_kernel
#实测得知,就算把交叉编译工具链export出来,写成下面这样也会提示找不到arm-linux-gcc,很奇怪。
#CROSS_COMPILE = arm-linux-
#要写成下面两种方式
#CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-linux-
3、修改无线网卡的名字(可选操作)
(1)有线网卡的名字一般叫做eth0、eth1…ethn,无线网卡的名字一般叫做ra0、ra1…ran(或者wlan0、wlan1…wlann)。(2)修改x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rtmp_def.h文件,如下所示,即可把无线网卡的名字改为“wlan”。1600 //#ifdef ANDROID_SUPPORT
1601 #define INF_MAIN_DEV_NAME "wlan"
1602 #define INF_MBSSID_DEV_NAME "wlan"
1603 //#else
1604 //#define INF_MAIN_DEV_NAME "ra"
1605 //#define INF_MBSSID_DEV_NAME "ra"
1606 //#endif /* ANDROID_SUPPORT */
4、添加wpa_supplicant支持
wpa_supplicant用于支持WEP、WPA/WPA2和WAPI无线协议和加密认证,这里省略其介绍。
(1)在x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/config.mk文件中,搜索“HAS_WPA_SUPPLICANT”,确保“HAS_WPA_SUPPLICANT=y”。
24 # Support Wpa_Supplicant25 # i.e. wpa_supplicant -Dralink26 HAS_WPA_SUPPLICANT=y29 # Support Native WpaSupplicant for Network Maganger30 # i.e. wpa_supplicant -Dwext31 HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
(2)继续搜索“SMDK”,大概在1089行处添加内容。
#因为有相关代码如下,所以修改1090行内容
# 300 ifeq ($(HAS_WPA_SUPPLICANT),y)
# 301 WFLAGS += -DWPA_SUPPLICANT_SUPPORT
# 302 ifeq ($(HAS_NATIVE_WPA_SUPPLICANT_SUPPORT),y)
# 303 WFLAGS += -DNATIVE_WPA_SUPPLICANT_SUPPORT
# 304 endif
# 305 endif
修改与添加内容
1090 EXTRA_CFLAGS := $(WFLAGS)
1091 endif
1092
1093 ifeq ($(PLATFORM),CAVM_OCTEON)
1094 EXTRA_CFLAGS := $(WFLAGS) -mabi=64 $(WFLAGS)
1095 export CFLAGS
5、编译驱动源码得到mt7601Usta.ko文件
(1)在x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/下执行“make clen”,然后执行“make”,将在该目录下的os/linux/目录中生成mt7601Usta.ko文件。
执行make时出现错误提示如下:
/bin/sh: arm-linux-gcc: command not found
make[2]: *** [/home/xjh/iot/embedded_basic/x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o] Error 127
make[1]: *** [_module_/home/xjh/iot/embedded_basic/x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux] Error 2
make[1]: Leaving directory `/home/xjh/iot/embedded_basic/kernel/x210_kernel'
make: *** [LINUX] Error 2
xjh@ubuntu:~/iot/embedded_basic/x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913$
这是因为我忘记把交叉编译工具链导出到PATH了。
#下面的PATH没有/usr/local/arm/arm-2009q3/bin这个项目,因此编译报错。
xjh@ubuntu:~/iot/embedded_basic/x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913$ echo $PATH
/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
xjh@ubuntu:~/iot/embedded_basic/x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913$
因此我参考博客linux环境变量设置方法,采用永久性修改方式更新PATH这个环境变量。但修改之后执行sudo make时还是提示错误找不到arm-linux-gcc。尝试修改CROSS_COMPILE这个变量的写法,发现写成“CROSS_COMPILE = arm-linux-”时会报错,而写成下面两者之一就不会报错,这是为啥?我明明已经把交叉编译工具链导出到PATH中。
得到ko文件
mt7601Usta.ko
#使用“modinfo mt7601Usta.ko”命令查看驱动信息。
filename: /home/xjh/iot/embedded_basic/x210_usb-wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/mt7601Usta.ko
version: 3.0.0.3
description: RT2870 Wireless Lan Linux Driver
author: Paul Lin <paul_lin@ralinktech.com>
license: GPL
srcversion: B2632BD2D7AD40A63B72D9E
alias: usb:v148Fp760Bd*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp7601d*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp6370d*dc*dsc*dp*ic*isc*ip*
alias: usb:v148Fp7650d*dc*dsc*dp*ic*isc*ip*
depends:
vermagic: 2.6.35.7 preempt mod_unload ARMv7
parm: mac:rt28xx: wireless mac addr (charp)
将mt7601Usta.ko文件复制到根文件系统目录下。
三、在Linux系统中移植无线网卡
1、安装无线网卡驱动mt7601Usta.ko文件
(1)首先将上面生成的mt7601Usta.ko文件复制到板载系统目录中
(2)然后将无线网卡插入X210开发板的任意USB插槽。
插进第一个USB插槽时的输出
[root@x210v3 ~]#
[root@x210v3 ~]# [ 425.611753] usb 1-1.1: new high speed USB device using s5p-ehci and address 4
[ 425.716551] usb 1-1.1: New USB device found, idVendor=148f, idProduct=7601
[ 425.722827] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 425.730077] usb 1-1.1: Product: 802.11 n WLAN
[ 425.734381] usb 1-1.1: Manufacturer: MediaTek
[ 425.738685] usb 1-1.1: SerialNumber: 1.0
拔掉usb-wifi网卡时的输出
[root@x210v3 ~]# [ 564.425135] usb 1-1.1: USB disconnect, address 4
然后安装无线网卡驱动,insmod mt7601Usta.ko
[root@x210v3 xjh_usb-wifi]# ls
mt7601Usta.ko
[root@x210v3 xjh_usb-wifi]# insmod mt7601Usta.ko
[ 589.033836] rtusb init rt2870 --->
[ 589.036208] ===>rt2870_probe()!
[ 589.040985] --> RTMPAllocAdapterBlock
[ 589.044569]
[ 589.044572]
#省略部分内容
[ 589.215602] Allocate net device ops success!
[ 589.219828] The name of the new wlan interface is wlan0...
[ 589.225298] RtmpOSNetDevAttach()--->
[ 589.232064] <---RtmpOSNetDevAttach(), ret=0
[ 589.235286] <===rt2870_probe()!
[ 589.238079] usbcore: registered new interface driver rt2870
[root@x210v3 xjh_usb-wifi]#
(4)此时使用“ifconfig -a”查看,可以得知无线网卡wlan0的一些信息。
[root@x210v3 xjh_usb-wifi]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:09:C0:FF:EC:48 inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::209:c0ff:feff:ec48/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:9603 errors:0 dropped:0 overruns:0 frame:0TX packets:5241 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:14523906 (13.8 MiB) TX bytes:367990 (359.3 KiB)Interrupt:42 Base address:0x4300 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)#无线网卡对应的“设备文件”wlan0
wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
2、开启无线网卡并设置IP地址
(1)首先使用命令“ifconfig wlan0 up”开启无线网卡。此时会报错,提示错误信息如下:
[ 389.564686] --->RTUSBCancelPendingBulkInIRP
[ 389.567999] Bulk In Failed. Status=-2, BIIdx=0x0, BIRIdx=0x0, actual_length= 0x0
[ 389.574884] CmdThread : CMDTHREAD_RESET_BULK_IN === >
[ 389.580419] unlink cmd rsp urb
[ 389.587734] <---RTUSBCancelPendingBulkInIRP
[ 389.590575] <---MlmeThread
[ 389.600986] CMDTHREAD_RESET_BULK_IN: Cannot do bulk in because flags(0x1080042) on !
[ 389.607868] CmdThread : CMDTHREAD_RESET_BULK_IN <===
[ 389.612781] <---RTUSBCmdThread
[ 389.615341] <---RtmpTimerQThread
[ 389.653298] !!! rt28xx init fail !!!
[ 389.655948] rt28xx_open return fail!
ifconfig: SIOCSIFFLAGS: Operation not permitted
这是因为板载系统没有/etc/Wireless/RT2870STA/RT2870STA.dat文件。该文件位于无线网卡驱动源码…/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/目录下。我们首先把这个文件拷贝放进板载系统的/etc/Wireless/RT2870STA/目录中(这个目录要自己先创建)。
[root@x210v3 /]# mkdir -p /etc/Wireless/RT2870STA
[root@x210v3 /]# cd /etc/Wireless/RT2870STA/
[root@x210v3 RT2870STA]# cp /mnt/RT2870STA.dat ./[root@x210v3 xjh_usb-wifi]# ifconfig wlan0 up[ 1492.081350] ==> DMAIdle, GloCfg=0x40000050
[ 1492.085317] Driver auto reconnect to last OID_802_11_SSID setting - 11n-AP, len - 6
[ 1492.093366] CntlOidSsidProc():CNTL - 0 BSS of 0 BSS match the desire RTMPDrvOpen(2):Check if PDMA is idle!
[ 1492.101944] (6)SSID - 11n-AP
[ 1492.105507] CNTL - All roaming failed, restore to channel 1, Total BSS[00]
[ 1492.111625] ==> DMAIdle, GloCfg=0x40000050
(2)接着设置无线网卡的IP地址。
查看无线路由器网络信息,可知其连接的无线路由器的地址为192.168.31.1。
IPv4 地址: 192.168.31.196
IPv4 DNS 服务器: 101.198.198.198
物理地址(MAC): 34-2E-B7-04-4D-4F
于是我们执行命令“ifconfig wlan0 192.168.31.211”,将无线网卡的IP地址设置成和无线路由器IP地址同一网段即可,然后使用“ifconfig”命令查看wlan0是否启动。
[root@x210v3 ~]# ifconfig wlan0 192.168.31.211[root@x210v3 ~]# ifconfigwlan0 Link encap:Ethernet HWaddr 1C:BF:CE:2C:B2:5E inet addr:192.168.31.211 Bcast:192.168.31.255 Mask:255.255.255.0inet6 addr: fe80::1ebf:ceff:fe2c:b25e/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:2194 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:635361 (620.4 KiB) TX bytes:0 (0.0 B)
3、使用wpa_supplicant工具将无线网卡接入网络
经过上面的操作,无线网卡wlan0已经启动并且配置有IP地址,就等待着接入无线路由器。此时我们可以使用 wpa_supplicant 工具将无线网卡wlan0接入网络。
wpa_supplicant 工具主要用于管理无线网络,它已经集成到busybox中,因此可以直接使用。
[root@x210v3 xjh_usb-wifi]# find / -name "wpa_supplicant"
/usr/sbin/wpa_supplicant
(1)再次确定板载系统/etc/Wireless/RT2870STA/RT2870STA.dat文件要存在。
(2)在板载系统中创建并编辑/etc/wpa_supplicant.conf文件(注意删掉注释)。
ctrl_interface=/var/run/wpa_supplicantnetwork={
ssid="Xiaomi_803_2.4G" # 当前我房间的无线路由器的网络名字
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE # 加密方式
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="xiecai1314" # 路由器的密码
}
(3)使用命令“wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd &”,将无线网卡接入连接无线网络。
[root@x210v3 xjh_usb-wifi]# wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd &EAPOL: SUPP_BE entering state IDLE
EAPOL authentication completed - result=SUCCESS
RTM_NEWLINK: operstate=1 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
WEXT: if_removed already cleared - ignore event
SYNC - AP changed N OperaionMode to 0
EAPOL: startWhen --> 0
EAPOL: disable timer tick
MT7601AsicTemperatureCompensation::Change to TEMPERATURE_MODE_HIGH
SYNC - AP changed N OperaionMode to 3
SYNC - AP changed B/G protection to 0
SYNC - AP changed N OperaionMode to 0
SYNC - AP changed N OperaionMode to 1
SYNC - AP changed B/G protection to 1
这是动态的输出,需要按下回车继续下一步
(4)使用命令“wpa_cli -i wlan0 status”查看连接状态。
[root@x210v3 xjh_usb-wifi]# wpa_cli -i wlan0 statusRX ctrl_iface - hexdump_ascii(len=6):
53 54 41 54 55 53 STATUS
wlan0: Control interface command 'STATUS'
bssid=28:93:7d:25:a5:bd
ssid=XJH-ChinaNet-2.4G
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=TKIP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.1.211
address=1c:bf:ce:2c:b2:5e
[root@x210v3 xjh_usb-wifi]#
4、ping通路由器与外网的测试
(1)注意先使用“ifconfig eth0 down”关掉eth0,否则开发板默认使用eth0而非wlan0。
(2)经过上面操作之后,开发板可以ping通路由器(ping 192.168.31.1),但是因为还没有设置网关,所以不能ping通外部网络(比如ping 8.8.8.8)。我们可以通过在命令行输入下面命令来设置网关信息。
route add default gw 192.168.31.1 dev wlan0
(3)设置网关之后,因为还没有设置DNS,因此不能ping www.baidu.com等域名。我们可以在/etc/resolv.conf文件中配置DNS,即创建此文件并添加“nameserver 192.168.31.1”。注意这里的IP是无线路由器的IP。
ping 外网测试
[root@x210v3 xjh_usb-wifi]# ping www.baidu.com
PING www.baidu.com (14.215.177.38): 56 data bytes
64 bytes from 14.215.177.38: seq=0 ttl=56 time=19.485 ms
64 bytes from 14.215.177.38: seq=1 ttl=56 time=7.584 ms
64 bytes from 14.215.177.38: seq=2 ttl=56 time=7.942 ms
64 bytes from 14.215.177.38: seq=3 ttl=56 time=8.450 ms
5、在interface文件中配置静态IP或动态IP(可选操作)
之前都是通过手动设置IP地址,其实也可以修改板载系统的/etc/network/interfaces文件来配置静态或者动态IP地址。设置静态IP的修改如下,其实就是替代手工配置时的ifconfig分配IP地址、route添加网关这两步。简单起见,这里直接删除有线网卡eth0的配置,保留无线网卡wlan0的配置。
auto lo
iface lo inet loopback#auto eth0
#iface eth0 inet static
#address 192.168.1.11
#netmask 255.255.255.0
#gateway 192.168.1.1auto wlan0
iface wlan0 inet static
address 192.168.31.211
netmask 255.255.255.0
gateway 192.168.31.1
6、设置开发板开机自动连接路由器
这里是前面内容的总结,可以忽略前面1~4的操作,完成第5点后直接进行下面操作。开发板开机自动连接路由器,这个功能可以通过修改板载系统的/etc/init.d/rcS文件来实现。
(1)rcS文件所在目录及内容如下,可知它会遍历执行/etc/init.d目录下S??*的文件。
S01logging* S20urandom* S50sshd* rcK*
S10mdev* S40network* S99qttest* rcS*
rcS*文件如下,回去执行启动文件,所以,我们建立个文件,来自动启动
case "$i" in *.sh) # Source shell script for speed.( trap - INT QUIT TSTP set start . $i ) ;; *) # No sh extension, so fork subprocess.$i start ;;
于是在板载系统/etc/init.d/目录下创建S41WIFI文件并添加以下内容,然后使用“chmod 777 S41WIFI”命令修改该文件权限。
insmod /usr/xjh_usb-wifi/mt7601Usta.ko
ifconfig wlan0 upifconfig wlan0 192.168.31.211wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd &
wpa_cli -i wlan0 statusifconfig wlan0 up
route add default gw 192.168.31.1 dev wlan0
抄的一个博主的,说为啥这些设置不起效,dns不起效,什么的,这种太简单了,这里不说了,件/etc/resolv.conf,这几个文件,可以自己搜索一下,没什么难度。
总结
2、确认需要的移植的工具集
(1)iwconfig工具集:需要另外移植,不是busybox中的
(2)dhcp工具集:是busybox中集成的,确认busybox的menuconfig中配置支持了这个
(3)wpa_supplicant工具集:需要另外移植,不是busybox中的
3、交叉编译iwconfig
(1)源码下载
(2)配置
(3)交叉编译
(4)部署安装
(5)测试
4、交叉编译wpa_supplicant
(1)下载wpa_supplicant源码并配置编译。参考http://blog.csdn.net/hktkfly6/article/details/48949863
(2)下载配套版本的openssl并配置编译。
(3)去掉配置NL相关的选项省去移植libnl。参考:http://www.cnblogs.com/helloworldtoyou/p/6145995.htm
相关文章:

Linux驱动.之MT7601,USB-WiFi网卡移植到X210开发板,wpa_supplicant配置工具的使用(一)
一、移植前 1、下载与解压无线网卡MT7601U驱动源码压缩包 DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 解压后有如下文件 ate common iwpriv_usage.txt Makefile mgmt phy README_STA_usb RT2870STA.dat sta_ate_iwpriv_usage.txt chips include m…...

ChatGPT 在国内使用的方法
AI如今很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同等等,ChatGPT 真是无所不能~ 作为一款出色的大语言模型,ChatGPT 实现了人类般的对话交流,最主要是能根据上下文进行互动。 接下来,我将介绍 ChatGPT 在国…...

思通数科开源产品:免费的AI视频监控卫士安装指南
准备运行环境: 确保您的服务器或计算机安装了Ubuntu 18.04 LTS操作系统。 按照产品要求,安装以下软件: - Python 3.9 - Java JDK 1.8 - MySQL 5.5 - Redis 2.7 - Elasticsearch 8.14 - FFmpeg 4.1.1 - RabbitMQ 3.13.2 - Minio (…...

阿里HPN-用于大型语言模型训练的数据中心网络
阿里巴巴HPN:用于大型语言模型训练的数据中心网络 探索大规模语言模型训练新方法:阿里巴巴HPN数据中心网络论文。 摘要 本文介绍了阿里云用于大型语言模型(LLM)训练的数据中心网络HPN。由于LLM和一般云计算之间的差异(例如,在流量模式和容错性方面)&…...

re题(27)BUUFCTF-[MRCTF2020]Transform
BUUCTF在线评测 (buuoj.cn) 先到ida,先看一下字符串 找到主函数 int __cdecl main(int argc, const char **argv, const char **envp) {char Str[104]; // [rsp20h] [rbp-70h] BYREFint j; // [rsp88h] [rbp-8h]int i; // [rsp8Ch] [rbp-4h]sub_402230(argc, argv…...

偶数、奇数、整数与指数
引言 在前面的课程中,我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型、函数的定义与使用、函数调用与作用域、函数的高级应用、质数、倍数与余数。本课…...

关于c#中异步async和await的理解
之前给大家介绍了所谓异步编程的用法,但是没有细致的理解到,今天想和大家一起探讨一下; 前文: C#笔记14 异步编程Async,await,task类-CSDN博客 异步的起初 应用程序会启动一个进程,一个进程可以有很多…...

mysql等保数据库命令
mysql数据库命令 默认安装位置:C:\Program Files\MySQL\MySQL Server 8.0\bin select version() from dual; desc mysql.user; 查看表中有哪些列 1、SELECT user, host, authentication_string, account_locked ,password_lifetime FROM mysql.user; 查询用户表…...

云平台在大规模设备管理和数据分析中的作用
在当代数字化转型的浪潮中,云平台作为信息技术基础设施的核心组件,扮演着无可替代的角色,尤其在大规模设备管理和数据分析领域,其重要性和影响力日益凸显。本文旨在深入探讨云平台如何通过其独特的优势,促进数据的高效…...

数据结构-树和二叉树
树 和 二叉树 1.树的概念 树 tree 是n(n>0)个节点的有限集 在任意的一个非空树中 (1)有且仅有一个特定的被称为 根(root) 的节点 (2)当n>1时, 其余的节点可分为m(m>0)个互不相交的有限集T1, T2, T3, .... …...

树和二叉树的概念以及结构
一起加油学数据结构 目录 树的概念以及结构 树的概念 树的相关概念 树的表示 二叉树的概念以及结构 二叉树的概念 特殊的二叉树 二叉树的性质 二叉树的存储结构 树的概念以及结构 树的概念 树是一种非线性的数据结构,它是由n(n>0)…...

c语言习题
第三章 数据类型、运算符与表达式 一 单项选择题 1.下面四个选项中,均不是 c 语言关键字的选项是( )。 A) define IF Type B) getc char printf C) include scanf case D…...

Python 低层多线程接口_thread的用法
_thread是python标准库中的一个低层多线程API,可以在进程中启动线程来处理任务,并且提供了简单的锁机制来控制共享资源的同步访问。本文就_thread模块的用法和特性做个简单的演示。 文章目录 一、进程和线程的区别二、_thread模块的用法2.1 派生线程2.2…...

flutter基础 --dart语法学习
由于想要写一款性能较好,但是又可以一套代码多个平台运行的客户端app,所以选择了flutter 就去看了官方文档,大体发现flutter使用的dart语言和java和js差不多,感觉就是缝合怪。 Dart 是一种面向对象的编程语言,语法上与 Java、JavaScript 等语言有一些相似之处&…...

新手必看:一步步教你绑定常见邮箱到第三方应用(如何绑定QQ、163、Hotmail、Gmail等邮箱)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 邮箱绑定 📒📫 QQ邮箱📫 163邮箱📫 Hotmail邮箱📫 Gmail邮箱📫 Yahoo邮箱📫 iCloud邮箱📫 其他邮箱⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾经为绑定第三方邮箱而感到困惑?你不是一个人!许多人在尝试将QQ邮…...

mac 怎么查看CPU核数
在 macOS 系统中,可以通过以下几种方法查看 CPU 核心数: 1. 使用“关于本机”查看 点击左上角的苹果图标()。选择“关于本机”。在弹出的窗口中,系统会显示 Mac 的基本信息,包括 CPU 的类型和核心数。比…...

Vue生命周期;Vue路由配置;vue网络请求;vue跨域处理
一,Vue生命周期 <template><div > <h1 click"changeText">{{ info }}</h1></div> </template><script> export default {name: HelloWorld,data(){return{info:"介绍组件生命周期"}},methods:{chang…...

汽车电子电气架构从12V提升至48V,带来那些好处? 包括那些改变?
标签: 汽车电子电气架构; 从12V提升至48V; 汽车电子电气架构从12V提升至48V,带来那些好处? 包括那些改变? 将传统汽车的电子电气架构电压从12V提升至48V,既有显著的优势,也需要对车…...

springboot实战学习笔记(2)
目录 1、手动创建springboot工程,选择Maven构建。 2、Maven生成的,可能需要再main目录下new一个resources目录,再在其下目录new一个配置文件。 3、 pom文件中让当前的工程继承父工程依赖:、删去无用依赖。 4、引入后端环境所需要的…...

Python练习宝典:Day 1 - 选择题 - 基础知识
目录 一、踏上Python之旅二、Python语言基础三、流程控制语句四、序列的应用 一、踏上Python之旅 1.想要输出 I Love Python,应该使用()函数。 A.printf() B.print() C.println() D.Print()2.Python安装成功的标志是在控制台(终端)输入python/python3后,命令提示符变为: A.&…...

macOS平台(intel)编译MAVSDK安卓平台SO库
1.下载MAVSDK: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译liblzma 修改CMakeLists.txt文件增加C与CXX指令-fPIC set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_FLAGS}") 修改如下:…...

set的相关函数(3)
3.删除 //删除 /* int main() {set<int> s;s.insert({ 2,4,5,2,6,8,10,15 });for (auto e : s){cout << e << " ";}cout << endl;//删除最小的元素就删除排序后的首元素s.erase(s.begin());for (auto e : s){cout << e << "…...

Python MongoDB
MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。 MongoDB 数据库安装与介绍可以查看我们的 MongoDB 教程。 PyMongo Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接。 …...

安国U盘量产工具系列下载地址
来源地址(访问需要科学工具):AlcorMP (Последняя версия ALCOR U2 MP v23.08.07.00.H) – [USBDev.ru] 版本列表: AlcorMP(最新版本的 ALCOR U2 MP v23.08.07.00.H) AlcorMP是在Alcor Mic…...

2024年最新版Vue3学习笔记
本篇文章是记录来自尚硅谷禹神2023年课程的学习笔记,不得不说禹神讲的是真的超级棒! 文章目录 创建Vue3工程main.ts文件解析初始化项目写一个简单的效果 Vue3核心语法setup函数setup和选项式的区别setup语法糖指定组件名称 响应式数据ref函数定义基本类…...

FX5 CPU模块和以太网模块的以太网通信功能
FX5 CPU模块和以太网模块的以太网通信功能的概要如下所示。 CPU模块的内置以太网端口的通信规格如下所示。 1、与MELSOFT的直接连接 不使用集线器,用1根以太网电缆直接连接以太网搭载模块与工程工具(GX Torks3)。无需设定IP地址,仅连接目标指定即可进行…...

【结构型】树形结构的应用王者,组合模式
目录 一、组合模式1、组合模式是什么?2、组合模式的主要参与者: 二、优化案例:文件系统1、不使用组合模式2、通过组合模式优化上面代码优化点: 三、使用组合模式有哪些优势1、统一接口,简化客户端代码2、递归结构处理方…...

C++——求3*3矩阵对角元素之和。
没注释的源代码 #include <iostream> using namespace std; int main() { int a[3][3],i,j,sum0; cout<<"请输入a组中的元素:"<<endl; for(i0;i<2;i) { for(j0;j<2;j) { cin>>a[i][j]…...

nodejs基于vue电子产品商城销售网站的设计与实现 _bugfu
目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式,开发软件有很多种可以用,本次开发用到的软件是vscode,用到的数据库是…...

GO Ants 学习
文章目录 主要特性安装基本用法1. 创建协程池并提交任务2. 带返回值的任务提交3. 自定义协程池的参数4. 获取协程池状态 应用场景优势资源释放性能对比总结 ants 是一个高性能的 Go 语言协程池库,专注于有效地管理 Go 协程的数量。它通过复用协程减少了创建和销毁协…...