- 博客(121)
- 资源 (9)
- 收藏
- 关注
原创 window下简单的生产者和单一消费的程序
window下简单的生产者和单一消费的程序使用window下的事件和临界区实现,在Linux可以使用条件变量和互斥锁实现,简单的代码如下:#ifndef _MSGQUEUE_#define _MSGQUEUE_/////消息队列节点//#include <Windows.h>#define MY_X_LOCK(x) EnterCriticalSection(x)#define MY_X_UNLOCK(x) LeaveCriticalSection(x)#def
2020-12-27 20:17:23
217
原创 补充Live555推实时流
lvrs.h //接口头文件#ifndef _LVRS_H_#define _LVRS_H_#ifdef __cplusplus#define EXTERN extern "C"#define EXTERN_BEGIN extern "C" {#define EXTERN_END }#else#define EXTERN ...
2019-09-18 18:44:31
1702
1
原创 虚拟鼠标设备驱动
虚拟鼠标设备驱动#include <linux/device.h> #include <linux/module.h>#include <linux/input.h>#include <linux/err.h>#include <linux/cdev.h>#include <asm/uaccess.h>#in...
2018-09-06 13:42:02
2275
原创 嵌入式Qt支持ttf字库,并显示中文
引言 最近在做QT项目发现中文没法显示,于是百度QT嵌入式显示中文,基本上提示的都是把ttf字库转换为QPF(QT专门支持二进制的),发现这个qpf本身制作就很麻烦,按照网上的做法实实在在来了一边,发现编译一个qvfb都好麻烦了,还有makeqpf程序。qvfb属于x86用于给QT提供程序提供fb环境的。makeqpf不能直接在系统上面跑,必须依赖于系统fb才能运行。发现编译qvfb...
2018-05-04 18:07:39
8918
原创 海思QT开发总结
1、QT移植 2、QT界面的透明度设置 发现设置空间透明度时候,QT显示的绿色的背景,没有透明!设置如下: 在程序起始的地方设置:hisi_init();QWSServer::setBackground(QColor(0,0,0,0));QWSServer::setCursorVisible(false);经过这样子设置,QT的透明度正常了!!3、对话框去掉最大化和最小化...
2018-03-01 21:00:00
2328
7
原创 QT移植到hi3536
QT版本:qt-embedded-linux-opensource-src-4.5.31、添加交叉编译(1)copy qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-arm-g++ 到 qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-hisiv400-g++
2018-01-15 20:20:47
1726
原创 C++的类大小
#pragma pack(push) #pragma pack(1)class task /*:public OSThread*/{//public: // void Entry();//private: // int a;// int b;};#pragma pack(pop)sizeof(task) =1 去掉一字节对齐,sizeof(task)=1 ,所以说即使是一个
2017-12-27 12:29:20
299
原创 FFmpeg 裁剪——音频解码
只留下某些音频的配置:./configure --enable-shared --disable-yasm --enable-memalign-hack --enable-gpl --enable-cross-compile --prefix=/home/liqinghan/workspace/ffmpeg-3.2.2/_install --arch=arm --target-os=linu...
2017-11-13 20:27:25
1838
原创 linux - windows远程鼠标
框图linux端;获取鼠标坐标,并通过socket传输给windowsmouse:linux下的鼠标设备,目录: /dev/input/mouseX , 每个mouseX对应有一个eventY,X和Y -> 0...n , X 和 Y并不一定对应。因为有些event是键盘的或者其他的输入设备。具体的设备对应关系应该由/proc/bus/input/devices文件
2017-10-15 21:31:09
666
翻译 5、 LwIP协议栈规范翻译——操作系统仿真层
5、操作系统仿真层 为了使lwIP可移植,操作系统特定的函数调用和数据结构不直接在协议的代码中使用。相反,当需要这样的函数调用和数据结构时,直接使用操作系统仿真层。 操作系统仿真层为操作系统服务提供统一的接口,如定时器,进程同步和消息传递机制。 原则上,当移植lwIP到其他操作系统时,只需要实现该操作系统的操作系统仿真层即可。操作系统仿真层提供TCP使用的定时器功
2017-07-24 22:43:24
500
翻译 4、 LwIP协议栈规范翻译——流程模型
4、流程模型 协议实现的流程模型描述了系统被划分为不同的流程的方式。用于实现通信协议的一个流程模型是让每个协议作为一个独立的进程运行。有了这个模型,严格的协议分层被强制执行,并且协议之间的通信点必须严格定义。虽然这种方法有它的优点,比如可以在运行时添加协议,理解代码和调试通常也比较容易,但也有一些缺点。正如前面所描述的,严格的分层并不是实现协议的最佳方式。此外,更重要的是,对于每一
2017-07-19 22:47:04
503
翻译 1、 LwIP协议栈规范翻译——简介
1、简介 在过去几年中,计算机和计算机支持设备接之间的互联到无线网络日趋增加。计算机已经越来越无缝的集成在了日常的设备且价格也在下降。同时,无线网络技术例如蓝牙[HNI+98]和IEEE802.11b WLAN [BIG+97]也在新起。这就可以运用到一些极具吸引力方案区域上例如健康管理,安防,运输,工业处理。小型的设备例如传感器可以连接到一个已经存在的网络基础设施上例如互联
2017-07-19 22:36:40
470
翻译 3、LwIP协议栈规范翻译——概述
3、概述 像许多其他TCP/IP实现一样,分层协议设计已经成为设计lwIP实现的指南。每个协议实现为自己的模块,其中几个功能充当每个协议的入口点。尽管协议层是单独实现的,一些层却不全是,正如前面所叙述的。这是为了提高处理速和内存使用率方面的性能而做的妥协。例如,当验证到来的TCP数据段的校验码和解复用一个数据段时,数据段源IP地址和目的IP地址必须被TCP模块所识别到。TCP模块不
2017-07-19 22:30:16
362
翻译 2、LwIP协议栈规范翻译——协议层
2、协议层 TCP/IP套件中的协议是以层次的方式设计的,其中每个协议层解决了通信问题的单独部分。这种分层可以用作设计协议实现的指南,因为每个协议可以与另一个分开实现。然而,以严格分层的方式实现协议可能导致协议层之间的通信降低总体性能的情况。为了克服这些问题,协议的某些内部方面可以被其他协议所了解。 必须注意,层次之间只共享重要的信息。大多数的TCP/IP协议的实现在应用层和
2017-07-19 22:28:13
439
翻译 【译】LwIP协议栈规范翻译——摘要目录
摘要LwIP是一种TCP/IP协议栈的实现。LwIP协议栈专注于减少内存的使用和代码的大小,使LwIP适用于嵌入式系统中在有限的资源下能够使用小型的客户机。为了减少处理和内存的需求,LwIP使用裁剪过的API,并不需要任何数据都拷贝。这个报告描述LwIP的设计与实现。算法和数据结构都用于协议的实现且描述了像内存和缓冲区管理系统的子系统。这个包括了LwIP参考API和使用LwIP的一些例子代
2017-07-19 22:23:33
477
转载 liunx系统负载量以及性能的分析
来自:http://heipark.iteye.com/blog/1340384一、什么是load average?linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度。Load
2017-07-16 10:46:18
325
原创 海思编解码芯片添加64M nor flash
uboot和内核都必须修改。struct spi_info hisfc350_spi_info_table[] ;在结构体里面添加自己的flash节点,我这里用的是MX66LS51235E{ "MX66L(S512)35(E/F)", //chip name {0xC2,0x20, 0x1A}, ///chip id nor flash has itself ID 3
2017-07-08 12:37:30
2448
原创 记录一些常用的函数
1、使用整数来计算除法的精度避免有些不能使用浮点型的场合/**didiv : 被除数*div : 除数*accuracy:精确度,精确到小数点后面的位数*return:返回的是扩大10^accuracy后的商值。 */uint32_t accuracy_cal(uint32_t didiv,uint32_t div, uint32_t accuracy){ uint3
2017-07-08 12:32:22
367
原创 音频技术1
音频技术1原始的音频要通过网络传输到某个点播放,一般经过采集(声波信号到模拟信号),采样(AD过程)、编码、解码、播放(DA过程)的过程。本文章主要讲述的是讲述整个过程一般的描述,让读者对音频传输的过程有一定的了解。鉴于本人才疏学浅,文中有什么描述不妥当或者有误的地方还请大家指正,谢谢!音频的采集:一般常见的有麦克风、话筒等设备。采集设备一般都是能采集声波信号然后转化成模拟量。
2017-06-16 23:06:18
452
原创 linux驱动调试
linux驱动调试linux 目录 /proc 下面可以配置驱动的调试信息,比如给proc目录的自己定制的驱动的一文件设置一个变量,然后驱动程序跟了proc的参数值来配置调试级别、类似于内核调试的级别来配置自己驱动调试级别。可以在dev目录创建一个设备专门用来打印相应的驱动调试信息。
2017-06-12 21:58:27
428
原创 stm32f205开发记录
stm32f205开发记录发现发送键盘按键按下立即发送一个松手动作,无法释放按键。经过测量中间要有一定的延时、有的说在发送完毕回调做相应的处理。具体我没有找到发送完毕回调,我使用延时几个毫秒,具体几个毫秒需要测量,我延时2ms左右既可以发送释放按键动作。 stm32f205的串口,尽管使用了标志位判断,仍然无法快速发送,中间还是需要一定的延时操作,感觉stm32f205和stm32f1...
2017-06-12 21:50:41
3234
原创 container_of 例子说明
很早前之前看的linux内核,一直想把container_of记录一下,趁今天想起就记录一下:内核中的描述/** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the typ
2017-06-02 23:02:56
453
原创 linux获取网络信息函数
获取IP地址 int sys_getIP(char *ip_addr) { char ip_sys[80] = {“ifconfig eth0 | grep inet | cut -d: -f2 | cut -d’ ’ -f1 > ipaddr.txt”}; FILE *ip_fp = NULL; int error_sys; if((e
2017-05-27 22:42:29
520
原创 hisi35xx串口驱动的完善
鉴于hisi的uart3还没有打通,ls /dev/ | grep ttyA* ,看到的只有ttyAMA0 和ttyAMA1,且使用应用程序打开ttyAMA1设备后,使用write函数,发送,示波器观察没有波形输出。猜想是GPIO复用管脚没打开于是编写了GPIO复用管脚驱动,加载驱动,ttyAMA1可以正常使用 。每次启动程序都要加载此驱动,比较麻烦,所以想要在内核添加,搜索UART,定位UA
2017-05-09 20:44:14
1680
原创 大屏拼接处理器
大屏拼接处理器概括 在大屏幕拼接系统中,我们很容易将焦点聚集在拼接单元上,而作为整个系统“神经中枢”的处理器往往被人忽视。对于大屏幕厂商来说,处理器是加强对大屏核心技术把控,打造差异化的关键。大屏处理器的优劣直接决定着整个大屏幕显示系统效果的好坏。那么,大屏处理器是什么?大屏幕处理器主要功能是将一个完整的图像信号划分成N块后分配给N个视频显示单元(如背投单元),完成用
2017-05-04 20:56:48
3490
1
原创 2011年戴尔笔记本维修总结
总结:1、戴尔笔记本的结构有点差,螺丝很多,相对于我用自己的acer 4755g来说,拆起来很费经。 2、戴尔笔记本内部构造也很复杂,特别是键盘的排线太短了,想再次安装回去需要好长的时间才能弄好。 3、经过检查,发现此笔记本硬盘坏掉,无法开机。 以下是图片! 奇葩的硬盘位置,要把整个结构拆开才能换硬盘,相比我的acer,只需要后
2017-04-29 13:32:07
998
转载 【转载】NAT穿透的详细讲解及分析
这篇文章看了很有收获,很多东西都和自己的猜想一样。于是转过来分享一下,感谢博主!摘自:http://bbs.pediy.com/thread-131961.htm一、什么是NAT?为什么要使用NAT?NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法IP地址。NAT的出现完美地解决了lP地址不足的问题,而且还能
2017-04-24 10:46:55
5104
原创 stm32f407以太网及USB OTG快速开发
stm32f407以太网及USB OTG快速开发引言想要快速完成网络协议栈和USB OTG功能,使用ST自家的工具STM32CubMx再好不过的了。如果你还不会使用,别着急下面我会一步一步的用图片告诉你如何做。软件平台:windows、STM32CubMx、keil v5硬件平台:原子的stm32f407ZGT6开发板,STM32CubMx配置1、以太网管脚的映射配置
2017-03-18 19:09:05
28342
2
原创 STM32 内部flash的读写程序
/* Base address of the Flash sectors */#define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbytes */#define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000) /* Base @ of S
2017-03-07 13:04:39
1363
原创 socket通信的遇到的问题1
使用select对fd可读写,格式while(ctrl){////FD_ZERO(&readSocketSet);FD_SET(readSocketFd,&readSocketSet);ret = select(maxFd,&readSocketSet,NULLNULL)switch(ret){case 0: break;case -1: exit(-1);brea
2017-02-23 22:19:10
573
原创 AT24C128 EEPROM的读写
记录AT24C128 eeprom的多字节读写#define _EEPROM_DEBUG_LEVEL 0 #if _EEPROM_DEBUG_LEVEL == 1 #defineEEPROM_DEBUG(fmt,args...) do{ \ printf(fmt,##args);\ }while(0
2017-02-17 21:22:16
7495
原创 STM32连接射频si4438模块
SI4438射频模块参数:1、频率范围:425-525 MHz2、数字接收信号强度指示(RSSI)3、64字节收发数据寄存器(FIFO)4、跳频功能等!使用SI的WDS工具生成代码1、 选择仿真模式2、 芯片选择si4438 B1模式3、 Radio Configuration Application4、 Select Application
2017-02-14 22:44:55
8590
原创 基于live555实时流服务器解析
#define READ_FROM_FILES_SYNCHRONOUSLY 1READ_FROM_FILES_SYNCHRONOUSLY 1void ByteFrameLiveVideoSource:: doGetNextFrame(){ if(fLimitNumBytesToStream && fNumBytesToStream == 0) { handleClo...
2017-02-07 21:31:19
3072
原创 使用STM32CubeMx创建U盘读写程序
平台windows 7CPU:STM32F205软件:keil 5下载STM32CubeMx:http://pan.baidu.com/s/1bpsvV6R安装好后,建立usbMassClass工程,注意选择芯片。选择自己要的功能如下图:外部是时钟的选择:FSUSB的选择debug口选择UASRT1选择USB IPco
2017-01-21 11:18:35
17432
11
原创 建立live555海思编码推流服务
因项目需要,这一周弄了一下live555。需求:海思编码——>RTSP server,使用VLC可以访问,类似于网络摄像机的需求。看了一下,live555的架构太复杂了,半桶水的C++水平还真的需要花点时间才可以明白。由于live555的例子server使用的是读取文件,打包成RTSP包然后发送。例子运行live555MediaServer,把对应的视频文件发到该服务的目录下面,在VLC使用rtsp
2017-01-13 20:56:19
13275
7
原创 记:STM32F205双USB开发做device
STM32F205双USB开发做device。 记得使用STM32CubeMx联合开发,会让你有意想不到效率!STM32F205有两个USB接口,一个是FSUSB,另外一个是HSUSB。 FSUSB——full speed USB ,HSUSB——high speed USB FSUSB最高支持全速的USB,HSUSB不仅支持全速的USB还支持高速的USB,当然HSUSB要支持高速的USB必须
2016-12-20 22:29:30
5067
原创 linux alarm 的使用
#include#include#include 第一种:void timer_handler(int m){ count++; printf("m: %d count:%d \n",m,count);} void set_timer() { struct itimerval itv; itv.it_value.tv_sec = 1; //
2016-07-13 21:57:21
935
原创 利用freetype显示unicode字符
使用freetype加载矢量字库,ttf字体文件,通过字符的unicode,load一个字符的点阵!汉字的unicode使用32bit既可表达,比如‘’我‘’的unicode是0x6211定义全局变量static FT_Library g_lib;static FT_Face g_face;初始化freetypeint init(){ int error; erro
2016-07-13 21:55:02
4397
USB 上位机控制LED灯
2013-01-29
JLINKV8重烧固件后解决不识别问题并能重烧固件
2013-01-25
1602A液晶和单片机构成的时钟
2010-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人