自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (2)
  • 收藏
  • 关注

原创 Ubuntu16.04安装配置nginx和php

一、安装Nginx sudo apt-get update sudo apt-get install nginx nginx -v查看版本 二、安装php7.0 sudo apt-get update sudo apt-get install php7.0 php -v查看版本 三、nginx适配php 修改/etc/nginx/sites-available/default如下...

2018-05-04 22:08:54 384

转载 CMake之交叉编译

一、引言 很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。二、CMake交叉编译配置CMake给交叉编译预留了一个很好的变量即CMAKE_TOOLCHAIN_FILE,

2017-07-20 18:44:26 1139

转载 Qt5之QWS和QPA

Qt是一个夸平台的库(一直宣称“Qt everywhere”),但是Qt底层不是夸平台的。比如:Qt中Gui部件的核心类QWidget,该类除了qwidget.h 和 qwidget.cpp两个原文件外,还有kernel/qwidget_mac.mm kernel/qwidget_qws.cpp kernel/qwidget_win.cpp kernel/qwidget_s60.cpp

2017-07-13 08:56:55 7154

原创 文章标题

一、系统时钟(一)时钟体系1、时钟控制逻辑:既可以外接晶振,然后通过内部振荡电路产生时钟源;也可以直接使用外部提供的时钟源,它们通过引脚的设置来选择。2、时钟源: (1)一个主振荡器 (2)一个32.768kHz低功耗振荡器 (3)一个低功耗的内部RC振荡器3、时钟管理 (1)SLCK (2)MAINCK (3)PLLACK (4)PLLBCK如图所示: 为了降低在启动系统时对电源的

2017-06-24 12:07:55 433

原创 VirtualBox虚拟机与主机共享文件

一、在Windows7下安装VirtualBox虚拟机二、在VirtualBox虚拟机中安装Ubuntu16.04系统三、Ubuntu系统与Windows7系统共享文件1、打开VirtualBox中的Ubuntu16.04系统,点击设备/安装增强功能,安装此功能;2、点击设备/共享文件夹,选择固定分配,点击右上角的添加共享文件夹图标,然后点击“其他”选项,选择要共享的Windows下的共享文件夹,例

2017-06-21 11:41:46 502

原创 文章标题

一、引言最近终于有时间把《X86汇编语言:从实模式到保护模式》这本书好好读了一遍,真是畅快!这本书从书名看,是一本讲x86汇编语言的书,但它真正的价值是一步一步带领读者进入操作系统的世界,写得非常的好,很佩服作者能够透过这本书将操作系统的原理讲清楚!本人是搞嵌入式开发的,读完这本书后,我觉得完全可以按照此书的写作思路来写一本《从ARM汇编到操作系统》的书,虽然自己对ARM的掌握还很有限,但是我觉得值

2017-06-20 17:34:39 494

原创 嵌入式Linux设备驱动开发笔记(五)

一、设备模型(驱动模型)的介绍和架构device model & driver model 设备模型从2.5版内核引入,最早是为了解决电源管理,热插拔等方面的问题,后来扩展到内核的很多领域。(1)设备结构体设备模型的核心内容是在内存中创建和实际存在设备一一对应的结构体,结构体中记录设备的物理信息,并且通过结构体间的关系对应设备的硬件拓扑。设备结构体的生存周期和设备一致,如果将设备移除,则内核会释放

2017-06-19 16:42:57 510

原创 嵌入式Linux设备驱动开发笔记(四)

一、Linux内核锁保护(1)为什么要保护如果模块中的某个全局变量可以被多个进程/中断同时访问,那么就必须要提供加锁机制进行保护。同时写是不允许的。(2)和加锁保护相关的名词A、临界区(critical region)访问要保护的变量的代码段,称为临界区。临界区中同一时间只能一个人进入。临界区的代码可能分散在不同的函数中。如果要对临界区加锁,则必须保证在临界区的所有部分都加锁。如果有遗漏,则加锁是不

2017-06-19 11:06:07 546

原创 嵌入式Linux设备驱动开发笔记(三)

一、中断源和中断号中断是硬件通过硬件电路产生的,因此,如果一个外设没有独立的中断线,也就不能产生中断。中断控制器的工作是收集硬件产生的中断,然后根据预先设定好的优先级依次提交给cpu。 对arm处理器来说,中断控制器的发展经历了3个阶段: PIC (Programmable Interrupt Controller) VIC (Vector Interrupt Controller) GIC

2017-06-17 12:21:38 482

原创 嵌入式Linux设备驱动开发笔记(二)

