
嵌入应用
文章平均质量分 94
tumblerman
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
emWin中TEXT_SetBkColor注意事项
刚好遇到这个问题,收录一下,转帖自:原贴:https://blog.youkuaiyun.com/xinxinsky/article/details/84110752 今天打算做个测试项目用emWin做界面,其中TEXT要设置背景色,调用方法为TEXT_SetBkColor(hItem, 0x0000FF00);按理说应该有绿色背景色的,在VS调试中也是显示绿色背景色的,但是到单片机中确没有背景色的显示,很无语,研究到最后发现启用了ARGB,那么将最高位透明度设置为0xFF即可,即TEXT_SetBk..转载 2020-10-10 16:36:33 · 494 阅读 · 0 评论 -
关于emWin显示矢量字体TTF所踩的坑
最近由于项目的需要,要在Stm32上使用emWin 图形界面,其中涉及到中文字符的显示。由于TTF矢量字库可以随意缩放的优势,一劳永逸,省得建立多个字库文件切换,所以决定使用该方式。 关于Stm32+emWin+TTF的使用方法原子哥、安富莱和野火都有较详细的说明,这里主要对具体使用过程中踩的坑进行说明。移植TTF的库及stm32端的代码,这个可以看几位大佬的教程。很多同学开始跑了一下几位大佬的例程,还行,然后就雄心勃勃的开始准备移植自己喜欢的字库进去了,但是我可以很明确的告诉你...原创 2020-09-29 17:09:55 · 1703 阅读 · 1 评论 -
小米蓝牙鼠标在Ubuntu18.0.4下反应迟钝问题的解决
在Ubunt 18.04中使用小米蓝牙鼠标,发现鼠标活动范围特别小 ,反应非常迟钝,蓝牙鼠标设置里的速度调节调到最快还是很慢,网上查询资料,xset m 10 仍然无效。经过测试,后来发现得用xinput设置灵敏度才能解决。解决方法如下:设置鼠标灵敏度: xinput set-prop "pointer:MiMouse" "libinput Accel Speed" ...原创 2019-10-13 10:33:53 · 3439 阅读 · 0 评论 -
MDK错误More than one section matches selector - cannot all be FIRST/LAST的解决
加入的启动代码为多个,实际只使用其中一个: startup_stm32f10x_cl.s startup_stm32f10x_hd.s ... startup_stm32f10x_xl.s方案1:删除不需要的方案2:除了实际需要使用的以外,其余全部点右键Options for File'***',勾去灰化的Include in原创 2013-07-17 13:05:33 · 8544 阅读 · 7 评论 -
关于volatile的使用
使用volatile,不让编译器进行优化,每次读取或修改值得时候,都必须重新从内存或寄存器读取或修改,而非从缓存处读取过期的值,保证每次读取的值绝对是实时的。一般,出现在如下几个地方:1.中断服务程序中修改的供其它程序检测的变量2.多任务环境下各任务间共享的标志3.存储器映射的硬件寄存器原创 2013-07-17 09:18:22 · 574 阅读 · 0 评论 -
转帖一个最近用到的东西:“在QT下为开发板的键盘编写输入插件”,加上部分自己的补充说明
网上也有相同的文章,但在 QtCreator下不知道如何跟着网上的介绍来操作,所以写了此篇文章,照着做,保证有效 ^_^创建Qt的键盘插件,重点是创建两个类:一个基于QObject和QWSKeyboardHandler派生的键盘处理类(Handler)一个基于QKbdDriverPlugin派生的键盘插件类(Plugin)Handler类的主要作用是完成对底层键转载 2011-06-20 19:26:00 · 3604 阅读 · 10 评论 -
S3C2440 下Sharp LQ080V3DG01屏能用的一组参数
//.left_margin = 44, /*HFPD*/ //.right_margin = 116, /*HBPD*/ //.hsync_len = 96, /*HSPW*/ //.upper_margin = 19, /*VFPD*/ //.lower_mar原创 2011-06-30 19:25:00 · 1020 阅读 · 0 评论 -
arm-linux-gcc 与 gcc 关于字节对齐问题
方法1: #pragma pack(n) 使用伪指令#pragma pack (n),编译器将按照n 个字节对齐; 使用伪指令#pragma pack (),取消自定义字节对齐方式。 如果#pragma pack (n)中指定的n 大于结构体中最大成员的size,则其不起作用,结构体仍然按照size 最大的成员进行对界特别注意:该方法是在 gcc原创 2011-06-28 15:26:00 · 2557 阅读 · 0 评论 -
linux下GBK->UTF-8文件编码批量转换脚本
linux下GBK->UTF-8文件编码批量转换脚本find default -type d -exec mkdir -p utf/{} /;find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} /;这两行命令将default目录下的文件转载 2011-06-20 22:33:00 · 821 阅读 · 0 评论 -
收藏一个实用技巧:linux下查看动态链接库so文件的依赖的相关组建发布时间
我们很多c程序在windows下是以dll形式展现的,在linux则是以so 形式展现的。 windows一般不会因为编译dll文件的编译器版本不同而出先dll文件不能执行。 但是linux下,不同版本内核的linux下编译的c程序,在其他版本的linux下就容易出现无法执行的问题。主要可能是支持程序的内核相对于编译时的内核较高或者版本相对于编译时的内核较低。 那我们如何看别转载 2011-06-20 18:48:00 · 1876 阅读 · 0 评论 -
浮点数转字节组存储
浮点数转字节组存储,主要用于嵌入式等一些特殊情况,比如串口传数据,其主要思路是将浮点数(通常为4字节),每个字节单独传送,到接收端再将它们组合成一个浮点数即可。在C语言中,我们可以采用union方式实现。union f_data{float fdata;unsigned char cdata[4];}data; //单精度的浮点数,便于拆分字节//如果是双精度的则定义为原创 2013-09-02 21:29:30 · 3014 阅读 · 0 评论 -
fread读取yuv图像文件不完整的问题
症状: 今天测试视频处理算法,读取yuv图像数据,老是没按自己的意图出结果,后来测试代码,发现直接fread,然后原封不动的和fwrite,虽然文件大小是正常的,但保存的图像帧的后部分全为0; 原因: window中文件读取很文本文件和二进制,默认是文本文件方式,该方式遇到\0,函数就认为到了末尾,不往下读下去了。 解决: fopen文件的原创 2013-10-23 21:37:06 · 3091 阅读 · 3 评论 -
C指针参数传递
C指针参数传递#include using namespace std ;void fn(int *p1){ int *p2=new int; *p2=10; p1=p2;}void main(){ int *p=new int; fn(p); cout}/*分析:乍一看这个程序的输出结果好像是1转载 2013-11-10 12:33:25 · 928 阅读 · 1 评论 -
signal(SIGPIPE, SIG_IGN)
当服务器close一个连接时,若client端接着发数据。根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设转载 2014-01-05 20:37:30 · 896 阅读 · 0 评论 -
循环语句中一个不易发现的错误
今天在调试自己写的一个图像处理的程序时发现一个循环语句使用时不易发现的一个错误,平时得细节得不注意,搞了我一整天,留着以后参考。部分代码如下:unsigned int i,j; for(i=starty+1;i { for(j=startx+1;j {.... }}看出错误来了吗?取endy=0,或endx=0试试,程序不知道要运原创 2014-01-11 01:02:37 · 1536 阅读 · 0 评论 -
stm32 DCMI接口CROP功能使用
最近使用stm32F407单片机通过摄像头采集图像进行处理,其中使用到DCMI接口CROP功能。但在网上找了很久,有用的资料不多,只能自己研究,特将自己的使用方法记录下来。 1.如何设置CROP。 定义: DCMI_CROPInitTypeDef DCMI_CROPInitStruct;原创 2014-11-24 19:00:50 · 12240 阅读 · 2 评论 -
OV9655 YUV采集参数
OV9655的数据手册对于YUV方式采集图像数据描述非常模糊,而且貌似还有一些错误,经过几天的实验研究终于获得了OV9655的YUV 数据,特将需要修改的关键参数注释如下:1. COM7 地址 0x12 bit[1:0]=10(其中:00 RAW RGB data,01 RAW RGB interpolation,10 YUV, 11 RGB)2. TSLB原创 2014-12-03 15:01:17 · 2892 阅读 · 0 评论 -
在linux下shell脚本中if中用到or怎么写
在使用NCS2的测试程序demo_squeezenet_download_convert_run.sh时,一旦添加“-d MYRAID”,总是出现错误:./demo_squeezenet_download_convert_run.sh: 第 54 行: [: 参数太多其中第54行代码如下: if [ "$target" = "MYRIAD" or "$target" = "...原创 2019-05-21 00:14:12 · 29494 阅读 · 0 评论 -
ubuntu16.04 安装gnome经典桌面
一直比较喜欢旧版本Ubuntu的Gnome风格的菜单栏,在Ubuntu16.0.4中可以执行指令:sudo apt-get install gnome-session-flashback安装完成,注销一下,点击圆形图标,选择经典桌面,就回到经典桌面了。...原创 2019-05-11 22:03:43 · 5488 阅读 · 0 评论 -
收藏一篇关于QT移植比较精彩的文章
QT移植中的浮点问题的简介与内容作者:lanxinyuchs http://lanxinyuchs.iteye.com/blog/1037265 浮点问题的由来Inter Xscale这款新型高性能、低功耗的微构架兼容arm v5 te isa指令集,不过不支持浮点指令集。这是为了节省处理器芯片体积和降低运行功耗,XScale体系结构没有实现昂贵的浮点运算部件和除法部件。这些是嵌转载 2011-06-20 18:45:00 · 1081 阅读 · 0 评论 -
Qt做启动界面
Qt做启动界面 如何用Qt做启动界面,说起来也很简单。其实只需要创建一个元件dialog,然后插入一张图片背景,用一个定时器,使其在主窗口显式之前显示规定的一段时间。 下面这里有一段代码: int main(int argc, char *argv[]) { QTextCodec::setCodecForTr(QTextCodec::codecForName转载 2010-02-21 16:10:00 · 5191 阅读 · 6 评论 -
如何在程序中模拟键盘的按键事件?
QKeyEvent event(QEvent::KeyPress,Qt::Key_A,Qt::NoModifier);QApplication::sendEvent(mainWindow, &event);转载 2010-02-21 15:55:00 · 1446 阅读 · 0 评论 -
V4L2中两个关于图像占用空间大小的结构体项的理解
1.struct v4l2_pix_format 中的sizeimage 其说明为: Size in bytes of the buffer to hold a complete image, set by the driver.Usually this is bytesperline times height. When the image consists of variablel原创 2009-04-19 20:07:00 · 1263 阅读 · 0 评论 -
Linux系统下的多线程编程入门
引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80 年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底转载 2009-04-18 18:57:00 · 449 阅读 · 0 评论 -
linux编程段错误及调试方法
总而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一般来说, 段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的 gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由以64位转载 2009-04-18 15:38:00 · 783 阅读 · 0 评论 -
如何阅读源代码
分析一个源代码,一个有效的方法是: 1、阅读源代码的说明文档,比如本例中的README, 作者写的非常的详细,仔细读过之后,在阅读程序的时候往往能够从README文件中找到相应的说明,从而简化了源程序的阅读工作。 2、如果源代码有文档目录,一般为doc或者docs, 最好也在阅读源程序之前仔细阅读,因为这些文档同样起了很好的说明注释作用。 3、从makefile文件入手,分析源代码的层次结构,找出转载 2009-04-18 18:55:00 · 454 阅读 · 0 评论 -
GDB高级技巧
本文主要示例一些平常较少使用到的GDB功能,掌握这些用法有助于提高GDB调试和解决问题的能力。 1) 查看宏 默认情况下,在GDB中是不能查看宏的值及定义的,但通过如下方法,则可以达到目的: 编译源代码时,加上“-g3 -gdwarf-2”选项,请注意不是“-g”,必须为“-g3”,查看宏的值使用命令p,这和查看变量的值的方法相同,如果想查看宏的定义,使用“-macro expand”命令即可 2转载 2009-04-18 15:33:00 · 904 阅读 · 0 评论 -
GDB远程调试
GDB远程调试1. 到http://www.gnu.org/software/gdb下载gdb-6.6.tar.gz到/tmp目录 2. 解压到/opt目录下 #cd /opt #tar xzvf /tmp/gdb-6.6.tar.gz 3. 建立配置文件、编译 gdb允许把编译配置和编译结果放到任意的目录,因此可以在gdb目录之外建立一个专门存放编译结果的目录。 #cd /opt转载 2009-04-16 09:15:00 · 864 阅读 · 0 评论 -
Gtk的重绘功能
Gtk的绝大多数构件都是支持重绘功能的。什么是重绘?重绘就是操作系统运行多窗口程序,或是多个有窗口程序时,一个窗口将另一个窗口遮盖,之后这个在最上面(TopLevel)的窗口被最小化或是关掉之后,其下面的窗口重新显示出来。这个就叫做“重绘”。 不知道是由于什么原因,gtk的构件中,GtkDrawingArea就不支持“重绘”,需要程序员手动设置“重绘”,基本上包括重绘的界面一切细节,都要转载 2009-04-14 11:55:00 · 3082 阅读 · 0 评论 -
GTK 绘图相关函数
1.回调函数configure_event,创建窗口时调用该函数,创建一块新的PIXMAP。gboolean configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data) { if(pixmap) g_object_unref(pixmap); //Create the new pi原创 2009-04-14 11:28:00 · 1614 阅读 · 0 评论 -
V4L2应用程序框架
V4L2较V4L有较大的改动,并已成为2.6的标准接口,函盖video/dvb/FM...,多数驱动都在向V4l2迁移。更好地了解V4L2先从应用入手,然后再深入到内核中结合物理设备/接口的规范实现相应的驱动。本文先就V4L2在视频捕捉或camera方面的应用框架。V4L2采用流水线的方式,操作更简单直观,基本遵循打开视频设备、设置格式、处理数据、关闭设备,更多的具体操作通过ioctl函数来实现。转载 2009-04-18 14:56:00 · 1959 阅读 · 4 评论 -
程序编制的几点小窍门
对于理工科的科研工作者来说,编制程序是不可避免的。许多人常常为了程序中的一点点小错误花费了大量的时间进行调试,令人非常头疼。那么如何在编制程序中尽量少出现错误,尤其是低级错误呢?我总结了以下几点: 1、对于比较大的,算法比较复杂的程序,一定要把算法写清楚明白。有什么样的算法就会有什么样的程序,只要算法合理,可行,那么程序一定能够编制出来。所以算法是最关键的,在脑子里要非常清楚,而且要把它按转载 2009-04-18 19:09:00 · 859 阅读 · 0 评论 -
Qt SDK里面例子的索引和简单注释
Qt SDK里面例子的索引和简单注释examples//microsky2813@hitmail.com activeqt comapp dotnet//.net hierarchy menus multiple opengl qutlook simple w转载 2010-02-21 16:05:00 · 2009 阅读 · 0 评论 -
关于QT中enter的定义
在键盘上大enter QT里定义的是Qt::Return小键盘的是Qt::Key_Enter转载 2010-02-21 15:43:00 · 904 阅读 · 0 评论 -
Valgrind使用指南和错误分析
Valgrind是一个GPL的软件,用于Linux(Forx86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C语言中的malloc和free或者C++中的new和delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固转载 2009-05-10 00:09:00 · 8247 阅读 · 0 评论 -
Anjuta IDE 下调试程序容易忽略的一个问题
Anjuta IDE 下调试程序容易忽略的一个问题首先说一下我的系统环境:系统是Ubuntu 8.10,安装了build-essential,升级到最新版的gcc和libc等,其他还安装有gtk相关的库与开发环境,可以配合glade3进行gnome图形界面开发。平 时主要用的是Anjuta IDE,版本是2.4.1,应该是比较新的稳定版了。总体感觉不错,不过总觉得其内置的调试器转载 2009-05-09 23:41:00 · 2319 阅读 · 1 评论 -
mutex与semaphore的区别
mutex与semaphore的区别网摘1:Mutex 的发音是 /mjuteks/ ,其含义为互斥(体),这个词是Mutual Exclude的缩写。Mutex在计算机中是互斥也就是排他持有的一种方式,和信号量-Semaphore有可以对比之处。有人做过如下类比: * Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critica转载 2009-05-08 17:19:00 · 2457 阅读 · 0 评论 -
Linux操作系统线程同步:互斥量(mutex)
互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。 1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量, 在申请内存(mallo转载 2009-04-18 19:27:00 · 730 阅读 · 0 评论 -
逻辑地址、线性地址、物理地址和虚拟地址
一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。—— 这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。所以,说它转载 2009-04-18 19:04:00 · 467 阅读 · 0 评论 -
使用 GDB 调试多进程程序
GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较。GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc2 或者转载 2009-04-18 15:17:00 · 601 阅读 · 0 评论