Welcome 微信登录

首页 / 操作系统 / Linux

Linux平台上GPIO模拟I2C

Linux平台上GPIO模拟I2C

GPIO模拟I2C是嵌入式中较为常用的一种应用。各个地方有各种不同的做法,按照我自己的个人理解,最好是把I2C的各种状态分割开来,比如起始条件终止条件,读数据和写数据,然后根据具体的使用场合组合起来。这里需要注意两点:一是SCL的波形并不规律,不能将它理解为方波,它本身只是一段段独立的波形。二是每段操作时,之前和之后的SCL和SDA波形是可以不用计较的;通常情况下I2C开始之前和I2C结束之后,两者都是高电平,而在正常工作时两者不受控制的情况下都是默认低电...
关于Linux内核中多进程(线程)间同步和互斥

关于Linux内核中多进程(线程)间同步和互斥

Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访问会导致竞态,linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景。Linux内核是多进程、多线程的操作系统,它提供了相当完整的内核同步方法。内核同步方法列表如下:中断屏蔽原子操作自旋锁读写自旋锁顺序锁信号量读写信号量BKL(大内核锁)Seq锁一、并发与竞态:定义:并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和...
Qt在Linux环境下应用程序字体模糊的解决方法

Qt在Linux环境下应用程序字体模糊的解决方法

这两天一直在用Qt实现一个跨平台的软件。软件之前在Windows上编写的,后来放到里Ubuntu 10.10下编译。程序运行时遇到一个很棘手的问题,界面文本非常模糊。后来在网上查阅了好几天的资料,经历了无数次实验,最终解决了这一问题。下面以一个Demo程序来重现这一问题。 本文中的编译平台为:Ubuntu 10.10 x86版, g++ 4.4.5, Qt 4.7.3自己编译的首先看看我的Demo程序文本模糊时的截图: 一个软件界面的文本要是这样子,根本无...
Qt中QFtp获取带有中文的文件名称出现乱码的解决方法

Qt中QFtp获取带有中文的文件名称出现乱码的解决方法

今天研究了一下QFtp这个类,发现访问得到的文件名称中一旦出现中文,不管怎么转换编码格式,最终显示出来的始终都是乱码。于是我深入地对这一现象进行了研究。这里先简单介绍一下我的分析过程:FTP服务器在收到List指令后,会把当前文件夹的所有项目(包括文件夹和文件的名称,大小,时间,所有者等相关信息)列举出来并返回给FTP客户端。曾经在网上看到有人说过这样一句话:“ftp 在编码问题上相当笨,笨到对编码一无所知”。确实,多数FTP服务器在返回这些名称时采用的文...
关于Qt信号与槽机制的传递方向性研究

关于Qt信号与槽机制的传递方向性研究

最近由于项目的需求,一直在研究Qt。信号与槽机制是Qt的一大特色,该机制允许两者间传递参数,依次来实现对象间的通信。这个参数会分别存在于信号的参数列表和槽函数的参数列表中。需要注意的是,若将槽函数绑定至信号,槽函数的参数列表元素数目只能少于等于信号的参数列表元素数目。而且顺序和类型不能改变。至于缺少的参数应从信号参数尾部开始缺少。突然今天想起来一个问题,如果一个对象发出信号,将内部的一个成员变量(非简单类型)作为参数向外发送,槽函数就可以接收到这个对象,那...
Java中各种“空”的判定方法

Java中各种“空”的判定方法

在Java中,一个类为空的判断是常用的功能。但是各种类的空判断却不一样当一个方法返回的是一个Object时,应使用==null来判断是否为空,例如在Servlet中的session判断用户是否登录可以用如下的代码if (session.getAttribute("LoginUser")==null){.............}但是如果是一个String类型的变量,或者某一个方法返回的是String类型的结果。其判断为空的方式又不一样了。需要使用Strin...
在 Linux / Windows平台中调试 C/C++ 内存泄漏方法

在 Linux / Windows平台中调试 C/C++ 内存泄漏方法

由于 C 和 C++ 程序中完全由程序员自主申请和释放内存,稍不注意,就会在系统中导入内存错误。同时,内存错误往往非常严重,一般会带来诸如系统崩溃,内存耗尽这样严重的后果。从历史上看,来自计算机应急响应小组和供应商的许多最严重的安全公告都是由简单的内存错误造成的。自从 70 年代末期以来,C/C++ 程序员就一直讨论此类错误,但其影响在 2007 年仍然很大。与许多其他类型的常见错误不同,内存错误通常具有隐蔽性,即它们很难再现,症状通常不能在相应的源代码中...
Qt下透明效果实现

Qt下透明效果实现

1.窗口整体透明,但是窗体上的控件不透明。 通过设置窗体的背景色来实现,将背景色设置为全透。QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 试验效果: 窗体标题栏不透明; 窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明; 窗体客户区完全透明。 另外从网上看到的方法:se...
《嵌入式Linux应用完全开发手册》之 MMU 实验

《嵌入式Linux应用完全开发手册》之 MMU 实验

内存管理单元(MMU),它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。现代的多用用户多进程操作系统通过MMU使得各个用户进程都拥有自己独立的地址空间:地址映射功能使得各进程拥有“看起来"一样的地址空间,而内存访问权限的检查可以保护每个进程所用的内存不被其他进程破坏。相关阅读:韦东山《嵌入式Linux应用开发完全手册》PDF光盘源代码等全套 http://www.linuxidc.com/Linux/2011-01/31114.htm源码...
Linux下串口应用程序编程

Linux下串口应用程序编程

这几天,由于多功能温度测量仪项目的需要,涉及到了GSM信息的串口读取,所以在Linux下串口信息的读取有了一点心得体会。1.打开串口 与其他的关于设备编程的方法一样,在Linux下,操作、控制串口也是通过操作起设备文件进行的。在Linux下,串口的设备文件是/dev/ttyS0或/dev/ttyS1等。因此要读写串口,我们首先要打开串口: char *dev = "/dev/ttyS0"; //串口1 int fd = open( dev, O_RDWR ...
Weblogic 11g下部署Java 项目出现QName问题的解决

Weblogic 11g下部署Java 项目出现QName问题的解决

Weblogic 11g下部署Java 项目真是问题多多啊,我指的是在eclipse或者myeclipse下开发的Java项目,然后打包成war或者ear部署到weblogic 11g下。加载顺序:weblogic 11g和之前部署的不一样,首先是,他先加载自己的jar包,然后才是你部署到什么程序的war包。更改加载顺序:从网上找的的方法是,在你开发的Java项目下的web-inf下,先写一个weblogic.xml的配置,这里的内容是:<?xmlv...
bochs+gdb源码级调试Linux 0.12内核测试环境构建

bochs+gdb源码级调试Linux 0.12内核测试环境构建

之前都是用的bochs自带的debug功能,但是linux内核大部分都是用C语言来实现的,若仅通过反汇编的汇编来学习,太累了。。。所以今天花了一个上午的时间,搭建起了bochs+gbd的联调huanjing。安装环境:Ubuntu 11.04 (2.6.38) bochs 2.4.6 gdb 4.5.2首先还是要安装bochs,仍然是推荐使用最新的版本(2.4.6),如果使用像2.3.6等老版本,也许会导致后面与gdb无法远程连接(NND,就是这个恶心的问...
Linux内核源代码中的 likely() 与 unlikely() 详解

Linux内核源代码中的 likely() 与 unlikely() 详解

在Linux 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别?首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value)也就是说 likely() 和 unlikely() 从阅读和理解代码的角度来看,是一样的!!!这两个宏在内核中定义如下:#define likely(x) __builtin_...
<< 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 >>