一、内核的时间(1)Tick(滴答)内核采用了一个新的时间单位来进行计时。该时间单位称为tick(滴答),一个tick对应硬件定时器两次中断之间的时间间隔。当前内核每秒钟硬件定时器会发生HZ次中断。tick和秒的换算关系为: 1 tick = 1/HZ秒。 HZ是在内核make menuconfig(内核的.config文件)时确定,如果要修改HZ值,需要重新编译内核。(2)相对时间内核从开机开

2017-06-17 10:54:58 583

原创 嵌入式Linux设备驱动开发笔记(一)

一、Linux设备的分类字符设备、块设备、网络设备,三种设备之间的区别是数据的交互模式,分别为: 字节流、数据块、数据包。二、VFS核心结构体VFS核心结构体定义在”linux/fs.h”头文件中。1、struct inode结构体 记录文件的属主、访问时间等信息。当第一次打开文件的时候由VFS创建并初始化。当文件的所有引用都退出后,释放inode; 如果用户态有多个人同时打开一个文件,则VF

2017-06-16 11:43:38 4184

转载 Linux环境下段错误的产生原因及调试方法小结

最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问

2017-05-18 10:52:03 309

原创 Qt之数据库编程

一、问题一 QtCreator编译报错: error: undefined reference to _imp___ZN12QSqlDatabase17defaultConnectionE' error: undefined reference toimp___ZN12QSqlDatabase11addDatabaseERK7QStringS2’ error: undefined refer

2017-05-17 15:03:36 870

原创 Qt线程的应用

最近深入研究了一下Qt的多线程编程,简单总结一下Qt中的线程应用。一、QThread类QThread类提供了一个平台无关的方式来管理线程。一个QThread对象在程序控制中管理一个线程,线程在run()中执行。默认情况下,run()通过调用exec()启动事件循环,并在线程里运行一个Qt事件循环。二、Qt线程的两种运行方式1、QObject::moveToThread()将对象移至线程的方式clas

2017-05-02 10:13:26 496

转载 SDL介绍

一、简介SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。 SDL使用GNU宽通用公共许可证为授权方式,意指动态链

2017-04-26 16:14:45 744

原创 关于gettimeofday函数的使用问题

