第五季2:STA模式USB-WIFI网卡移植与测试

以下内容源于朱有鹏课程,如有侵权,请告知删除。

参考博客

hisi3518ev200移植MT7601_fsczp的博客-CSDN博客

wpa_supplicant移植与使用_andylauren的博客-CSDN博客

Linux wpa_cli 调试方法_weixin_34168700的博客-CSDN博客

12 海思Hi3518E移植WIFI驱动(STA模式)_QtHalcon的博客-CSDN博客

内容总结

(1)HI2518E+WIFI做STA,PC做STA,外部路由器做AP,实现局域网内ortp视频传输。

(2)HI2518E+WIFI做STA,PC做STA,外部路由器做AP,实现局域网全程无线调试。

一、STA模式USB-WIFI网卡移植

1、修改Makefile文件

文件路径是MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/Makefile。

(1)注释掉之前的PLATFORM,然后在67行添加“PLATFORM = HISI_3518E”。

//省略部分代码,注释掉这些
#PLATFORM = BLPMP
#PLATFORM = MT85XX
#PLATFORM = MT53XX
#PLATFORM = NXP_TV550
#PLATFORM = MVL5
#PLATFORM = RALINK_3352
#PLATFORM = UBICOM_IPX8
#PLATFORM = INTELP6
#PLATFORM = MSTARTV//添加下面代码
PLATFORM = HISI_3518E

(2)仿照相应的格式,在105行附近添加下面内容。

ifeq ($(PLATFORM),HISI_3518E)
LINUX_SRC = /home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y
CROSS_COMPILE = arm-hisiv300-linux-
export ARCH = arm
endif

(3)修改xxx.ko文件输出路径。即在Makefile文件440行附近修改如下,将来在/home/xjh/iot/hisi_development/hisi_rootfs/目录中得到mt7601Usta.ko文件。

ifneq ($(findstring 7601,$(CHIPSET)),)cp -f $(RT28xx_DIR)/os/linux/mt$(MODULE)sta.ko /home/xjh/iot/hisi_development/hisi_rootfs/ 2>/dev/null || :elsecp -f $(RT28xx_DIR)/os/linux/rt$(MODULE)sta.ko /tftpboot 2>/dev/null || :endif

2、修改config.mk文件

文件路径是MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/config.mk。

(1)搜索HAS_WPA_SUPPLICANT,确认是否如下。

  24 # Support Wpa_Supplicant25 # i.e. wpa_supplicant -Dralink26 HAS_WPA_SUPPLICANT=y27 28 29 # Support Native WpaSupplicant for Network Maganger30 # i.e. wpa_supplicant -Dwext31 HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

(2)仿照相应的格式,在987行附近添加下面内容。

 987 ifeq ($(PLATFORM),HISI_3518E)988 EXTRA_CFLAGS += $(WFLAGS)989 export EXTRA_CFLAGS990 endif

3、修改网卡名称为wlan

在MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rtmp_def.h文件中修改内容如下。

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、安装驱动

(1)在MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/下执行“make”。

(2)安装mt7601Usta.ko文件,即在板载系统的/mnt目录下执行“insmod mt7601Usta.ko”。

注意先卸载mt7601Uap.ko模块(如果有的话),否则会报错。

