原文链接:https://www.cnblogs.com/pcat/p/5467188.html
在linux里,source、sh、bash、./都可以执行shell script文件,那它们有什么不同吗?
———–
1、source
source a.sh在当前shell内去读取、执行a.sh,而a.sh不需要有”执行权限”
source命令可以简写为”.”
. a.sh注意:中间是有空格的。
原文链接:https://www.cnblogs.com/pcat/p/5467188.html
在linux里,source、sh、bash、./都可以执行shell script文件,那它们有什么不同吗?
———–
1、source
source a.sh在当前shell内去读取、执行a.sh,而a.sh不需要有”执行权限”
source命令可以简写为”.”
. a.sh注意:中间是有空格的。
原文链接:https://blog.csdn.net/niepangu/article/details/49443557
STM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。
ARM MDK中提供了如下两个接口来禁用和开启总中断:
__disable_irq(); // 关闭总中断
__enable_irq(); // 开启总中断
但测试发现这样一个问题,在关闭总中断后,如果有中断触发,虽然此时不会引发中断,但在调用__enable_irq()开启总中断后,MCU会立即处理之前触发的中断。这说明__disable_irq()只是禁止CPU去响应中断,没有真正的去屏蔽中断的触发,中断发生后,相应的寄存器会将中断标志置位,在__enable_irq()开启中断后,由于相应的中断标志没有清空,因而还会触发中断。所以要想禁止所有中断,必须对逐个模块的中断进行Disable操作,由于每个模块中断源有很多,对逐个中断Disable的话比较复杂,较为简单的方法是通过XXX_ClearITPendingBit()清除中断标志或者直接通过XXX_DeInit()来清除寄存器的状态。这样在__enable_irq()开启总中断后,MCU就不会响应之前触发的中断了。
参考链接:
ONVIF协议网络摄像机(IPC)客户端程序开发(6):使用gSOAP生成ONVIF框架代码
Onvif开发之代码框架生成篇
一、使用本地的wsdl文件生成Onvif框架代码
1.下载wsdl文件并解压
下载地址1:python-onvif
下载地址2:wsdl_2.4.2.zip
2.下载gsoap并解压
下载地址1:gsoap.zip
下载地址2:gsoap_2.8.103.zip
3.把解压后的wsdl文件拷贝到gsoap-2.8\gsoap目录下
4.把gsoap-2.8\gsoap\bin目录中的wsdl2h.exe、soapcpp2.exe文件拷贝到gsoap-2.8\gsoap目录下
5.使用wsdl2h工具,根据WSDL生成onvif.h头文件
wsdl2h -c -s -t typemap.dat -o onvif.h remotediscovery.wsdl devicemgmt.wsdl analytics.wsdl analyticsdevice.wsdl
media.wsdl deviceio.wsdl display.wsdl event.wsdl imaging.wsdl recording.wsdl replay.wsdl search.wsdl receiver.wsdl ptz.wsdl
继续阅读
du -sh
: 查看当前目录总共占的容量,而不单独列出各子项占用的容量
du -ah --max-depth=1
: 查看当前目录下一级子文件和子目录占用的磁盘容量。
du -lh --max-depth=1
: 查看当前目录下一级子目录占用的磁盘容量。
df -h
: 查看磁盘空间占用量
HDMI芯片+SDI芯片出现红色蓝色反色,是由于Cb、Cr错位所致。
对于ITE6605芯片,可修改0x1B寄存器(1<<3)位,更改此值可调整Cb、Cr的位序。
转载自http://bbs.eeworld.com.cn/thread-331983-1-1.html
NVIC_SetPriority(SysTick_IRQn, 0x04)
NVIC_SetPriority(SysTick_IRQn, n);
n=0x00~0x03 设置Systick为抢占优先级0
n=0x04~0x07 设置Systick为抢占优先级1
n=0x08~0x0B 设置Systick为抢占优先级2
n=0x0C~0x0F 设置Systick为抢占优先级3
NVIC_SetPriority函数指定中断优先级的寄存器位(STM32只用4位来表示优先级)的数据,中断优先级组设置为了2,即高2位用于指定抢占式优先级,低2位用于指定响应优先级,0x00~0x03高2位为0,
所以抢占优先级为0;0x04~0x07高2位为1,所以抢占优先级为1,以此类推。
此帖出自stm32/stm8论坛
网上搜索了很多网页,都是这样的说明。其实我是想知道优先级0和优先级1比,谁的优先级更高。
摘自
https://blog.csdn.net/yx_l128125/article/details/9703843
前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_4
原文链接
https://blog.csdn.net/season1201/article/details/54092072
在linux一般使用netstat 来查看系统端口使用情况步。
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。
该命令的一般格式为:
netstat [选项] 继续阅读
原文链接
https://blog.csdn.net/jazzsoldier/article/details/70184870
可以尝试使用如下三种组合指令:
ctrl-c
向当前进程发送 SIGINT 信号,用于终止一个进程
ctrl-z
向当前进程发送 SIGSTOP 信号,用于挂起一个进程
ctrl-d
不是发送信号,而是表示一个特殊的二进制值,表示 EOF,如果在输入无法结束,提示 “>” 符号(大于号)时,可以尝试按下该组合来结束输入
使用Secure CRT登录telnet查看打印,发现输出的英文字符有乱码。
iParamRead:317:Get Param 40 鮛$ Ua_+ M_g 0|F5 0|5F 0|24 0|1 0|E 0|0 Ua_+ M_g 0|F5 0|5F 0|26 0|1 0|0 0|0 Ua_+ M_g 0|F5 0|5F 0|2A 0|1 0|0 0|0 c++-+|/c++_-+ed.c:+O+ed_i+i+:114:O+ed I+i+ D-+e NET: +O+edM_gRc+T_+ +h_ead c_ea+e OK... NET: iO+edM_gP_-ce__T_+2C_ea+e +h_ead c_ea+e OK... c++-+|/b_-adca_+_-_-ce__.c-73: Bi+d S-c+e+ c++-+|/b_-adca_+_-_-ce__.c-80: I+i+ OK c++-+|/c++_+|_-_-ce__.c:iLedS+a++_T_+C_ea+e:1292:LED: C_ea+e +ed -_-ce__ +a_+. c++-+|/c++_+|_-_-ce__.c:iLedS+a++_T_+C_ea+e:1304:LED -_-ce__ +a_+ C_ea+ed OK. c++-+|/c++_+|_-_-ce__.c:iHPDS+a++_T_+C_ea+e:1499:HPD: C_ea+e HPD _+a++_ -_-ce__ +a_+. c++-+|/c++_+|_-_-ce__.c:iHPDS+a++_T_+C_ea+e:1511:HPD -_-ce__ +a_+ C_ea+ed OK. c++-+|/c++_+|_-_-ce__.c:iB_-adCa_+M_gP_-T_+C_ea+e:1756:BROADCAST: C_ea+e b_-adca_+ +_g -_-ce__ +a_+. c++-+|/c++_+|_-_-ce__.c:iB_-adCa_+M_gP_-T_+C_ea+e:1768:BROADCAST -_-ce__ +a_+ C_ea+ed OK.
按照网上操作,排除是字符编码的问题。以前只出现过串口打印有乱码,telnet出现乱码,这还是第一次。一开始怀疑是Secure CRT软件版本太老的问题,我用的版本是v6.2,很老的版本了。升级v8.3、v8.5,问题还是存在。使用其它终端软件putty、xshell,查看打印都是正常的,唯独Secure CRT打印出现乱码。重启电脑、重启设备,问题依旧。昨天下午尝试了很多方法,都解决不了这个问题。已经打算使用其它终端代替Secure CRT了。
今天继续看这个问题的时候,仔细看了打印出现乱码的地方,发现是从固定地方开始的。进一步查看发现是printf输出了一个特殊的ASCII字符“0xE”(val = 0xE),
printf("Set params %d %s\n", param, val);
正是这个字符导致了Sercure CRT后面显示的内容出现乱码。把这个打印去掉,显示就正常了。