最近在项目中使用到了gettimeofday这个函数来计算系统当前毫秒数,发现这里面有个问题需要特别注意一下。 1、首先来看一下函数原型:int gettimeofday(struct timeval *tv, struct timezone *tz)其中结构体struct timeval定义如下:struct timeval { time_t tv_sec; /* s

2017-04-21 16:24:41 5391

原创 GDB调试器的使用

一、使用概述GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具,它可以用来调试C、C++等的程序。 GDB的命令行调试采取的是一种交互式的界面,启动GDB后就可以通过各种命令对程序进行调试。GDB命令很多,而且提供了一个在线的帮助命令help。二、使用流程(1)给出实例代码代码文件gdb_example.c,编译程序 $gcc -g gdb_example.c -o gdb_exa

2017-04-20 17:06:52 431

转载 Alignment trap

遇到的问题: (题意请描述清楚) : 程序执行一段时间(不固定, 一分钟以下) 会出现Alignment trap: xxx(pid) PC=0x0001645 ….. 来自kernel的错误讯息, 因为现在已经把成是尽量精简.. 但还是抓不出错误, 也用 addr2line 这个程序将PC所指出的 function address印出, 但也是没有帮助… 请问要怎样抓这类bug呢? 谢谢!

2017-03-24 09:45:12 876

转载 alignment fault

什么是对齐异常?简单来说,当CPU访问内存地址时,如果发现访问的地址是不对齐的,硬件(部分)就会自动触发对齐异常。对齐即要求被访问的地址满足其数据类型的位宽要求,比如要访问一个4字节int型的数据,但是提供的地址不是4字节对齐的,那就是不对齐了。也就是说要访问的数据的位宽长度是多少,那么访问的地址就必须是按这个位宽长度对齐的。如果是char类型的,那就没有没有对齐要求了。为什么在部分硬件上出现?部分

2017-03-24 09:37:52 451

转载 Qt之QWS

QWS:Qt Windows System在Qt中的术语QWS的全称是Qt windows system,是Qt自行开发的窗口系统,体系结构类似X-Windows,是一个Client/Server结构,由QWSServer在物理设备上显示,由QWSClient实现界面,两者通过socket进行彼此的通讯。在很多嵌入式系统里,Qt程序基本上都是用QWS来实现其显示,这样就保证了程序的可移植性。 Qt

2017-03-20 17:35:58 969

转载 Qt核心机制与原理

★了解Qt和C++的关系 ★掌握Qt的信号/槽机制的原理和使用方法 ★了解Qt的元对象系统 ★掌握Qt的架构 ★理解Qt的事件模型,掌握其使用的时机信号与槽、元对象系统、事件模型是Qt机制的核心,如果您想要掌握Qt编程,就需要对它们有比较深入的了解。本章重点介绍了信号与槽的基本概念和用法、元对象系统、Qt的事件模型,以及它们在实际使用过程中应注意的一些问题。Qt对标准C++的扩展 标准C+

2017-03-20 15:34:38 23559 9

原创 Qt相关概念

一、Qt简介Qt是一个1991年由奇趣科技(TrollTech,挪威)开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。Qt是一个完整的C++应用程序开发框架(库或架构),它的

2017-03-18 12:20:22 780

原创 第一部分:基本功能

一、类型和声明 1、字符类型(char、signed char、unsigned char) a、能够把char转为整数也引起了一个问题:一个普通char是有符号的还是没有符号的?由8个二进制位表示的256个值可以解释为整数值0~255,或者解释为-128~127。不幸的是,关于普通char如何选择的问题是由实现决定的。C++提供了另外两个类型,它们都确切地回答了这个问题:signed char

2017-03-16 16:15:56 371

原创 内存越界问题

一、背景 最近手上的项目出现一个如下的BUG,在网上查了查原来是内存越界的问题。 * glibc detected ./test5: malloc(): memory corruption: 0x2f300b08 **二、延伸 1、通常我们会犯的内存问题大概有以下几种: 1.内存重复释放,出现double free时,通常是由于这种情况所致。 2.内存泄露,分配的内存忘了释放。

2017-03-09 14:23:07 3135

原创 FFmpeg解码USB摄像头MJPEG输出

一、FFmpeg解码流程: 1、注册所有容器格式和CODEC:avcodec_register_all(); 2、查找对应的解码器:avcodec_find_decoder(AV_CODEC_ID_MJPEG); 3、分配编解码器参数数据结构avcodec_alloc_context3(AVCodec *codec); 4、对于部分编解码需要对上一步分配的数据结构进行初始化,因为某些参数在视

2017-02-21 09:55:01 11869 2

原创 CMake

一、百度百科 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefi

2017-02-16 14:30:38 193

转载 libjpeg库支持解码内存中的jpeg数据

找到jdatasrc.c这个文件(从命名可以看出其跟输入数据相关),在my_source_mgr这个结构体的上方添加一个结构体(jpeg内存块描述相关)如下: typedef struct{ UINT8* img_buffer; long buffer_size; long pos; }BUFF_JPG;然后将my_source_mgr结构的定义修改如下: typ

2017-02-10 11:42:16 1436 1

转载 视频压缩中的I帧、P帧、B帧

视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用

2017-02-05 08:48:32 1180

原创 项目总结

1、对业务毫无了解; 2、没有明确的产品需求; 3、没有产品设计方案; 4、不具备产品开发需要的技能(例如Qt界面开发); 5、没有进行项目管理(项目经理失职);

2017-01-24 10:09:17 204

原创 Qt Creator出现error while building问题的解决办法

Qt Creator有时会莫名出现error while building的问题,经过研究发现原因是在projects选项(软件界面的左侧)的配置上出现了错误。打开projects选项界面,发现在General标签下的Qt Version项为空了,此时就会出现error while building的问题,需要重新选择相应的Qt版本,才能恢复Qt Creator的正常使用。

2017-01-20 15:58:12 2277 1

原创 Linux下编译LTIB时找不到zlib的解决办法

一、问题一 最近在使用基于ARM Cortex-A9内核的飞思卡尔i.MX6Q四核处理器开发一款产品,在ubuntu 12.04上编译LTIB时遇到了找不到zlib的问题(在此之前已经安装了必须的各种库文件)。错误信息如下:ltib cannot be run because one or more of the host packages needed to run it are either

2016-12-20 16:29:10 866

原创 BusyBox---- Linux 工具里的瑞士军刀

一、简介BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android

2016-12-20 13:46:18 2419

原创 NEON----ARM通用 SIMD 引擎

一、NEON1、简介 NEON是适用于ARM Cortex-A系列处理器的一种128位SIMD(Single Instruction, Multiple Data,单指令、多数据)扩展结构。ARM® NEON™ 通用 SIMD 引擎可有效处理当前和将来的多媒体格式,从而改善用户体验。 NEON 技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术

2016-12-20 11:28:46 2402

原创 LTIB(Linux Target Image Builder)

一、背景 由于linux开源世界太多软件版本不断升级,相互兼容极差,不同的软件由不同的志愿者维护,互相根本没有考虑到兼容性,这导致在嵌入式linux上开发的工程师的噩梦。在这种情况下,少数高人干起整合这些乱七八糟开源软件的事情,目标当然是尽量提供一个方便使用的软件包,避免那些琐碎繁杂的配置安装工作。这样便产生了两个比较突出的开发包。LTIB(Linux Target Image B

2016-12-20 09:12:41 442

原创 嵌入式Qt之QWidget的无边框显示

一、在Qwidget类的构造器内进行以下设置 setWindowFlags(Qt::FramelessWindowHint);

2016-12-07 17:14:49 3061

原创 Qt之QStackedWidget和QStackedLayout

一、QStackedLayout类 QStackedLayout类可以对一组子窗口部件进行摆放,或者对它们进行“分页”,而且一次只显示其中一个,而把其他的子窗口部件或者分页都隐藏起来,QStackedLayout本身并不可见。分页是从0开始编号的。要使某个特定的子窗口部件可见,可以用一个页号来调用setCurrentIndex()。使用indexOf()可以获取子窗口部件的页号。这里给出部分实例代

2016-12-07 17:06:07 3752 1

转载 Qt之格栅布局(QGridLayout)

一、简述QGridLayout:格栅布局,也被称作网格布局(多行多列)。栅格布局将位于其中的窗口部件放入一个网状的栅格之中。QGridLayout需要将提供给它的空间划分成的行和列,并把每个窗口部件插入并管理到正确的单元格。 栅格布局是这样工作的:它计算了位于其中的空间,然后将它们合理的划分成若干个行(row)和列(column),并把每个由它管理的窗口部件放置在合适的单元之中,这里所指的单元(ce

2016-12-07 15:17:36 1045

原创 QT/E中的字体

QT/E(Qt for Embedded)使用FreeType 2字体引擎来支持字体显示。比如TrueType(ttf),Postscript Type(PFA/PFB),Bitmap Distrubution Format fonts(BDF)等。同时QT/E自己还支持Qt Prerendered Font(QPF)字体,是一种位图字体,不可缩放,作为QTE的本地字体。TrueType是由苹果和微

2016-12-06 14:21:55 797

原创 嵌入式Qt开发之Qwt的移植

一、Qwt简介 qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等,目前已经应用到许多工业领域,同时qwt也致力于3d的开发。

2016-12-06 12:11:03 679

原创 嵌入式Qt开发之环境配置

一、Qt/E的开发流程 1、Qt源码—–>交叉编译—–>生成Qt库 2、Qt库的作用: a、用在开发主机上,供编译Qt应用程序使用; b、用于目标板上,运行Qt应用程序时动态加载。 二、Qt源码交叉编译 1、开发板厂商通常会提供交叉编译好的Qt库,例如飞凌嵌入式提供了编译好的Qt4.8.5库qt4.8.5-sdk-32bit.tar

2016-12-06 10:38:34 3260

网络中心机房设计方案

综合布线是一个模块化的、灵活性极高的建筑群之间的信息传输通道,是智能建筑的“信息高速公路”。它既能使语音、数据、图像设备和交换设备与其它信息管理系统彼此相连,也能使这些设备与外部通信网相连接。它包括建筑物外部网络或电信线路的连线点与应用系统设备之间的所有线缆及相关的连接部件。综合布线由不同系列和规格的部件组成,其中包括:传输介质、相关连接硬件(如配线架、连接器、插座、插头、适配器)以及电气保护设备等。这些部件可用来构建各种子系统,它们都有各自的具体用途,不仅易于实施,而且能随需求的变化而平稳升级。一个设计良好的综合布线对其服务的设备应具有一定的独立性,并能互连许多不同的应用系统的设备,如模拟或动性数字式的公共系统设备,也应能支持图像(电视会议、监视电视)等设备。

2011-05-20

弱电设备防雷接地系统

雷击是严重自然灾害,被世界气象组织列为十大自然灾害之一。随着计算机技术和电子信息的不断发展,日益繁忙庞杂的事务通过高速电脑、自动化设备及通讯设备得以井然有序,而这些敏感电子设备的工作电压却在不断降低,其数量和规模不断扩大,因而它们受到过压特别是雷电袭击而受到损害的可能性就大大增加,其后果可能使整个系统的运行中断,重要数据丢失,造成难以估算的经济损失,雷电和浪涌电压已成为当今信息电子化时代的一大公害。因此,避雷防电涌过压已成为具有时代特点的一项迫切要求。

2011-05-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除