嵌入式
文章平均质量分 64
邹亚鹏
- -!!
展开
-
基于ARM9开发板的按键字符设备驱动实现
摘要:该驱动程序实现4个按键设备在Linux系统中基于QT2410E开发板的工作情况,通过该实例可以了解ARM平台Linux系统下的GPIO程序控制,以及硬件中断程序的工作机制。另外还可以熟悉Linux 2.6内核的模块加载和测试方法。1.了解硬件原理图由于该设备驱动是针对具体硬件设备的,所以一般需要了解它的硬件原理图(如图1),该模块有四个按键分别是S2,S3,S转载 2014-10-27 17:41:41 · 1996 阅读 · 0 评论 -
vim 对齐
只要在 /etc/vimrc中加上这两句就行了set autoindentset smartindent--------------------------------------------------------pip我说过vim很好很强大滴--------------------------------------------------------===原创 2014-02-24 13:20:41 · 1367 阅读 · 0 评论 -
vim 去掉^M
有两种情况,会出现打开的文件都显示^M符号:1. vim被配置为fileformat=unix,而你打开的文件都是dos格式的。unix格式的换行符为0A(ascii码)也就是,dos格式的换行符为 0D 0A(也就是),其实就显示为^M。下面是详细讲解:DOS, Mac 和Unix格式的文件回想计算机的史前史,那时的打字机使用两个字符来开始一个新行。首先是一个字符命令使打印头原创 2014-02-24 13:23:00 · 669 阅读 · 0 评论 -
多线程 or 多进程?
在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进程,每进程中只存在唯一一个执行线程),Java的Web容器Tomcat、Websphere等都是多线程的(每客户连接对应一个线程,所有线程都在一个进程中)。 从Unix发展历史看,伴随着U转载 2014-01-17 13:17:42 · 1022 阅读 · 0 评论 -
get file size
int read_filesize(char *fileName){ int fileSize; FILE *fPtr; fPtr = fopen(fileName, "rb"); if(fPtr == NULL) return -2; fileSize = 0; fseek(fPtr,0,SEEK_END); fileSize = ftell(fPtr); f原创 2013-12-17 19:43:16 · 589 阅读 · 0 评论 -
%02x 打印出很多f
当类型是char型,凡是0x80以上,即最高位是1的数据,通过"%02x"打印后会在前面填充6个‘f’,即变成ffffff87这样的数据。 而换成unsigned char型则打印正常。 但是在ARM的linux上之前没有遇到这样的问题。看来对于平台还有编译器还是很有关系的,但是现在的疑惑就是%02x其中的2代表只有2位数据,但是现在却打印了8位,诡异。原创 2013-12-16 12:16:14 · 2823 阅读 · 0 评论 -
htonl(), ntohl(), htons(), ntohs().
htonl():将主机的无符号长整形数转换成网络字节顺序。 #include uint32_t htonl(uint32_t hostlong);hostlong:主机字节顺序表达的32位数。 htonl()返回一个网络字节顺序的值。 ntohl():将一个无符号长整形数从网络字节顺序转换为主机字节顺序。 #include uint32_t nt原创 2013-12-05 14:32:27 · 700 阅读 · 0 评论 -
molloc的一种使用
if(ptr){ free(ptr); ptr = NULL;}ptr = (char *)malloc(sizeof(DATA_SIZE));感觉不错~~~原创 2013-12-05 14:21:20 · 885 阅读 · 0 评论 -
linux socket模板
服务器端#include#include#include#include#include#include#include#define MAXLINE 4096int main(int argc, char** argv){ int listenfd, connfd; struct sockaddr_in servaddr; char原创 2013-12-05 14:13:59 · 630 阅读 · 0 评论 -
SQLITE3,C语言使用(转)
前序:Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为 unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何 windows 的东西,只使用标准 C 或标准C+转载 2012-07-22 22:52:39 · 1752 阅读 · 0 评论 -
makefile编译静态库和动态库
一。静态库创建静态库 仍使用刚才的hello.c和test.c。 第一步,生成目标文件。 gcc -c hello.c 第二步,把目标文件归档。 ar r libhello.a hello.o file libhello.a 下面一行命令就是教你如何在程序中链接静态库的: gcc test.c -lhello -L. -static -o hel转载 2012-08-02 13:11:11 · 22405 阅读 · 0 评论 -
关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别名,而不原创 2014-02-24 13:45:26 · 456 阅读 · 0 评论 -
二维码的生成细节和原理
二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下。供好学的人一同学习之。关于QR Code Specification,可参看这原创 2014-02-26 15:46:36 · 4208 阅读 · 0 评论 -
Objective-C中的占位符,打印BOOL类型数据
常用的一些占位符:%@:字符串占位符%d:整型%ld:长整型%f:浮点型%c:char类型%%:%的占位符 尽管有那么多的占位符,但是好像没有发现BOOL型的数据的占位符,这也是比较纠结的地方,看了一下别人是怎么解决这个问题的 BOOL studyBool = YES; NSLog(@"打印BOOL型数据%@",studyBool?@"Y原创 2014-03-14 09:20:06 · 9796 阅读 · 0 评论 -
嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结
1、在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以2、记住在使用printf进行调试的时候,在遇到指针或者字符串的时候最好使用“%x”,以为我不知道指针或者字符串中是否包含不可见字符,如果有不可见字符会导致错误,而且错误不好查找3、对于uboot中的环境变量,其实是放在uboot里面的,也就是环境变量占原创 2014-06-12 16:06:25 · 1961 阅读 · 0 评论 -
嵌入式 uboot、fs、kernel制作和烧录简记-hi3518c
NULL RAM :mkdir ramdisk_test 临时挂在点dd if=/dev/zero of=rootfs.ramdisk bs=1k count=10000 建立空硬盘//15000(15M)losetup /dev/loop0 rootfs.ramdisk 挂在临时硬盘mke2fs -m 0 /dev/loop0 格式化此硬盘mount –原创 2014-06-12 16:07:28 · 5182 阅读 · 1 评论 -
JFFS2文件系统制作
jffs2文件系统制作过程JFFS2 是一个开放源码的项目(www.infradead.org)。 它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用。1. 安装mkfs工具MTD主页:http://www.linux-mtd.infradead.org/archive/index.html下载MTD:ftp://ftp.uk.linux.org/pu转载 2014-06-06 17:43:33 · 1892 阅读 · 0 评论 -
U-Boot 编译(嵌入式U-BOOT,kernel编译)
make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- clean原创 2014-06-06 14:06:52 · 673 阅读 · 0 评论 -
Linux C 编程内存泄露检测工具(二):memwatch
Memwatch简介在三种检测工具当中,设置最简单的算是memwatch,和dmalloc一样,它能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域。请往http://www.linkdata.se/sourcecode.html下载最新版本的Memwatch。安装及使用memwatch很幸运地,memwatch根本是不需要安装的,因为它只是一组C程序代码转载 2014-05-07 14:20:38 · 9858 阅读 · 0 评论 -
Linux C 编程内存泄露检测工具(一):mtrace
前言所有使用动态内存分配(dynamic memory allocation)的程序都有机会遇上内存泄露(memory leakage)问题,在Linux里有三种常用工具来检测内存泄露的情況,包括:mtracedmallocmemwatch1. mtracemtrace是三款工具之中是最简单易用的,mtrace是一个C函數,在里声明及定义,函数原型为: void转载 2014-05-07 13:56:05 · 1992 阅读 · 1 评论 -
linux下内存泄露调试
http://www.s135.com/post/419/ http://blog.chinaunix.net/uid-579481-id-163614.html http://blog.chinaunix.net/uid-16135252-id-2752984.html原创 2014-03-24 09:07:52 · 750 阅读 · 0 评论 -
linux下获取本机公网ip
curl http://iframe.ip138.com/ic.asp原创 2014-03-17 16:51:56 · 816 阅读 · 0 评论 -
linux下串口通信
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。串口通讯指的是计算机依次以位(bit)为单位来传送数据,串行通讯使用的范围很广,在嵌入式系统开发过程中串口通讯也经常用到通讯方式之一。Lin原创 2014-04-15 15:23:21 · 2463 阅读 · 0 评论 -
交叉编译openssl
本次任务是要完成嵌入式Linux下对openssl程序的支持。 我的开发环境:ARM9开发板 和 嵌入式Linux操作系统。装有Linux系统(我的是ubuntu9.04)的PC机一台。串口和串口连接线。串口调试软件:minicom。交叉编译工具:arm-unknown-linux-gnu-gcc 下载最新版本的openssl-1.0.0: http://www.op原创 2014-03-27 14:50:12 · 19407 阅读 · 1 评论 -
ARM_S3C2440中断分析
ARM S3C2440中断分析1.什么是中断所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的中断程序中去,服务完毕,再返回去执行刚才被中断的程序。2.什么是中断优先级中断优先级是指,中断源被响应和处理的优先等级。设置优先级的目的是为了在有多个中断源同时发出中断请求时,CP转载 2012-07-21 18:22:50 · 1149 阅读 · 0 评论 -
unbutu安装mysql
sudo apt-get install mysql-server mysql-clientsudo apt-get install libmysqld-devmysql的root密码最好设置以方便以后程序编写。原创 2013-11-26 15:42:43 · 859 阅读 · 0 评论 -
ubuntu12.04下tftp安装、配置、测试
先说明一下ubuntu默认root是禁用的,所以先要创建root用户,这样以后不用再sudo了:1.sudo passwd输入当前用户密码输入root用户密码再次确定root用户密码成功!su输入root密码ok,进入root用户,不用再sudo了!2.安装tftp-hpa tftpd-hpa xinetdapt-get install tftp-hp原创 2012-08-05 18:35:20 · 16162 阅读 · 0 评论 -
mini2440 MP3播放器
按键平台驱动:platfrom_device.c:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2012-08-22 23:48:54 · 1414 阅读 · 0 评论 -
c语言获取本地ip
#include #include #include #include #include #include #include #include #include #define ETH_NAME "eth0" int main() { int sock; struct sockaddr_in s原创 2013-11-19 11:02:37 · 3773 阅读 · 0 评论 -
ubuntu 下串口调试工具 minicom安装与配置
如果项目中使用的bootloader为 u-boot,那么在用minicom向目标板传送kernel时会发生一些错误。故若您使用的是u-boot,建议您使用kermit,关于kermit的安装和配置使用请参考这篇文章: http://blog.chinaunix.net/u3/112852/showart_2207594.html 尽管与u-boot的组合中会有原创 2013-11-20 17:11:22 · 40795 阅读 · 1 评论 -
Linux 判断是否是一个目录还是一个文件的方法
man stat; stat.h中有判断是什么文件的宏: S _ I S R E G ( ) 普通文件 S _ I S D I R ( ) 目录文件 S _ I S C H R ( ) 字符特殊文件 S _ I S B L K ( ) 块特殊文件 S _ I S F I F O ( ) 管道或F I F O S _ I S L N K ( ) 符号连接( P O S I转载 2012-11-08 09:58:20 · 7847 阅读 · 0 评论 -
2.4内核中task_struct结构体全解
/*转自:http://wenku.baidu.com/view/9132d213f18583d049645902.html*/********************************************为了管理进程,操作系统必须对每个进程所做的事情进行清楚地描述,为此,操作系统使用数据结构来代表处理不同的实体,这个数据结构就是通常所说的进程描述符或转载 2012-11-08 10:52:10 · 785 阅读 · 0 评论 -
苏嵌学习之进程通行一管道通信 (过去用新浪博客写的现在搞过来~~~)
常用的进程间通信方式 :传统的进程间通信方式无名管道(pipe)、有名管道(fifo)和信号(signal)System V IPC对象共享内存(share memory)、消息队列(message queue)和信号灯(semaphore)BSD套接字(socket)对于本文,我将重点的讲讲对无名管道和有名管道的理解。无名管道:无名管道是半双工的,数据只能原创 2012-07-19 23:22:57 · 2400 阅读 · 0 评论 -
ubuntu12.04下nfs安装、配置、测试
先说明一下ubuntu默认root是禁用的,所以先要创建root用户,这样以后不用再sudo了:1.sudo passwd输入当前用户密码输入root用户密码再次确定root用户密码成功!su输入root密码ok,进入root用户,不用再sudo了! 2.nfs 安装apt-get install nfs-kernel-server3.编辑/et原创 2012-08-05 20:43:06 · 9632 阅读 · 1 评论 -
ubuntu 12.04 交叉编译器(arm-linux-gcc-4.4.3)
1.获取arm-linux-gcc-4.4.3(我是板子光盘里的,百度一下就应该有的下)2.解压 tar xvzf arm-linux-gcc-4.4.3.tar.gz -C / (我是解压到根目录的,这个可以自己定)3.更改环境变量 cd /root/ vi .bashrc 在最后加上 export PATH=$PATH:/op原创 2012-08-06 12:37:16 · 2881 阅读 · 0 评论 -
用nfs挂文件系统(vivi)
1.连线什么的~~连好了,开超级终端~~板子复位下,进入下面这个界面:2.按下q,进入vivi3.设置启动参数param set linux_cmd_line "console=ttySAC0 root=dev/nfs nfsroot=192.168.100.4:/home/zyp/mini2440/rootfs ip=192.168.100.70:192.168.10原创 2012-08-06 14:43:51 · 959 阅读 · 1 评论 -
一个基于linux的聊天软件(并发服务器,sqlite3数据库,有注释)
SC.h:#include #include #include #include #include #include #include #include #include #include #include #include #define ADMIN_SHOW 1#define ADMIN_BAN 2#define ADMIN_LIFT 3#define AD原创 2012-07-31 11:10:30 · 3003 阅读 · 1 评论 -
苏嵌学习之进程通行二信号通信 (过去用新浪博客写的现在搞过来~~~)
信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式信号可以直接进行用户空间进程(注册和注销[这个注销不是很清楚])和内核进程(内核产生)之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程原创 2012-07-19 23:24:07 · 3072 阅读 · 0 评论 -
关于scanf("%c",&ch)直接跳过的问题
过去上论坛,还有最近写程序,老是有人遇到这样的问题:就是有时候scanf("%c",&ch)本应该阻塞等待用户输入一个char型数据的,但为什么会跳过呢?纠其根源,我们先来了解一下scanf()是怎么接受数据的。首先,当我们的pc指向scanf这句时,系统并不是等待用户输入,而是判断输入缓冲区有没有符合格式的内容,如果有,则直接读取。知道了这个,我就应该明白,scanf("%c",&c原创 2012-07-18 09:45:19 · 6143 阅读 · 6 评论 -
多线程--条件变量
条件变量函数操作相关函数说明初始化条件变量pthread_cond_init 语法基于条件变量阻塞pthread_cond_wait 语法解除阻塞特定线程pthread_cond_signal 语法在指定的时间之前阻塞pthre转载 2013-11-22 15:18:55 · 745 阅读 · 0 评论