/mnt # ls
RT2870AP.dat      mt7601Usta.ko     stream_chn0.h264
mt7601Uap.ko      sample_venc
/mnt # insmod mt7601Usta.ko
rtusb init rt2870 --->
===>rt2870_probe()!
--> RTMPAllocAdapterBlock=== pAd = c2ed6000, size = 841592 ===--> RTMPAllocTxRxRingMemory
<-- RTMPAllocTxRxRingMemory, Status=0
<-- RTMPAllocAdapterBlock, Status=0
NumEndpoints=8
BULK IN MaxPacketSize = 512
EP address = 0x84
BULK IN MaxPacketSize = 512
EP address = 0x85
BULK OUT MaxPacketSize = 512
EP address = 0x 8  
BULK OUT MaxPacketSize = 512
EP address = 0x 4  
BULK OUT MaxPacketSize = 512
EP address = 0x 5  
BULK OUT MaxPacketSize = 512
EP address = 0x 6  
BULK OUT MaxPacketSize = 512
EP address = 0x 7  
BULK OUT MaxPacketSize = 512
EP address = 0x 9  
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x8
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x4
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x5
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x6
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x7
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x9
STA Driver version-3.0.0.3
-->MT7601_Init():
Chip specific bbpRegTbSize=0!
Chip VCO calibration mode = 0!
NVM is EFUSE
Efuse Size=0x1d [Range:1e0-1fc] 
Endpoint(8) is for In-band Command
Endpoint(4) is for WMM0 AC0
Endpoint(5) is for WMM0 AC1
Endpoint(6) is for WMM0 AC2
Endpoint(7) is for WMM0 AC3
Endpoint(9) is for WMM1 AC0
Endpoint(84) is for Data-In
Endpoint(85) is for Command Rsp
Allocate a net device with private data size=0!
Allocate net device ops success!
The name of the new wlan interface is wlan0...
RtmpOSNetDevAttach()--->
<---RtmpOSNetDevAttach(), ret=0
<===rt2870_probe()!
usbcore: registered new interface driver rt2870
/mnt #

(2)将MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/RT2870STA.dat文件复制到开发板的/etc/Wireless/RT2870STA目录。此时不用修改里面的参数,后续可以配合wpa_supplicant来修改。注意这个目录和RT2870AP目录不一样,别放在RT2870AP目录,否则启动网卡时会报错:

#忽略部分输出
!!! rt28xx init fail !!!
rt28xx_open return fail!
ifconfig: SIOCSIFFLAGS: Operation not permitted

二、移植wpa_supplicant

1、源码下载与解压

(1)可以从网盘资源1111下载以下资源。

(2)或者从http://hostap.epitest.fi/wpa_supplicant/下载wpa_supplicant-2.5.tar.gz。

(3)或者从ftp://ftp.openssl.org/source/old/0.9.x/下载openssl-0.9.8za.tar.gz。之所以下载openssl,是因为wpa_supplicant依赖于openssl。

(5)使用tar -zxvf 命令解压wpa_supplicant-2.5.tar.gz、openssl-0.9.8za.tar.gz。

2、移植openssl

(1)给openssl打补丁。把MT7601_driver/sta/wpa_supplicant-2.5/patches/openssl-0.9.8za-tls-extensions.patch文件拷贝到MT7601_driver/sta/openssl-0.9.8za目录下,然后在MT7601_driver/sta/openssl-0.9.8za目录下执行:(后续怎么操作呢?)

patch -p1 < openssl-0.9.8za-tls-extensions.patch

(2)修改MT7601_driver/sta/openssl-0.9.8za/Makefile文件中相关参数的值。

CC=arm-hisiv300-linux-gcc
AR=arm-hisiv300-linux-ar $(ARFLAGS)  r
AD=arm-hisiv300-linux-ar $(ARFLAGS)  d
RANLIB=arm-hisiv300-linux-ranlib
INSTALLTOP=/tmp/openssl
OPENSSLDIR=/tmp/openssl

(3)在MT7601_driver/sta/openssl-0.9.8za/目录下执行make,然后make install。

执行make install时报错如下:

smime.pod around line 272: Expected text after =item, not a number
smime.pod around line 276: Expected text after =item, not a number
smime.pod around line 280: Expected text after =item, not a number
smime.pod around line 285: Expected text after =item, not a number
smime.pod around line 289: Expected text after =item, not a number
POD document had syntax errors at /usr/bin/pod2man line 71.
make: *** [install_docs] 错误 1

这是因为OpenSSL与perl版本不兼容,解决方法是执行“rm -f /usr/bin/pod2man”,然后重新make与make install。

