一直使用VirtualBox
安装的Debian
环境编译WD MyCloud
的代码。但是最近VirtualBox
升级后,升级增强功能,然后共享粘贴板就不能使用了。
如果执行
可看到错误信息:
继续阅读解决VirtualBox无法共享粘贴板的问题(Debian)
一直使用VirtualBox
安装的Debian
环境编译WD MyCloud
的代码。但是最近VirtualBox
升级后,升级增强功能,然后共享粘贴板就不能使用了。
如果执行
在使用SSH客户端进行连接管理的时候如果长时间不输入命令, 服务器会自动断开连接, 尤其是有的人使用SSH作为代理连接这样的情况更是突出, 因此我在网上搜集了可以让 SSH 保持连接的方法与大家分享
通过修改 sshd 的配置文件,能够让 SSH Server 发送“心跳”信号来维持持续连接,下面是设置的内容
打开服务器 /etc/ssh/sshd_config,我在最后增加一行
这 样,SSH Server 每 60 秒就会自动发送一个信号给 Client,而等待 Client 回应,(注意:是服务器发心跳信号,不是客户端,这个有别于一些 FTP Client 发送的 KeepAlives 信号哦~~~),如果客户端没有回应,会记录下来直到记录数超过 ClientAliveCountMax 的值时,才会断开连接。
只要在/etc/ssh/ssh_config文件里加两个参数就行了
前一个参数是说要保持连接,后一个参数表示每过5分钟发一个数据包到服务器表示“我还活着”
如果你没有root权限,修改或者创建~/.ssh/ssh_config也是可以的
在这种方法中, 如果你只想针对某一个ssh连接进行持续, 你可以将上述配置文件复制一下进行修改然后在连接的时候使用 -F参数进行配置文件的指定。 当然因为只需要修改两个参数, 你也可以直接在连接命令中进行设定即:
常见无线通信概念简述
继续阅读常见无线通信概念简述
usbip
的目的是为了开发一个在局域网内共享的USB设备,也就是说你可以直接访问局域网内其他计算机的USB
设备。
下面我们看一下如何在ubuntu 16.04
跟树莓派(raspberry pi
)以及树莓派之间实现USB
设备在局域网的共享。
树莓派端配置为服务端,我们把USB
设备接入到树莓派上,服务端的树莓派上执行如下操作:
客户端的树莓派或者ubuntu 16.04
,执行如下操作查看以及操作服务端的设备。
树莓派
ubuntu 16.04
如果出错信息如下:
出错的原因为内核驱动没有正确加载,解决方法为:
如果出错信息如下(比如ubuntu 16.04
):
此时查看软件版本,可以看到如下:
这个原因是由于软件安装的是很早的一个版本,无法跟现在最新的版本进行通信。
这个驱动很早就以及整合进入了Linux
内核,控制软件也是内核提供。使用如下命令安装跟当前内核匹配的版本:
如果出错信息如下:
原因为usbip_host.ko
这个内核驱动没有加载,使用如下命令加载驱动:
VirtualBox
升级到5.2.6
以及之后的版本,无法启动之前版本关闭的处于休眠状态的芯片组为ICH9
的虚拟机。
报错信息如下:
1 2 3 4 5 6 7 |
不能为虚拟电脑 Debian 打开一个新任务. ich9pci#0: Device in slot 0xc0 has been removed! vendor=0x8086 device=0x2448 [ver=2 pass=final] (VERR_SSM_LOAD_CONFIG_MISMATCH). 返回 代码: NS_ERROR_FAILURE (0x80004005) 组件: ConsoleWrap 界面: IConsole {872da645-4a9b-1727-bee2-5585105b9eed} |
在开发Ti CC1310
应用的时候遇到了SDK
版本兼容问题。早期的应用都是从SDK 1.60
版本的例子中修改得来的,最近在升级到SDK 2.x
版本的时候遇到了编译不通过的问题。主要是某些变量名的定义改变了。
但是,翻遍了代码也没找打一个SDK
版本宏。
于是只能通过ti/devices/cc13x0/driverlib/driverlib_release.h
文件里面的DRIVERLIB_RELEASE_BUILD
的版本号来进行区分,根据数字的不同来使用不同的代码,例子如下:
其他的就是动态链接库的位置不同,导致链接的时候报告找不到链接库,需要重新设置一下,或者简单的移除一些找不到的库即可,例子中并没有用到全部的链接库。
Code Composer Studio 8.2
提供的Runtime Object View (ROV)
是一个非常好用的功能,能动态监视系统的运行情况。
该功能需要使用TI-RTOS
的应用才可以正常使用。
下面是官方的参考文档:
继续阅读Code Composer Studio 8.2运行时对象查看器Runtime Object View (ROV)
百度作为中国互联网的一颗毒瘤,实在是需要远离。可惜华为系统自带的输入法恰恰就是百度的输入法。
我们在实际编写代码的时候,经常需要判断当前编译环境是否存在我们需要的头文件,如果不存在,则使用其他头文件代替。
以前这个操作都是通过外部的configure
文件生成Makefile
的时候指定。
最近的GCC
已经增加了__has_include
这个内置函数判断头文件是否存在。
这个功能最早是Clang
实现的,现在GCC
终于补上了这个功能。
例子如下:
Code Composer Studio 8.2.0.00007
,GCC 5
支持这个内置函数。
在使用Ti CC1310
的硬件I2C
与外部设备进行通信的时候,无法长时间稳定运行,尤其是平时的测试开发板,使用杜邦线连接的情况下。
同等情况下的SPI
总线,一般不会发生此类问题,因此怀疑是GPIO
管脚的驱动能力不足导致的。
我的工程是通过简单修改Ti CC1310 SDK
自带的Code Composer Studio
的例子工程而创建的,因此存在已经进行过默认配置的CC1310_LAUNCHXL.c
,CC1310_LAUNCHXL.h
这两个文件。用Code Composer Studio
完全重新创建的工程,缺乏必要的默认配置。因此,我们还是建议根据Ti CC1310 SDK
自带的例子进行修改,而不是完全从头创建工程。
我们研究I2C
初始化GPIO
管脚的代码在simplelink_cc13x0_sdk_2_30_00_20/source/ti/drivers/i2c/I2CCC26XX.c
,相关的代码如下:
从上面的代码中,我们发现GPIO
管脚的驱动能力没有设置,根据CC13x0, CC26x0 SimpleLink ™ Wireless MCU Technical Reference Manual中的介绍,我们发现,如果不设置,默认情况下是PIN_DRVSTR_MIN(< (*) Lowest drive strength)
。这个驱动模式下,最省电,但是当有干扰存在的情况下,最容易导致出现错误。
查找Ti CC1310
提供的I2C
驱动程序,没有找到可以设置管脚驱动能力的接口。
网上有人通过直接修改Ti CC1310
提供的I2C
驱动程序,也就是simplelink_cc13x0_sdk_2_30_00_20/source/ti/drivers/i2c/I2CCC26XX.c
里的初始化代码(见上面的代码段)增加驱动能力属性来实现这个功能。
但是这种修改方式不推荐,修改的侵入太强。
从GPIO
的操作函数中,我们找到如下函数:
我们尝试从上层找到I2C
驱动使用的GPIO
管脚,然后调整其驱动能力。
从上面我们看到I2C
句柄的.object
指针指向了I2CCC26XX_Object
类型的结构体,这个结构体在simplelink_cc13x0_sdk_2_30_00_20/source/ti/drivers/i2c/I2CCC26XX.c
里的static int I2CCC26XX_initIO(I2C_Handle handle, void *pinCfg)
函数中被初始化,这个结构体记录了详细的GPIO
操作句柄。
因此我们可以使用如下的代码对GPIO
管脚的驱动能力进行调整: