Linux
coroutines
研发工程师,搞过IVI,多媒体,手机互联,全液晶仪表,仪表机器视觉自动化测试,IVI&仪表视频投射,AUTOSAR CP,MBD,DES以及功能安全和车载电子信息安全,:).
展开
-
Ubuntu 20.04默认源
有时候我们会想切回到Ubuntu的默认apt源,内容如下:deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ focal-updates main rest原创 2021-05-12 16:53:51 · 3657 阅读 · 0 评论 -
如何在Windows Subsystem for Linux (WSL2)中自动启动ssh服务
WSL2是Windows 10中提供的Linux子系统,基于Ubuntu内核。在使用无图形界面的WSL过程中,需要基于控制台与Ubuntu交互。Windows 10自带的终端与常用的基于ssh的终端,如putty比,操作方式不是特别方便,因此可以在Ubuntu中,安装ssh服务,来启用putty的支持。但WSL在启动时,并不会自动启动ssh服务,因此每次Windows 10重启后,都需要手动启动ssh服务。本文提供一种方式可以在Windows 10启动时,自动启动WSL的ssh服务。原创 2020-10-28 08:45:48 · 4136 阅读 · 0 评论 -
FUSE简介(译)
原文:http://www.linux.org/threads/fuse.6211/译文:FUSE(The Filesystem in Userspace)在Kernel中是一个奇特的部分,它允许通常的用户不用修改Kernel或取得Root权限,就能制作或使用他们自己的文件系统。在FUSE中使用的文件系统是虚文件系统(Virtual Filesystems),但并非所有的虚文件系统使用的都是FUS原创 2014-09-23 13:55:08 · 15608 阅读 · 2 评论 -
防不胜防
哎,写了段程序,可执行文件中定义了一个全局函数,要在Shared object中调用,却报: symbol lookup error 原来,可执行文件在link的时候,要加上: -Wl, –export-dynamic 否则linker不会导出可供动态库调用的全局符号。原创 2016-08-04 12:10:56 · 553 阅读 · 0 评论 -
Wayland相关名词解释
看了一天Wayland,如果不做个笔记,估计晚上没到家就忘光了(话说越来越健忘了,不知是什么毛病)。 1. Wayland: 是一个叫Wayland compositor的Display server与其客户端之间通信的协议。一个叫做Kristian Høgsberg的大哥对X不爽搞出来的。其与X不同的地方有以下几点: 而Wayland的合成管理器是集成在内部的,如下图所示:原创 2016-01-12 18:38:49 · 3197 阅读 · 0 评论 -
U盘安装Ubuntu 14.04报“CD-couldn't be mounted”的处理
今天需要装一台内部Ubuntu服务器,从网站下载了Ubuntu 14.04的server版,搞到U盘中,在电脑上安装居然报“Your installation CD-couldn't be mounted. This probably means that the CD-ROM was not in the drive. If so you can insert it and try again R原创 2015-12-14 13:43:27 · 7259 阅读 · 0 评论 -
GStreamer的AppSrc的使用(续2)
前面俩篇文章中,记录了使用AppSrc的情况下,如何注入数据与自动探测数据类型及解码,但Sink部分只强制指定了使用alsasink来输出声音。对于同时输出声音与图像的场景,GStreamer提供了playsink组件,用于自动选择合适的video与audio sink。原创 2015-03-12 11:18:38 · 6866 阅读 · 0 评论 -
AppSrc与Playbin2的结合使用
前面关于AppSrc的文章记录了使用AppSrc时,Pipeline的构建过程,这中间需要手动设置一些Element的属性。如果使用Playbin的话,可以省去这些过程。 Playbin支持URI解析,而AppSrc支持的URI格式为appsrc://。因此,只需要将Playbin的uri属性设置为appsrc://,则playbin就会自动查找到appsrc组件,并将其作为pipeline的so原创 2015-03-13 10:58:39 · 2932 阅读 · 0 评论 -
MTP协议开发入门
由于MTP协议在移动设备中的广泛应用,使其成为在设备互联产品中,必备的组件之一。设想在开车途中,接入车载设备,听听手机中的歌;或者在休息时,借用车载的大屏幕看看手机中的高清电影,这些都使得旅途变得轻松惬意。 本文尽量避免介绍MTP协议(文档已经写的很清楚),主要针对某个具体设备(Google Nexus 4),介绍MTP开发入门知识。1. MTP设备模型理解MTP设备模型要有基础的USB协议知识。原创 2015-03-17 14:33:00 · 16357 阅读 · 1 评论 -
putty自动登录ubuntu的方法及个别问题说明
网上常见的2种方法:一种是用ssh_keygen生成public key和private key,一种是用puttygen生成public key和private key,应该都没有问题,这里只说一下我遇到的 server refused our key的问题: 无论是用以上哪种方法,我的server都提示: server refused our keyputty的log也提示同样的错误:原创 2016-09-01 14:53:33 · 857 阅读 · 0 评论 -
GCov交叉编译覆盖率测试要点
多源文件的工程,每个用使用了-fprofile-arcs编译的源文件,都会生成一个扩展名为’.gcno’的文件,这个是用于生成’.gcda’的重要参考文件,需要安装到目标系统中;在目标系统中,执行覆盖率测试时,生成’.gcda’的默认路径与源文件的编译路径相同,在这种情况下,目标系统通常没有编译环境的完整路径,生成过程会失败。因此需要设计gcov工作的环境变量;gcov的环境变量有2个:GCOV原创 2016-09-29 16:38:02 · 3969 阅读 · 0 评论 -
DBus应用的俩种形态及实现
介绍一下基于DBus设计的应用程序的俩种形态及如何使用GDbus来实现。基于DBus的应用程序可以是使用DBus Daemon的总线型结构,每个DBus的请求通过DBus Daemon转发;或者是点对点的星型结构,Client与Server之间是直接的Peer2Peer的连接。这俩种结构各有优缺点:总线型的结构比较清晰,Server需要维护的连接较少,实际上只有一个与DBus Daemon相连的连原创 2014-09-16 10:25:02 · 8105 阅读 · 9 评论 -
基于Streaming I/O的V4L2设备使用
基于V4L2的应用,通常面临着大块数据的读取与拷贝等问题。尤其在嵌入式系统中,对于实时性能要求较高的应用,拷贝会花上几十个ms的时间,这通常轻则造成用户体验差,重则导致产品质量不达标。V4L2 Framework定义了几种不同的方式,用于从设备中读取数据,这篇文章简要介绍下在Streaming I/O模式下,如何使用这几种数据的获取与使用方法。Streaming I/O设计的目的就是为了减少在数据处原创 2017-04-12 11:32:47 · 4603 阅读 · 0 评论 -
异形ROI的建立与使用
在OpenCV中,ROI (Region of Interest)是非常重要的机制,它可以缩小图像处理的区域,使得程序的性能明显提升。如,在1920x720的灰度图中,模板匹配1个大小为50x50的灰度图,1G主频下的执行时间约为1s,但如果提前标定好对应的匹配位置,可以将时间缩短到1-3ms,性能提升极为可观。 OpenCV中的ROI设定有几种方式:使用矩形子图像作为ROI,如: Ma原创 2017-06-28 09:29:23 · 741 阅读 · 0 评论 -
Kernel启动过程中被Stuck的调试
向自定义的开发板移植Kernel时,经常会遇到Kernel启动时卡住的问题,通常,由于无法获取足够的信息,调试比较费时。一般这种问题都出现在某个驱动初始化过程中,由于失败处理时的逻辑问题导致Kernel卡住,因此如果能够得到是哪个驱动初始化失败,就很容易定位问题。 Kernel中,选项KALLSYMS可以将Kernel代码中的符号信息编译到Image中,同时,如果在Command Line中,传入原创 2017-08-07 17:46:31 · 712 阅读 · 0 评论 -
OpenCV (C++ vs Python) vs MATLAB for Computer Vision (译)
从国外Blog上找到一篇文章, 解答了我的一些问题, 在此冒昧翻译一下, 做个备忘且分享给对此感兴趣的朋友。 原文地址: http://www.learnopencv.com/opencv-c-vs-python-vs-matlab-for-computer-vision/ 翻译如下: 我们经常会被各类工具搞晕。打个比方,工具可以帮助你打磨你的艺术品,但它不能使你成为一个好的手艺人。好的手原创 2017-11-20 10:02:43 · 920 阅读 · 0 评论 -
安装Ubuntu 18.04.1到U盘
别试了,卡出翔了。原创 2019-02-05 23:58:37 · 1287 阅读 · 0 评论 -
Kernel中GPIO的Sysfs接口的使用
今天想写一个gpio的驱动,用于控制SoC上的一个电源控制io。看了一会儿,觉得对于gpio这种标准设备,kernel中应该有通用的驱动,甚至应该有Sysfs的接口可供用户空间程序使用。 于是先看了下driver目录,发现果然有gpio这个目录,不过里面的东西太多,一时没有头绪。又想起Documents目录,找到一个gpio.txt,果然Kernel提供了一个gpiolib的模块,用于向用户空间提原创 2015-03-02 17:29:00 · 5351 阅读 · 1 评论 -
GStreamer的AppSrc的简单使用
GStreamer的AppSrc的简单使用本文简单介绍下AppSrc的使用。 GStreamer版本0.10.35. 应用程序可以使用多种方式向Pipeline中注入数据,而使用AppSrc是最简单的一种。 AppSrc可以工作在俩种模式下:Pull模式和Push模式。Pull模式下,AppSrc会在需要的时候向应用程序请求数据(信号:need-data),而Push模式下,应用程序主动向Ap原创 2015-02-28 16:48:34 · 8597 阅读 · 6 评论 -
tap虚拟网卡的实现
Linux支持基于TAP/TUN的虚拟网卡实现(TAP实现2层协议,TUN实现3层协议),根据这个特点我们可以实现针对某种物理层的特定网卡,如串口。下面是大概的设计思路:1、打开内核的TAP/TUN支持。位于:Device Drivers->Network Device Support->Universe TAP/TUN device driver support。2、根据不同的内原创 2012-10-24 14:16:30 · 12832 阅读 · 0 评论 -
tar打印进度
tar xf ~/work/target-iMX6-rootfs-20130918_2231_DEVELOP.tar.bz2 --checkpoint=100 --checkpoint-action=dot --totals......................................................................................原创 2013-09-26 11:06:57 · 6330 阅读 · 0 评论 -
基于glib程序的Valgrind使用
作业原创 2013-05-29 22:16:11 · 2233 阅读 · 0 评论 -
如何使用cmake生成基于静态库的动态链接库
在工程搭建时,可能会有将静态库链接成动态库的需求,如出于代码保护的角度,某些模块会发布.a扩展名的静态库,我们要将多个这样的静态库链接成一个动态库。但与直接link目标文件不同的是,ld以默认参数执行时,并把静态库中没有用于的函数过滤掉,导致生成的so并未包含所要的函数,因此要加上--whole-archive参数,以保证所有的函数都包含在生成的so中。在使用cmake时,CMakeLists.t原创 2014-03-12 17:26:42 · 14929 阅读 · 1 评论 -
基于glib的单线程多事件源处理
传统实现程序命令行的输入一般使用scanf或者getchar系统调用,这样,要求程序实现时要使用一个独立的线程检测用户的输入,这样就涉及到多线程编程的一系列问题。glib的mainloop机制可以提供单线程多事件源的注入,只要我们将用户的输入转换成GSource,就可以实现一种单线程的既可以响应用户输入,同时又能在输入的间隙处理其它事件的类并发模型。 1、基本概念 1.1 GMainContext原创 2014-07-22 14:24:07 · 3325 阅读 · 0 评论 -
libudev使用说明书
libudev使用说明书1. 初始化首先调用udev_new,创建一个udev library context。udev library context采用引用记数机制,创建的context默认引用记数为1,使用udev_ref和udev_unref增加或减少引用记数,如果引用记数为0,则释放内部资源。2. 枚举设备使用udev_enumrate_new创建一个枚举器,用于扫描系统原创 2014-07-23 17:28:51 · 16928 阅读 · 7 评论 -
以前写过的几段分型算法的代码,用来测试2d图形性能还不错
#include #include #include #include #define PI 3.141592654void Koch(unsigned int h, int ax, int ay, int bx, int by, int c){ int cx, cy, dx, dy, ex, ey; double l, alpha;原创 2014-08-08 11:41:24 · 1843 阅读 · 2 评论 -
libusb异步中断传输使用说明
基于libusbx-1.0.18-rc1,libusbx现已重新merage到libusb。1. 初始化使用libusb_init初始化libusb,如果是单设备通信,ctx参数可以传NULL,表示使用默认Context.libusb_init( NULL );2. 注册hotplug事件侦听从1.0.16开始,libusb支持hotplug事件侦听,可以使用接口libusb_原创 2014-08-08 11:27:11 · 24366 阅读 · 4 评论 -
使用GVariant实现数据的序列化处理
内存中的大量数据如果要固化或跨进程传输,需要对数据进行序列化处理。使用GVariant除了可以描述数据自身的结构之外,还可以很容易的实现数据的序列化。下面的例子完成了一个自定义的5000条数据的序列化与恢复的过程:原创 2014-08-11 17:48:39 · 11654 阅读 · 0 评论 -
Linux下svn命令行工具使用简介
Linux下直接使用svn效率比较高,以下是我经常使用的svn命令:1. 帮助:svn help2. 添加目录:svn mkdir 3. 添加文件:svn add 4. 提交:svn ci [[xxx]…]5. 修改使用的默认editor为vim:exportSVN_EDITOR="vim"6. 比较work copy与版本代码区别:svn diff [xxx]原创 2014-08-26 16:17:36 · 2555 阅读 · 0 评论 -
glib下的文件名排序
从文件系统中读取的文件有时要原创 2014-09-11 14:27:56 · 1011 阅读 · 0 评论 -
高效遍历文件系统
123原创 2014-09-01 11:16:14 · 2649 阅读 · 0 评论 -
三种DBus传输数据的方式的比较
列出基于DBus的三种传输数据所使用的时间原创 2014-09-15 18:52:42 · 8819 阅读 · 3 评论 -
DESTDIR: GNU Make中的默认约定
GNU Make中,有许多约定俗成的东西,比如这个DESTDIR:用于加在要安装的文件路径前的一个前缀变量。比如,我们本地编译了一个第三方库,但需要对其打包发布给其他人使用,一方面如果我们安装到默认目录,比如/usr,这时,安装后的文件一但数量很大,则打包时很难找全;或者我们在configure时指定了--prefix,或cmake时指定了CMAKE_INSTALL_PREFIX,则pc文件内的编原创 2014-11-07 12:08:24 · 12130 阅读 · 0 评论 -
跨路由NFS无法挂载
今天发现跨路由NFS挂载失败:mount: 192.168.127.198:/home failed, reason given by server: Permission denied板子和虚拟机均有类似提示,查了一下,说是端口号的问题,在exports中,增加insecure选项,虚拟机没问题了,板子仍不行,提示:svc: failed to register lockdv1原创 2012-10-19 12:10:02 · 2411 阅读 · 0 评论