(4)安装好后,在/tmp/openssl目录有诸多文件,我们需要其中的lib和include目录。

root@ubuntu:/tmp/openssl# ls
bin  certs  include  lib  man  misc  openssl.cnf  private
root@ubuntu:/tmp/openssl# 

3、移植wpa_supplicant

(1)首先在MT7601_driver/sta/wpa_supplicant-2.5/wpa_supplicant目录下执行“cp defconfig ./.config”。

(2)然后修改.config,增加以下内容:

CC=arm-hisiv300-linux-gcc -L/tmp/openssl/lib
CFLAGS+=-I /tmp/openssl/include
LIBS+=-L/tmp/openssl/lib

(4)在MT7601_driver/sta/wpa_supplicant-2.5/wpa_supplicant目录下执行make。

此时报错如下:

../src/drivers/driver_nl80211.c:17:31: fatal error: netlink/genl/genl.h:没有那个文件或目录#include <netlink/genl/genl.h>^
compilation terminated.
make: *** [../src/drivers/driver_nl80211.o] 错误 1

解决方法在上述的.config文件中,将CONFIG_DRIVER_NL80211=y 注释掉。

(5)重新执行make,如果生成wpa_supplicant、wpa_cli,则移植成功完成。

其中wpa_supplicant是服务器端,wpa_cli是客户端。这是linux底下运用命令行管理无线网络的方式。


三、STA模式USB-WIFI网卡测试

1、部署wpa_supplicant

(1)将上面生成的wpa_supplicant、wpa_cli拷贝到开发板的/usr/bin目录。

(2)在板载系统上,创建/etc/wpa_supplicant.conf文件,并配置内容如下(注意去掉注释):

ctrl_interface=/var/run/wpa_supplicantnetwork={
ssid="XJH-ChinaNet-2.4G"//当前我房间的无线路由器的网络名字
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE//加密方式
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="xie732787"//路由器的密码
}

2、STA模式USB-WIFI的设置

(1)在开发板/mnt目录下执行“insmod mt7601Usta.ko”,安装驱动mt7601Usta.ko。(如果之前已经安装,这步忽略。)

(2)设置开发板USB-WIFI网卡的静态IP地址。这里之所以设置静态IP,是因为还没有移植DHCP。这个USB-WIFI网卡最后要接入路由器,所以其网段要与实际路由器的网段一致。

SSID:    XJH-ChinaNet-2.4G
协议:    Wi-Fi 4 (802.11n)
安全类型:    WPA2-个人
网络频带:    2.4 GHz
网络通道:    10
链接速度(接收/传输):    72/72 (Mbps)
IPv6 地址:    240e:3b6:30f5:81e0:f2ef:8c53:d1e6:68ab
本地链接 IPv6 地址:    fe80::bac4:e6ab:a08d:e14c%6
IPv6 DNS 服务器:    fe80::1%6
fe80::1%6
IPv4 地址:    192.168.1.7           #笔记本的ip地址
IPv4 DNS 服务器:    192.168.1.1     #路由器的ip地址
制造商:    Realtek Semiconductor Corp.
描述:    Realtek RTL8821CE 802.11ac PCIe Adapter
驱动程序版本:    2024.0.10.209
物理地址(MAC):    0C-96-E6-67-5D-33

本人的无线路由器的地址信息如上,因此可以把开发板的USB-WIFI网卡的静态IP地址设置为192.168.1.211。

/mnt # ifconfig wlan0 up
#省略部分输出
RTUSBBulkReceive!
<==== rt28xx_init, Status=0
==> RTMPEnableRxTx
==>  DMAIdle, GloCfg=0x40000050
<== RTMPEnableRxTx
0x1300 = 00064300
RTMPDrvOpen(1):Check if PDMA is idle!
==>  DMAIdle, GloCfg=0x40000050
Driver auto reconnect to last OID_802_11_SSID setting - 11n-AP, len - 6
RTMPDrvOpen(2):Check if PDMA is idle!
CntlOidSsidProc():CNTL - 0 BSS of 0 BSS match the desire (6)SSID - 11n-AP
CNTL - All roaming failed, restore to channel 1, Total BSS[00]
==>  DMAIdle, GloCfg=0x40000050
/mnt # ifconfig wlan0 192.168.1.211
/mnt # ifconfig
eth0      Link encap:Ethernet  HWaddr 52:A6:95:FB:AF:7A  inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:3942 errors:0 dropped:0 overruns:0 frame:0TX packets:1911 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:4780527 (4.5 MiB)  TX bytes:149290 (145.7 KiB)Interrupt:12 lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0UP LOOPBACK RUNNING  MTU:16436  Metric:1RX packets:12 errors:0 dropped:0 overruns:0 frame:0TX packets:12 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:780 (780.0 B)  TX bytes:780 (780.0 B)wlan0     Link encap:Ethernet  HWaddr 1C:BF:CE:2C:B2:5E  inet addr:192.168.1.211  Bcast:192.168.1.255  Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:5290 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:1646173 (1.5 MiB)  TX bytes:0 (0.0 B)/mnt # 

(3)开发板作为STA接入到路由器。在开发板/mnt目录下执行以下命令,其中-dd表示打开调试信息,&表示让其工作在后台。这行命令表示让wpa_supplicant 工作起来。

/mnt # wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -dd &
#省略部分输出
EAPOL: External notification - portValid=1
EAPOL: External notification - EAP success=1
EAPOL: SUPP_PAE entering state AUTHENTICATING
EAPOL: SUPP_BE entering state SUCCESS
EAP: EAP entering state DISABLED
EAPOL: SUPP_PAE entering state AUTHENTICATED
EAPOL: Supplicant port status: Authorized
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 B/G protection to 1
SYNC - AP changed N OperaionMode to 3
SYNC - AP changed B/G protection to 0
SYNC - AP changed N OperaionMode to 1
SYNC - AP changed N OperaionMode to 0
SYNC - AP changed B/G protection to 1
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”查看连接状态。

/mnt # wpa_cli -i wlan0 status
EAPOL: EAP Session-Id not available
CTRL-DEBUG: ctrl_sock-sendto: sock=7 sndbuf=163840 outq=0 send_len=200
bssid=28:93:7d:25:a5:bd
freq=0
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
/mnt #

(5)测试连接效果

因为开发板有两个网卡,无线网卡和有线网卡,因此ping的时候要通过“-I”来指定使用哪个网卡;或者使用命令“ifconfig eth0 down”把有线网卡关闭,从而自动使用无线网卡(推荐)。

1)ping通路由器或者说网关,使用“ping -I wlan0 192.168.1.1”。

2)想要ping通外网时,先要使用命令“route add default gw 192.168.1.1 dev wlan0”添加网关信息(即路由器的ip),然后可以测试“ping -I wlan0 8.8.8.8”(google的dnw server)。因为没有添加DNS,所以不能直接类似ping www.baidu.com.cn这种形式。

3、ORTP视频传输测试

(1)基于第三季1:ORTP库的移植与局域网视频传输的工作,在mpp/sample/common/sample_common_ven.c中,修改LOCAL_HOST_IP 为192.168.1.7,这个IP地址是笔记本无线接入时自动分配的。

(2)在mpp/sample/venc目录下编译得到sample_venc文件。

(3)将sample_venc文件拷贝到虚拟机/home/xjh/iot/hisi_development/hisi_rootfs/目录中,系统启动后这个目录会挂载到板载系统的/mnt目录,将板载系统的/mnt/sample_venc文件拷贝到板载系统的/tmp目录中。为了验证是无线传输,需要使用“ifconfig eth0 down”关闭有线网卡,然后在/tmp目录下执行“./sample_venc 0”,输入c。

(4)在PC端,将有线网卡的IP设置成无线IP不同网段(我这里恰巧是同一网段了,有线网卡的静态IP是192.168.1.10,这导致没有实时画面,后来将有线网卡的IP改为192.168.2.10之后就有画面了)。

(5)VLC播放器中选择媒体,打开文件,选择sdp文件(提取码ms4a)(注意修改sdp中c=IN IP4 192.168.1.7)。如果能看到有延迟的实时画面,则说明测试成功。

四、全程无线调试

1、操作原理

(1)虚拟机桥接到无线网卡,虚拟机、PC、开发板三者都做STA,连接同一个AP。

(2)开发板事先移植部署好USB WIFI驱动、wpa_supplicant等。

(3)开发板/etc/profile中设计好配置WIFI启动、连接AP、静态IP等。

(4)在开发板/etc/profile中设置,让虚拟机无线挂载到开发板。

2、操作步骤

(1)先确认开发板已经部署USB-WIFI驱动、wpa_supplicant工具(即上面的二三步骤)。注意有线挂载时就要把mt7601Usta.ko这个驱动拷贝到开发板/home目录下,因为无线挂载的前提是安装这个驱动,如果不从开发板/mnt目录拷贝到/home目录,就找不到这个文件了。

(2)将虚拟机桥接到无线网卡,然后在etc/network/interfaces文件中修改IP如下(为了区别之前的有线网卡IP,这里特意修改为192.168.1.123。另外这里之所以用static而不是dhcp,是为了与开发板/etc/profile中的固定设置对应起来),然后“ifdown eth0”再“ifup eth0”,此时虚拟机的“无线网卡”IP地址就为192.168.1.123,可以ping通外网与上网。

# interfaces(6) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopbackauto eth0
iface eth0 inet static
#iface eth0 inet dhcp
address 192.168.1.123
netmask 255.255.255.0
gateway 192.168.1.1
root@ubuntu:/# ifdown eth0
root@ubuntu:/# ifup eth0
root@ubuntu:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=139 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=16.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=17.8 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 16.433/58.100/139.977/57.899 ms
root@ubuntu:/# ifconfig
eth0      Link encap:以太网  硬件地址 00:0c:29:a0:0e:00  inet 地址:192.168.1.123  广播:192.168.1.255  掩码:255.255.255.0inet6 地址: fe80::20c:29ff:fea0:e00/64 Scope:Linkinet6 地址: 240e:3b6:30f5:81e0:20c:29ff:fea0:e00/64 Scope:GlobalUP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1接收数据包:246216 错误:7 丢弃:0 过载:0 帧数:0发送数据包:262957 错误:0 丢弃:0 过载:0 载波:0碰撞:0 发送队列长度:1000 接收字节:35100104 (35.1 MB)  发送字节:272290315 (272.2 MB)中断:19 基本地址:0x2000 lo        Link encap:本地环回  inet 地址:127.0.0.1  掩码:255.0.0.0inet6 地址: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  跃点数:1接收数据包:20826 错误:0 丢弃:0 过载:0 帧数:0发送数据包:20826 错误:0 丢弃:0 过载:0 载波:0碰撞:0 发送队列长度:0 接收字节:2247838 (2.2 MB)  发送字节:2247838 (2.2 MB)root@ubuntu:/# 

(3)在开发板/etc/profile文件中修改(添加)

cd /ko
./load3518e -i -sensor ar0130 -osmem 32 -total 64insmod /home/mt7601Usta.ko
ifconfig wlan0 up
ifconfig wlan0 192.168.1.211
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf &
route add default gw 192.168.1.1 dev wlan0mount -t nfs -o nolock 192.168.1.123:/home/xjh/iot/hisi_development/hisi_rootfs /mntcd /mnt

(4)使用reboot命令重启开发板,看效果。

