嵌入式
搬砖技术工程师
兴趣是第一老师!
动手是成功基础!
展开
-
linux中生成ppm图片
转换方法如下:bmp图片使用bmptoppm。jpg,png,gif都有相应的topnm工具,但我没有试过。 $bmptoppm pic.bmp > temp1.ppm //生成ppm $ppmquant 224 temp1.ppm > temp2.ppm //转换成224颜色 $pnmnoraw temp2.ppm > logo.ppm //转换成ascii格式 log原创 2013-06-25 16:07:21 · 6531 阅读 · 0 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(4)
经过前面的学习,我们发现有一个东西像恶梦一样挥之不去,无论是讲驱动模型中的sysfs还是讲字符驱动的file,这些文件系统内的概念和模块已经让我们达到了无法忍受的地步,但这从侧面也说明了文件系统在内核中的至高地位。Linux宣称一切皆文件,是不是一切皆文件并不是我们目前讨论的内容,就算偶尔有一些东西没有抽象成文件,但这不重要,也不影响文件这个概念在linux内核中的地位。如果我们把驱动模型的解理看转载 2011-12-20 22:19:44 · 476 阅读 · 0 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(3)
接下来讲的是字符设备的重点,就是从用户空间调用open最到终调用我们写的字符驱动中的open的整个过程。下面的讨论将会非常有意思,请大家一定要看完所有的描述,否则理解有问题就别怪哥没提醒你了!在这之前我们大概说说大名鼎鼎的系统调用,从字面上理解就是系统(内核)提供的调用(服务),取小括号里面的话就拼成了:内核提供的服务。这个服务是通过一条int 0x80指令来实现的,利用这条指令可以产生一个软转载 2011-12-19 23:32:05 · 731 阅读 · 0 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(2)
这一节我们先给出一个字符设备的小例子,源码结构如下:|-- wwhs_chardev| |-- Makefile| |-- wwhs_chardrv.c //驱动| `-- wwhs_chardrv_test.c //小测试程序`-- wwhs_public.h请大家养成看Makefile的好习惯,这个Makefile很简单的。先生成字符设备的驱动,字符设备驱动会在/d转载 2011-12-18 22:12:08 · 480 阅读 · 0 评论 -
Android系统移植全过程
Android开发环境篇一. 安装:Required PackagesAndroid requires the following system packages:flex: This lexical analyzer generator is used to read a given input file for a description of a scanner转载 2011-12-02 23:51:07 · 6607 阅读 · 0 评论 -
android三种菜单介绍 .
Android的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)一.选项菜单当用户单击设备上的菜单按钮(Menu),触发事件弹出的菜单就是选项菜单。选项菜单最多只有六个,超过六个第六个就会自动显示 更多 选项来展示显示。创建方法:1、覆盖Activity的onCreateOptionsMenu(Menu m转载 2011-12-03 23:54:32 · 496 阅读 · 0 评论 -
Linux驱动之设备模型(6)
7.设备驱动7.1 设备驱动l 在Linux设备模型中,设备驱动用device_driver结构来表示structdevice_driver { const char *name; /*名字*/ struct bus_type *bus; /* 附属的总线转载 2011-12-05 22:14:25 · 398 阅读 · 0 评论 -
Linux-2.6.20的LCD驱动分析(一)
一、让LCD显示可爱的小企鹅还是先说说环境吧,处理器为S3C2410,linux的版本当然是2.6.20的。下面先说说怎样让LCD上显示出可爱的小企鹅。最直接的步骤如下(记住不要问为什么哈~_~,一步一步跟着走就行了):1. 添加s3c2410处理器的LCD控制寄存器的初始值,具体做法为在文件arch/arm/mach-s3c2410/mach-smdk2410.c中添加stru转载 2011-12-08 11:27:02 · 372 阅读 · 0 评论 -
Linux-2.6.20的LCD驱动分析(二)
二、s3c2410fb_probe函数分析2.1驱动的入口点摆在面前的第一个问题相信应该是,这个函数是从那里开始运行的。这里就应该从long long ago开始了,打开drivers/video/s3c2410fb.c文件,然后找到s3c2410fb_init函数,先不管它里面是怎么回事,再把目光下移就会看到这样一串字符串module_init(s3c2410fb_init),郁闷,这和转载 2011-12-08 11:28:37 · 335 阅读 · 0 评论 -
老手经验:Linux驱动程序开发学习步骤
1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。5. 写一完整驱动, 加上read, write, ioc转载 2011-12-24 21:34:55 · 582 阅读 · 0 评论 -
Qt应用程序Cursor样式
在X11上,Qt支持Xcursor库,可以随意更改全彩色的Cursor主题。但是在嵌入式Qt开发中,没有Xcursor的支持,效果就没这么乐观。 总结一下,我们可以通过以下三类方式修改Qt应用程序的Cursor样式:1. Qt::CursorShape Qt提供以下CursorShape,如下图: 代码:view plain转载 2012-01-05 23:22:47 · 1138 阅读 · 0 评论 -
修改linux内核的开机图片(小企鹅)
两种方法:一、最简单的方法:把你的图片替换掉小企鹅图片重新变异即可。把制作好的ppm文件(博客里有制作方法)拷贝到kernel源码的driver/video/logo中,重命名为logo_linux_clut224.ppm然后make clean;make uImage二、新建你的开机图片项1、添加新LOGO将得到的logo_jylogo_clut224.ppm文件复制到d原创 2013-06-25 16:33:21 · 5172 阅读 · 0 评论 -
Qt 的QString类的使用
Qt的QString类提供了很方便的对字符串操作的接口。使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。QString::fill ( QChar ch, int size = -1 )例: QString str = "Berlin"; str.fill('z'); // str == "zzzzzz转载 2013-06-25 13:49:14 · 1110 阅读 · 0 评论 -
Android + Eclipse开发环境搭建
JDK下载安装:jdk下载:http://download.oracle.com/otn-pub/java/jdk/7u1-b08/jdk-7u1-windows-i586.exe(根据您的系统版本下载,笔者以windows为例)环境变量配置:(图中红色鼠标指向的位置)计算机-->属性-->高级系统设置-->系统属性-->环境变量,可以在用户的环境变量或者系统的环境变量里做原创 2012-09-06 18:10:51 · 1012 阅读 · 0 评论 -
一、Qt Creator的安装和hello world程序的编写
一、Qt Creator的安装和hello world程序的编写本文章原创于www.yafeilinux.com 转载请注明出处。我们这里讲述windows下的Qt Creator,在linux下基本相同。本文先讲述基本的下载、安装和最简单程序的编写,然后在附录里又讲解了两种其他的编写程序的方法。1.首先到Qt的官方网站上下载Qt Creator,这里我们下载windows版的。转载 2012-01-03 23:31:41 · 875 阅读 · 0 评论 -
sqlite3 使用教程
OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:软件属于公共财(public domain),SQLite可说是某种「美德软件」(virtueware),作者本人放弃着作权,而给使用SQLite的人以下的「祝福」(blessing):May you do good转载 2012-01-02 23:53:22 · 745 阅读 · 0 评论 -
SQLite命令行程序说明
sqlite3: 一个SQLite数据库的命令行接口 原文地址:http://www.sqlite.org/sqlite.html SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明。开始 启动sqlite3程序,仅仅转载 2012-01-01 23:57:39 · 453 阅读 · 0 评论 -
Android 编译系统分析
自Android开源以来,引起了嵌入式行业一股热潮,很多嵌入式开发者表示对Android有很强的兴趣,并下载Android源码进行编译和移植。Android源码的巨大(repo下来,大概2G)给人以Android相当复杂的错觉。本文从Android编译系统的角度,让大家了解Android其实也是很纯真的。Android编译系统(build system)集中于Android源码下的buil转载 2011-12-30 23:01:18 · 521 阅读 · 0 评论 -
Vi命令大全
刚开始学习Linux,从基础开始,学习vi命令vi命令一览表! ex, vi, view - text editors ◎SYNOPSIS vi [-eFGlRrSv] [-c cmd] [-t tag] [-w size] [file ...] ex [-eFGRrSsv] [-c cmd] [-t tag] [-w size] [f转载 2011-12-30 22:59:51 · 661 阅读 · 0 评论 -
Linux-2.6.20的LCD驱动分析(三)
2.3 s3c2410fb_probe揭秘对于该函数,我想最好的办法就是跟着程序一步一步的解释。OK,let’s go to ……static int __init s3c2410fb_probe(struct platform_device *pdev){ struct s3c2410 fb_info *info; //s3c2410fb_info结构在driver转载 2011-12-08 21:14:07 · 359 阅读 · 0 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(2)
上节我们分析到int kset_register(struct kset *k)函数中的kobject_add_internal(&k->kobj),我们接着分析,先唤起来一下大家的记忆,给出kset_register的函数定义:int kset_register(struct kset *k){int err;if (!k) return -EINVAL;kset_in转载 2011-12-11 20:57:11 · 370 阅读 · 0 评论 -
Linux驱动之设备模型(9)-platform
10.Platform10.1 overviewl 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、IIC、SPI等的设备而言,这自然不是问题,但是在嵌入式系统中,SoC系统中集成的独立的外设控制器,挂接在SoC内存空间的外设(IIC,RTC,SPI,LCD,看门狗)等却不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为plat转载 2011-12-07 23:06:35 · 340 阅读 · 0 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(7)
终于快讲完了,这一节其实就是让上节我们所说的四大天王露下小脸。源码分析请自行完成吧。我建议大家可以试着先看一下代码,如果能看懂,那就把我写的那破玩意删掉,自已实现一遍,如果不能看懂,那马上回过去从第一小节重新看过,耐心,一定要有耐心,没耐心,啥都完了。帖上原码:Makefile:obj-m+=wwhs_bus.oKERNELDIR=/opt/kernel/linux-2.6.38/li转载 2011-12-16 21:12:28 · 1482 阅读 · 0 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(1)
就当我还在学校的时候,我就曾在一个装机群里听一位装机圣手说,驱动程序的安装没你想的那么简单,分类型的,分为字符设备驱动和块设备驱动。我当时就纳闷了,我说我装机的时候好像没看到啊,我就把光盘放过去然后就一直点下一步,然后重启就好了啊。后面我在群里被几位高手围攻,败下阵来,时过境迁,哥现在也算是道上混的兄弟了,再也没那么容易被蒙了。就算你DIY再牛,你也不要和我说装驱动要分类。否则我就和你讲内核,讲晕转载 2011-12-17 22:17:26 · 439 阅读 · 0 评论 -
Android四大组件之 Service
一 Service简介 Service是运行在后台的,没有界面的,用来处理耗时比较长的。Service不是一个单独的进程,不是一个单独的线程。 Service有两种类型:本地服务(Local Service):用于应用程序内部远程服务(Remote Sercie):用于android系统内部的应用程序之间 前者用转载 2011-12-02 23:49:22 · 719 阅读 · 0 评论 -
Linux驱动之设备模型(2) .
3.ktype& Kset3.1 ktypel 用来描述一组kobject所具有的普通特性,用structkobj_type结构体来表示struct kobj_type{ void (*release)(struct kobject *kobj); const struct sysfs_ops *sysfs_ops; st转载 2011-12-03 23:41:09 · 392 阅读 · 0 评论 -
Linux-2.6.20的LCD驱动分析(四)
三、解剖s3c2410fb_driver变量s3c2410fb_driver变量有什么作用呢?在前面的2.2节提到了它的定义,从它的原型可以看出s3c2410fb_driver是个platform_driver类型的变量,前面的几个小节提到了从platform_driver的名字可以看出它应该是platform_device的驱动类型。为了方便阅读,这里再贴一次s3c2410fb_driver转载 2011-12-09 22:13:26 · 345 阅读 · 0 评论 -
Linux-2.6.20的LCD驱动分析(五)
四、s3c2410fb_ops变量详解 在上面的文字中,较为详细的解释了platform device相关的代码,通过上面的代码的执行,一个platform设备(buffer被当作了platform设备)就加载到内核中去了。就像一个PCI的网卡被加入到内核一样,不同的是PCI的网卡占用的是PCI总线,内核会直接支持它。而对于platform设备需要用上面软件的方法加载到内核,同PCI转载 2011-12-10 23:56:19 · 357 阅读 · 0 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(1)
可能把驱动模型放在第一章讲会会有点难度,但是只要能跨过这道坎,后面就会轻松很多,驱动模型是整个linux设备驱动的基石。大部分人把驱动模型叫做设备模型,但是我查了linux的帮助文档,就是在下载源码路径下的Documentation目录中找到driver-model这个目录,里面包含的文件就是我在本章中所要讲述的东西,也就是我所说的驱动模型。因此本文都会用驱动模型这个术语(如果各位觉得这种叫法是错转载 2011-12-10 23:58:59 · 577 阅读 · 0 评论 -
Linux驱动之设备模型(8)
9.小结9.1 总线,设备,驱动和类之间的关系l 总线相当于一个容器,是device和device_driver的管理机构,它包含了一个device集合(devices_kset)和一个驱动集合(drivers_kset),分别表示挂依附于此总线的所有设备和所有驱动。l 驱动依附在总线上,包含了一个设备链(klist_devices),用来遍历总线上的设备,驱动还包含了一个bus转载 2011-12-07 23:05:16 · 321 阅读 · 0 评论 -
Linux驱动之设备模型(7)
8.类8.1 classl Class是对设备按照功能进行的分类,这样做是为了给用户空间提供一个比较友好的界面。Class也是一个kset,对应于/sys/class下的一个目录int __initclasses_init(void){ /* 对应/sys/class目录 */ class_kset =kset_create_and_ad转载 2011-12-06 21:19:53 · 332 阅读 · 0 评论 -
Linux驱动之设备模型(5)
6.设备6.1 设备l Linux设备模型中每一个设备用device结构来表示struct device { struct device *parent; /* 父设备,通常是某种总线或者是宿主设备 */ struct device_private *p; /* 私有数据指针:子设备链表,父设备转载 2011-12-05 22:13:26 · 351 阅读 · 0 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(3)
实在是让大家久等了,因为最近离职,所以繁锁的事情很多,今天终于把离职手续给办完了,不过还有一堆事情没有做,如果更新的慢的话,请大家多多包涵。言归正传。俗话说的好:光说不练假把式。很明显本帅哥不是假把式。为了让大家一起对驱动模型有直观的认识,小弟花了一点点时间写了几个小例子(目前只有一个)。就是为了让大家领会最神秘的驱动模型,有了这些小例子,结合我前面两篇源码分析的文章,哥可以告诉你,你已经具备转载 2011-12-12 22:56:12 · 376 阅读 · 0 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(5)
上节我们已经领教了传说中的bus_register,这节我们继续领教同样是神级的driver_register。driver_register如果看懂了,device自行分析应该没太大的问题。照样先给出一个小的例子代码。 typedef struct __wwhs_device_driver{ char *name; struct devic转载 2011-12-14 23:36:49 · 526 阅读 · 0 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(6)
上节我们大概分析了driver_register是怎么工作的。有的细节虽然没有到位,但是记住一句话,贪多嚼不烂,我们首先要建立的是驱动模型在我们脑海中的第一印象。本节将讲述最后两个主角,device和class的创建。讲完这些就会来个大集合。让四大天王(device,class,device_driver,bus)一起登台向各位致敬,表演?想要四大天王表演?没问题,可四大天王不但身份尊贵,最主要的转载 2011-12-15 23:02:29 · 718 阅读 · 0 评论 -
嵌入式Linux下PCI设备驱动的设计与实现
随着通用处理器和嵌入式技术的迅猛发展,越来越多的电子设备需要由处理器控制。目前大多数CPU和外部设备都会提供PCI总线的接口,PCI总线已成为计算机系统中一种应用广泛、通用的总线标准[1]。Linux因其开放源代码以及稳定的性能,越来越受到广大用户青睐。同时,基于Linux内核的嵌入式操作系统应用势头强劲,开发基于Linux的设备驱动程序,具有很强的实用性和可移植性[2]。 1 PCI总转载 2011-12-16 23:16:06 · 1633 阅读 · 0 评论 -
Qt事件--数字时钟
实验:1)用Timer显示时间2)用Timer定时3)鼠标左键按下控件可随意在桌面上拖动main.cppview plaincopy to clipboardprint?#include #include "form2.h" int main( int argc,char ** argv ){ QApplication a( argc, argv转载 2011-12-01 23:31:10 · 1081 阅读 · 0 评论 -
Linux驱动之设备模型(1) .
1.Overviewl 设备模型是2.6内核引入的新特性,提供了一个一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,使得系统具有以下优点:n 代码重复最小化n 提供诸如引用计数这样的统一机制n 可以列举系统中所有的设备,观察它们的状态,并查看它们连接的总线n 可以将系统中的全部设备结构以树的形式完整、有效地展现出来n 可以将设备和其对应的驱动联系起来,转载 2011-12-03 23:39:54 · 543 阅读 · 0 评论 -
Linux驱动之设备模型(3)
4.小结4.1 kobject, kset和ktypekobject, kset和ktype就三个结构体,但是却很容易让人混淆,是由于它们内部相互交织。l kobject,是设备模型中的基本对象,包含了引用计数,父子关系,目录项等,通常会嵌入到其它的数据结构中,使其也具有kobject的特性;l ktype,定义了一些kobjct相关的默认特性:析构函数,sysfs操作以及默认属性转载 2011-12-04 22:31:26 · 379 阅读 · 0 评论 -
Linux驱动之设备模型(4)
5.总线5.1 overview前面我们介绍了设备模型的底层部分,下面我们来看下设备模型的高层部分,总线、设备和驱动5.2 总线l 总线,是处理器与一个或者多个设备之间的通道。在Linux设备模型中,用bus_type结构来表示struct bus_type{const char *name; /* 总线名字 */struct bus_attribute *bus_转载 2011-12-04 22:33:40 · 383 阅读 · 0 评论