
嵌入式开发
文章平均质量分 79
rayylee
awk 'BEGIN{O="o"~"o";o="O"=="O";O+=+o;o_+=o""o;for(;++_o!=o_-O;)O_=O_"%c";printf(O_,o_*(o_-o)+O+O,o_*(o_-O)-O,o_*o_,o_*o_,o_*(o_-o)-O,o_*(o_-O)+O,o_*(o_-O)+O,o_-o)}'
展开
-
s3c2440第一个裸奔程序——跑马灯(转)
经过前段时间的准备,现在终于开始正式写ARM程序了。本着先易后难的原则,先写无操作系统的ARM裸奔程序,以便熟悉s3c2440的内部结构,此后再编写有操作系统的程序。 第一个程序就从最最简单的点亮开发板上的四个LED开始,使这四个并排摆放的LED从一端向另一端依次被点亮,从而呈现出跑马灯的效果。四个LED连接到了B口的5到8引脚,输出低电平时被点亮,下面就是程序代码://定义三原创 2012-05-10 13:08:04 · 1203 阅读 · 0 评论 -
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解决办法
今天编译一个工程,在目标机上运行app,出现了这个错误。下面我们由这条报错信息入手,寻找问题的答案:1.首先保证程序没有被strip,也就是说可执行程序含有符号表信息。2.出现这个问题的原因是glibc的版本太低,查看系统glibc支持的版本root@ubuntu:/dvr# strings /lib/x86_64-linux-gnu/libc.so.6 | gr原创 2015-05-26 21:18:13 · 69590 阅读 · 7 评论 -
linux下C语言简单实现线程池
0 前言网上关于线程池的例子还是不少,简单明了的倒是比较少,看了网上的资料,打算借鉴网上的一些例子,自己实现以下。线程的概念就不多说,首先说一下多线程的好处:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。那么为什么又需要线程池呢?我们知道应用程序创建一个对象,然后销毁对象是很耗费资源的。创建线程,销毁线程,也是如此。转载 2015-06-30 19:13:07 · 750 阅读 · 0 评论 -
再谈 Linux下的nanosleep函数
int nanosleep(const struct timespec *req,struct timespec *rem); struct timespec { time_t tv_sec; /* seconds */ long tv_nse转载 2015-06-08 19:17:57 · 33181 阅读 · 1 评论 -
undefined reference to `__isnanf'
【from:http://sourceforge.net/p/mingw/bugs/2192/】I was migrating from cygwingcc to mingw gcc and got a linkage issue/cygdrive/c/stuff/ChibiOS_2.6.0/demos/Win32-MinGW/main.c:70: undefined refere转载 2015-04-08 22:02:19 · 2699 阅读 · 0 评论 -
Valgrind的使用方法
Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀。 一、Valgrind的主要功能 Valgrind工具转载 2015-04-10 17:02:20 · 541 阅读 · 0 评论 -
va_list/va_start/va_arg/va_end深入分析
va_list/va_start/va_arg/va_end这几个宏,都是用于函数的可变参数的。我们来看看在vs2008中,它们是怎么定义的: 1: ///stdarg.h 2: #define va_start _crt_va_start 3: #define va_arg _crt_va_arg 4: #define va_end _crt_转载 2015-03-18 22:35:30 · 812 阅读 · 0 评论 -
linux时间函数详解
一、时间相关说明格林威治时间表示0时区的标准时间。其他时区的时间和此标准时间均有时间差。UTC(Universal Time Coordinated)是世界协调时间,是格林威治时间在互联网中的表示方法二、标准C语言时间函数1、time(取得本地目前的时间秒数)#includetime_t time(time_t *t); 函数说明 此函数会返回从公元1970年1转载 2015-03-28 15:53:43 · 939 阅读 · 0 评论 -
24时区,GMT,UTC,DST,CST时间详解
全球24个时区的划分 相较于两地时间表,可以显示世界各时区时间和地名的世界时区表(World Time),就显得精密与复杂多了,通常世界时区表的表盘上会标示着全球24个时区的城市名称,但究竟这24个时区是如何产生的?过去世界各地原本各自订定当地时间,但随着交通和电讯的发达,各地交流日益频繁,不同的地方时间,造成许多困扰,于是在西元1884年的国际会议上制定了全球性的标准时,明定以英国转载 2015-03-28 15:05:31 · 8563 阅读 · 0 评论 -
Onvif开发之Linux下gsoap的使用及移植
一直以来都是在优快云上面学习别人的东西,很多次想写点什么但是又无从写起。由于公司项目需要,最近一段时间在研究onvif,在网上找了很多资料,发现资料是非常多,但是很少有比较全的资料,或者资料太多无从下手。我打算从做项目开始,用优快云博客记录我的项目笔记,同时希望能帮助到需要帮助的人,以感谢这么多年来优快云上各位高手对我的帮助。onvif的开发从gsoap的移植开始!今天完成了gsoap的移植转载 2015-03-07 10:25:41 · 948 阅读 · 0 评论 -
onvif 客户端发现
1、解压:unzip -X gsoap_2.8.10.zip 编译2、下载:wget http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl3、复制:cp gsoap-2.8/gsoap/typemap.dat .4、在typemap.dat 中添加:[转载 2015-03-07 10:31:28 · 1139 阅读 · 0 评论 -
onvif规范的实现:server端Discovery实现,通过OnvifTestTool12.06测试
【http://blog.youkuaiyun.com/ghostyu/article/details/8182516】说明:网上关于ONVIF开发的文章并不多,也更找不到具体的实例来入门学习。只能靠翻阅各种Specification摸索中前进,下面是最近几天的成果。调通了服务端(或者说设备端)的Discovery,使用OnvifTestTool12.06能够搜到我的设备。【来自http://blog转载 2015-03-07 19:31:48 · 730 阅读 · 1 评论 -
onvif开发之设备发现功能的实现
忙了一个多月,onvif总算告一段落了。这几个星期忙着其他的项目,也没有好好整理一下onvif的东西。接下来得好好整理一下自己的项目思路和项目经验,同时将自己的一些心得写出来,希望对人有所帮助。 相信大多数兄弟和我一样,onvif开发,最开始做的就是发现功能。这两天登录onvif的官网看才发现,onvif版本在八月份有更新,已经更新到V2.4了,于是下载最新的版本来进行。代码转载 2015-03-07 10:28:14 · 1324 阅读 · 0 评论 -
Onvif开发之代码框架生成篇
【http://blog.youkuaiyun.com/max_min_go/article/details/17562045】看了前一篇的ONVIF的简单介绍应该对它的基本使用都有了一些基本的了解了吧!下面我讲一步分解向大家介绍下如何通过gsoap生成需要的代码,以及代码中需要注意的问题[基于Linux平台 C开发] 生成Onvif相关源代码(我现在使用的gsoap版本是gs转载 2015-03-07 15:21:55 · 712 阅读 · 1 评论 -
linux中断底半部机制
中断处理程序----中断处理程序ISR是在中断发生时被调用时用来处理中断的函数,在中断运行期间,不能----执行有可能引起睡眠测操作,不能同用户空间交换数据,不能调用schedule函数,实现----中断处理有一个原则,就是尽可能快处理并返回地,但是多数中断产生时要进行大量的----耗时处理,为了使中断处理尽可能短并完成后续大量工作,linux引入了一种底半部机制,----分为顶半部(top half)和底半部(buttomhalf)。底半部机制----Tasklet----工作队列原创 2014-09-04 20:29:54 · 2934 阅读 · 0 评论 -
linux设备驱动中的并发控制
并发控制的概念----并发指的是多个执行单元并行执行,而并发的执行单元对共享资源(硬件资源和----软件上的全局变量、静态变量等)的访问则很容易导致竞态。竞态发生的情况----对称多处理器(SMP)的多个CPU----单CPU内进程与抢占它的进程----中断(硬中断、软中断、Tasklet、底半部)与进程之间原创 2014-09-02 20:23:00 · 909 阅读 · 0 评论 -
查看Linux版本系统信息方法汇总
1.uname -a :查看当前操作系统内核信息2.cat /etc/issue :查看当前操作系统发行版信息3.cat /proc/version :查看当前操作系统版本信息4.cat /proc/cpuinfo :查看cpu相关信息,包括型号、主频、内核信息等5.getconf LO翻译 2014-08-29 20:40:04 · 780 阅读 · 0 评论 -
gcc __attribute__关键字举例之visibility
visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。 g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设置,需在代码中使用__attribute__设置visibility属性。转载 2015-07-13 20:50:59 · 570 阅读 · 0 评论 -
使用openssl生成PEM格式私钥和公钥及ECDSA签名
一、生成密钥与读取的过程 /* 生成公钥 */ RSA* rsa = RSA_generate_key( 1024, RSA_F4, NULL, NULL); BIO *bp = BIO_new( BIO_s_file() ); BIO_write_filename( bp, "public.pem" ); PEM_writ转载 2015-08-01 16:54:26 · 9127 阅读 · 0 评论 -
busybox制作根文件系统
#!/bin/bash# https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/armeb-linux-gnueabi/gcc-linaro-6.2.1-2016.11-i686_armeb-linux-gnueabi.tar.xz# tar –xvf gcc-linaro-6.2.1-2016.11-...原创 2018-08-08 14:23:12 · 412 阅读 · 0 评论 -
QEMU模拟Cortex-A9,运行kernel、rootfs
宿主机:Centos7(Kernel3.10.0)交叉编译工具链:gcc-linaro-6.2.1-2016.11-i686_arm-linux-gnueabiQEMU:2.0.0Linux kernel:4.4.0busybox:1.27.2安装交叉编译链https://releases.linaro.org/components/toolchain/binaries/6.2-201...原创 2018-08-07 16:32:48 · 1016 阅读 · 0 评论 -
ubuntu下使用qemu模拟ARM-----uboot从sd卡启动内核
编译uboot编译内核用mkimage制作文件mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x60008000 -e 0x60008000 -d zImage zImage.img 制作ext2格式的sd卡dd if=/dev/zero of=a9rootfs.ext2 bs=1M count...转载 2018-08-02 13:59:27 · 2040 阅读 · 0 评论 -
基于QEMU的ARM Cortex-A9开发板Vexpress-ca9的Linux内核的编译和运行
宿主机:Ubuntu16.04 x64(Linux内核4.4.0)交叉编译工具链:gcc-arm-linux-gnueabiarm-linux-gcc:4.4.3QEMU:2.5.0Linux kernel:4.4.1busybox:1.25.1 一、准备1.创建工作目录armv7/,进入该目录2.下载内核源码文件linux-4.4.1.tar.xz3.下载busybox...转载 2018-08-06 14:25:57 · 1594 阅读 · 1 评论 -
QEMU模拟vexpress-a9 搭建Linux kernel运行环境
众所周知,QEMU是一个可以模拟ARM架构的虚拟机,拥有高速、开源、跨平台、支持多种架构等优点。接下来,我们将使用QEMU模拟vexpress-a9,并在上面跑一个Linux kernel,为接下来的工作实验做准备。实验环境及软件版本ubuntu 16.04.2 Linux kernel-4.14.7 QEMU-2.11.0 Busybox-1.27.2下载Linux kerne...转载 2018-08-03 17:42:21 · 794 阅读 · 0 评论 -
WSDL文件详解
WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的转载 2016-04-21 15:42:21 · 1084 阅读 · 0 评论 -
ubuntu openssl1.0.2g交叉编译
openssl官方下载:http://www.openssl.org/source/下载openssl-1.0.2g.tar.gz解压源代码:$ tar -zxvf openssl-1.0.2g.tar.gz进入目录: $ cd openssl-1.0.2g/执行./config :$ CC=arm-linux-gcc ./config no-asm shar原创 2016-03-25 10:06:51 · 4481 阅读 · 0 评论 -
gsoap插件之wsdd主动广播发送hello、bye
Invoking WS-Discovery Operations:1.发送hello加入一个网络soap_wsdd_Hello(soap, SOAP_WSDD_MANAGED, // or SOAP_WSDD_ADHOC for ad-hoc mode "to address", // "http(s):" URL, or "soap.udp:" UDP, o原创 2016-03-30 16:23:20 · 2114 阅读 · 0 评论 -
Linux IO模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理翻译 2016-03-02 16:53:06 · 549 阅读 · 0 评论 -
国嵌视频光盘及源码网盘下载地址-续
由于之前的115网盘不能下载了,现在给大家提供一个最新的链接。第1天:ARM系统开发基础http://pan.baidu.com/s/1bongEGv第1天:硬件访问http://pan.baidu.com/s/1mgZrjfE第2天:按键LED驱动程序设计http://pan.baidu.com/s/1bos6vuf第2天:设备模型原创 2015-12-21 19:03:33 · 9299 阅读 · 6 评论 -
ONVIF协议实现1:Server端Discovery的实现详解
最近在做摄像机ONVIF的协议,看了几天文档调了点代码和大家分享下,下步准备实现RTSP的流地址的获取。附件里面是我的完整代码工程,使用的是arm-linux-gcc,代码也可以在X86的Linux上跑,只要将Makefile里面额CC=arm-linux-gcc换成gcc即可工作平台及工具: Ubuntu:12.04 + arm-linux-gcc/gcc + OnvifT转载 2015-12-10 11:04:00 · 6953 阅读 · 0 评论 -
linux消息队列的内核限制
【from:http://blog.youkuaiyun.com/cwj649956781/article/details/8804908】消息队列:1.每次msgrcv一个消息,1.那个消息会在内核中移除 2.每次msgrcv都只会给一个消息出来,不管你rcv用多大的buf来接收,都是可以的。如果msgrcv的bufSize小于实际的该消息的大小,那么可以设置一个标志:表示截断。 如果不转载 2015-10-15 17:12:09 · 840 阅读 · 0 评论 -
Gvim开发环境配置笔记--Windows篇
1、安装Gvim7.3 : 下载地址http://www.vim.org/download.php#pc。2、安装中文帮助:vimcdoc-1.8.0-setup.exe 地址http://vimcdoc.sourceforge.net/ 会自动识别gvim的安装路径, 安装完后,gvim菜单中文出现乱码,在_vimrcset文件中增加:" 配置转载 2015-09-22 08:40:48 · 868 阅读 · 0 评论 -
linux下tmpfs文件系统简介
tmpfs是一种基于内存的文件系统,它和虚拟磁盘ramdisk比较类似像,但不完全相同,和ramdisk一样,tmpfs可以使用RAM,但它也可以使用swap分区来存储。而且传统的ramdisk是个块设备,要用mkfs来格式化它,才能真正地使用它;而tmpfs是一个文件系统,并不是块设备,只是安装它,就可以使用了。tmpfs是最好的基于RAM的文件系统。【tmpfs 和VM原创 2015-08-22 15:27:52 · 2420 阅读 · 0 评论 -
linux下tcpdump的使用简介
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。监视指定网络接口的数据包tcpdump -原创 2015-08-22 15:14:07 · 717 阅读 · 0 评论 -
Linux下使用fstatfs/statfs查询系统相关信息
Linux下使用fstatfs/statfs查询系统相关信息1. 功能#include int statfs(const char *path, struct statfs *buf);int fstatfs(int fd, struct statfs *buf); 查询文件系统相关的信息。2. 参数path: 需要查询信息的文件系统的文件路径名。fd原创 2015-08-22 14:58:33 · 1946 阅读 · 0 评论 -
Linux的input输入子系统:设备驱动之按键驱动
环境:kernel-2.6.30.4,arm-linux-gcc-4.3.3,目标板TQ2440一转载 2014-09-12 16:11:22 · 812 阅读 · 0 评论 -
ubuntu12.04下samba、tftp、nfs的配置
1.samba setting 1>apt-get install samba apt-get install smbfs 2>mkdir /home/linux/sharefile chmod 777 /home/linux/sharefile 3>vim /etc/samba/smb.conf add as follows:[share]原创 2014-08-29 20:27:43 · 1469 阅读 · 0 评论 -
在Qt 中如何使用OpenCV库
OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。Qt开发的程序一般需要借助qmake生成makefile文件。由于qmake在解析路径的时候不转载 2012-09-26 12:33:08 · 2137 阅读 · 0 评论 -
详解 Qt 串口通信程序全程图文 (5)
Qt 串口通信程序全程图文是本文介绍的内容,本节也是最后一节,本节主要讲述的是解决一下重要问题的说明:(下面所说的第一个程序是指第一节中写的那个程序,第二个程序是指第三节更改完后的程序,第三个程序是指第四节更改完后的程序。)问题一:更改第一个程序中的代码。struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_转载 2012-09-25 14:52:13 · 2078 阅读 · 0 评论 -
详解 Qt 串口通信程序全程图文 (2)
Qt 串口通信程序全程图文是本文介绍的内容,上一部分中已经介绍了实现最简单的串口接收程序的编写,下面将对程序内容进行分析。1、首先应说明操作串口的流程步骤一:设置串口参数,如:波特率,数据位,奇偶校验,停止位,数据流控制等。步骤二:选择串口,如windows下的串口1为“com1”,Linux下为“ttyS0”等,并打开串口。步骤三:读或写串口。步骤四:关闭串口。(我们上一转载 2012-09-25 14:50:15 · 2049 阅读 · 0 评论