如果顺利完成,则可以在开发板的/mnt目录下看到虚拟机/home/xjh/iot/hisi_development/hisi_rootfs目录下的内容。

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

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

相关文章

关于ping命令的工作原理

2019独角兽企业重金招聘Python工程师标准>>> 当我们在用ping命令ping地址的时候会向target主机发送一个ICMP协议中的echo包&#xff0c;如果对方living&#xff08;活动状态&#xff09;。 则会返回一个echo包。 TTL的值&#xff1a;这个值对我们有什么用&#xff0…

第七季1:分析MP4文件封装格式

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 &#xff08;1&#xff09;mp4文件格式解析 - nigaopeng - 博客园&#xff08;推荐&#xff09; &#xff08;2&#xff09;你真的懂 MP4 格式吗&#xff1f; &#xff08;3&#xff09;m…

第七季2:移植MP4v2库 与 将H.264码流打包成MP4格式的文件

以下内容源于朱有鹏课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 本文首先移植MP4V2库&#xff0c;然后运行修改后的sample代码以生成MP4文件。 利用MP4v2库&#xff0c;可以将编码方式为H264的视频码流打包、封装为MP4格式的文件。 一、移植MP4v2库 1、下载MP4…

新高考不选物理可以学计算机吗,新高考选科中物理真的那么重要吗?没有选物理是不是完了?...

文/圆梦志愿 伏老师众所周知&#xff0c;选科是我国新高考中最重要的事情之一&#xff0c;且涉及到了多门选考科目。其中&#xff0c;要数物理的话题性相对最强。那么&#xff0c;高考选科是不是物理特别重要&#xff1f;新高考没有选物理是不是完了&#xff1f;一、高考选科是…

参加第三届信息化创新克拉玛依国际学术论坛

据老孙说前二届在克拉玛依的数字油田的会议规格很高&#xff0c;可惜一直没机会参加。2014年9月3日至4日举办第三届&#xff0c;无论如何抓住了这次机会&#xff0c;不过会议的内容有些让我失望&#xff0c;克拉玛依的心思已经放在数字城市上了&#xff0c;数字油田的主题被冲淡…

Telnet远程登录 与 海思proc文件系统

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c; 如有侵权请告知删除。 内容总结 &#xff08;1&#xff09;添加“ telnet远程登录 ”这种调试方式。 &#xff08;2&#xff09;介绍“ 海思proc文件系统 ”这种调试接口。 一、telnet远程登录 1、telnet远程登录的意…

北邮-上机-提交错误解决及一些经验

2019独角兽企业重金招聘Python工程师标准>>> 1、出现Time Limit Exceed问题 答&#xff1a;三种原因&#xff1a;1、程序死循环或太多的循环&#xff1b;2、对极限状况计算量太大&#xff0c;需要优化程序&#xff0c;如对10000个以上进行排序必须使用快速排序&…

RAM、ROM和FLASH三大类常见存储器简介

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客&#xff1a; Flash、RAM、ROM的区别_天籁东东的博客-CSDN博客_flash和rom的区别 RAM、ROM和FLASH三大类常见存储器简介 - 存储技术 - 电子发烧友网 RAM、NANDFlash、NORFlash的区别详解 - 百度…

wangeditor html编辑,Vue整合wangEditor富文本编辑器

最近在做项目时&#xff0c;客户有个发布新闻动态的功能&#xff0c;具体页面内容让客户自己编写&#xff0c;所以要选择富文本编辑器&#xff0c;这样用户体验好一点。网上有很多的富文本编辑器&#xff0c; 因为项目的功能并不是很复杂&#xff0c;所以选择了wangEditor&…

DreamWeaver连接Tomcat用以编辑和测试JSP

2019独角兽企业重金招聘Python工程师标准>>> 3 、打开软件之后&#xff0c;大家选择【站点】中的【新建站点】 。 4 、填写要填的内容。 站点名称&#xff1a;可以随便起&#xff0c;只是用来区分站点用的。因为&#xff0c;可以建立多个站点。 本地根文件夹&…

2013多校第三场

hdu 4629 题意&#xff1a;给你n个三角形&#xff0c;问覆盖1~n次的面积各是多少&#xff0c;n < 50; 分析&#xff1a;取出所有端点和交点的x坐标&#xff0c;排序&#xff0c;然后对于每一段xi~xi1的范围的线段都是不相交的&#xff0c;所以组成的 面积要么是三角形&#…

TSS 任务状态段

TSS(任务状态段)1 什么是TSS TSS 全称task state segment&#xff0c;是指在操作系统进程管理的过程中&#xff0c;任务&#xff08;进程&#xff09;切换时的任务现场信息。 2 TSS工作细节 TSS在任务切换过程中起着重要作用&#xff0c;通过它实现任务的挂起和恢复。所谓…

Linux下C语言程序的内存布局

以下内容源于C语言中文网的内容学习与整理。如有侵权&#xff0c;请告知删除。 一、C语言内存布局 C程序所占用的内存&#xff0c;可以划分为以下几个部分。 1、栈区&#xff08;stack&#xff09;。由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量的值…

微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...

‍‍电脑出现死机是很常见的一种故障&#xff0c;造成的原因也有很多种。而最近有些用户的电脑经常死机&#xff0c;开机几分钟就死机&#xff0c;有时还会出现蓝屏&#xff0c;这到底是怎么回事呢&#xff1f;电脑经常死机是什么原因呢&#xff1f;下面小编结合自己的实际情况…

PKI系统深入介绍

公钥基础设施&#xff08;Public Key Infrastructure&#xff0c;简称PKI&#xff09;是眼下网络安全建设的基础与核心&#xff0c;是电子商务安全实施的基本保障&#xff0c;因此&#xff0c;对PKI技术的研究和开发成为眼下信息安全领域的热点。本文对PKI技术进行了全面的分析…

html 禁止缩放 ios10,完美解决ios10及以上Safari无法禁止缩放的问题

完美解决 ios10 及以上 Safari 无法禁止缩放的问题转载自掘金-互联网学徒移动端web缩放有两种&#xff1a;双击缩放双指手势缩放在 iOS 10之前&#xff0c;iOS 和 Android 都可以通过一行 meta 标签来禁止页面缩放&#xff1a;但 iOS 10开始&#xff0c;meta 设置在 Safari 内无…

SCRT软件的使用教程

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 SCRT软件下载&#xff1a;提取码1234 快速链接的步骤与设置 先选择“快速链接”&#xff1b; 然后协议选serial&#xff0c;端口在设备管理器中查看&#xff08;我的是com3&#xff09;&#xff0c;波特率…

KEIL4.12中添加ULINK2的支持

转载自&#xff1a;http://www.amobbs.com/thread-4767650-1-1.html 如果你用KEIL4.12&#xff0c;但却没有Ulink2下载器&#xff0c;只有早先用的Ulink下载器&#xff0c;那么你按照下面三步升下级就可以了....三步&#xff1a;1.把‘keil-ulink升级至ulink2的文件’解压缩后拷…

解决Vmware中安装Ubuntu Server 14.04 分辨率无法全屏问题

2019独角兽企业重金招聘Python工程师标准>>> We will have to edit grub configuration. Open a terminal and paste this: sudo gedit /etc/default/grub Hit Enter. It will open grub preferences in Gedit.Locate the line # GRUB_GFXMODE800x600 (resolution m…

GCC编译器的相关内容

本文摘录与整理于C语言中文网的相关内容&#xff0c;仅用于学习&#xff0c;如有侵权请告知删除。 原内容网址&#xff1a;C语言中文网&#xff1a;C语言程序设计门户网站(入门教程、编程软件) GCC官方文档网址&#xff1a;Top (Using the GNU Compiler Collection (GCC)) 1、…