
Linux
文章平均质量分 72
jshazk1989
这个作者很懒,什么都没留下…
展开
-
编译器GCC使用
编译器GCC使用1.GCC概述:GCC(GNU C Compile)经过长时间已经发展成是支持C语言C++,java等众多语言的编译器gcc的编译流程分为四步:1.预处理(pre-processing), 2.编译(Compiling), 3.汇编(assemblin原创 2011-09-08 23:43:46 · 1085 阅读 · 0 评论 -
Linux驱动编程 step-by-step (三)
字符设备中 重要的数据结构大部分字符驱动设计三个重要的数据结构struct file_operationsstruct filestruct inode 一、文件操作 在之前的一篇文章中已经有介绍了如何去生情字符设备设备号,但是没有做任何的工作,也就只能写一个不能工作的字符设备;struct file_operations 结构域用来原创 2011-11-05 16:11:31 · 4020 阅读 · 5 评论 -
Linux驱动编程 step-by-step (五)
主要的文件操作方法实现文件操作函数有很多的操作接口,驱动编程需要实现这些接口,在用户编程时候系统调用时候会调用到这些操作struct file_operations { ... loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, lo原创 2011-11-11 00:35:40 · 8769 阅读 · 15 评论 -
Linux驱动编程 step-by-step (六)
说点上节没有讲完的话题用户地址检测 简单模块调试 以及一些杂项检测用户空间地址的有效性上一节中提到在read write时候要检测用户空间传递的参数地址是否是有效地址,有的内核函数会自行检测,但是在调用轻量级的内核函数时候,就可能不去检测用户空间的地址是否有效,如果此时用户无传递一个无效地址,而内核函数去操作了它,这时棘手的问题出现了,轻则内核oops 关机重启就OK了,在特别严重原创 2011-11-13 00:47:50 · 4126 阅读 · 3 评论 -
Linux驱动编程 step-by-step (九)
字符设备模拟pipe的驱动程序让我们用一个”pipe“的设备驱动去结束简单字符设备吧(这里所说的pipe并非标准的pipe只是模拟了一个从一端写入从另一端写入的设备)测试代码1 测试代码2设计思路用一个图来说明(可是画了很久哟)简单说来就是一个进程写入缓冲区,另一个进程可以读出,读出后原buffer中的数据被置为无效值,自定义一个结构#defi原创 2011-11-29 23:17:13 · 3996 阅读 · 2 评论 -
Linux驱动编程 step-by-step (十)
终于可以清闲下来打理一下我的blog了,台资企业真的事情很多很烦……前几篇文章对字符设备有个简单介绍,并以简单的一个字符设备驱动作结尾,其实linux上大部分驱动程序都是字符设备程序,Linux源码中也可以看到很多的字符设备驱动,所以供学习的代码还是很多的。这一节本想说一下如何测试设备驱动,但是因为最近看了看内核链表,所以趁还记的比较清楚赶紧记录下来。有不到位的地方烦请指正。Lin原创 2012-03-15 13:39:16 · 2778 阅读 · 0 评论 -
Linux驱动编程 step-by-step (十一)
Linux 内核链表(2)之前描述了如何创建内核链表(INIT_LIST_HEAD)向链表中添加节点(list_add)删除一个链表节点(list_del)获取一个链表节点对应的结构体(list_entry)等接下来会介绍几种操作替换一个链表节点,合并两个链表,将一个链表分成两段,遍历链表。替换链表节点替换节点很好理解,就是将新的节点替换老节点,将新的节点的对应的prev,ne原创 2012-06-05 14:47:08 · 3326 阅读 · 0 评论 -
Linux驱动编程 step-by-step (四)
似乎每一章介绍的内容比较少,但学习是一个循序渐进的过程,不在于一天学多少,重要的一天能真正的学懂多少,所以我主张一步一步来,从多个渠道去学习知识,实现互补。本节测试代码传到此处了:char_step1 大家可以下载测试一下。字符设备的注册与设备节点的自动创建cdev 结构内核内部使用struct cdev来表示一个字符设备struct cdev { struc原创 2011-11-05 23:48:54 · 4320 阅读 · 5 评论 -
Linux驱动编程 step-by-step (二)
简单字符设备驱动1、主次设备号主设备号标识设备连接的的驱动,此设备号由内核使用,标识在相应驱动下得对应的设备在linux中设备号是一个32位的dev_t类型typedef __u32 __kernel_dev_t;typedef __kernel_dev_t dev_t;crw------- 1 root root 10, 1 Apr 1原创 2011-10-30 16:00:06 · 4902 阅读 · 9 评论 -
Makefile 理解(4) 【Android.mk 浅析 模块编译Makefile编写】
终于将C++代码porting到了bootloader中,唯一的收获就是熟悉了Makefile,有工厂的公司伤不起啊,每次都得先做一些东西满足工厂端测试的需求,为了能够做到工厂在boot中测试的要求,经过与芯片公司讨论,只有将C++弄到了boot中,真是一个很二的决定boot最终做到了2M比有些kernel还要大。不过老板要这么做就硬着头皮做了现在做成了心中还蛮高兴的,原来被逼之后人的潜能还是蛮大原创 2011-09-26 21:03:00 · 15181 阅读 · 1 评论 -
Linux驱动编程 step-by-step (一)
第三次看了LDD3了(虽然现在已经是kernel3.0但从这本书商还是能学到很多) 每次都有一些收获 现在终于能够些一些代码了驱动程序的作用:简单来说 驱动程序就是使计算机与设备通信的特殊的代码,在作单片机时候(无OS)我们自己定义接口及自定义的结构来操作相关硬件,而在有OS的模式下我们操作的硬件是去实现对应的接口(这些接口是已定义好的,我们需要实现这些接口)而无需自己定义接口,这样既能正原创 2011-10-26 23:06:28 · 7007 阅读 · 15 评论 -
Linux驱动编程 step-by-step (八)
阻塞型字符设备驱动前面说到了 如何实现read write 等操作,但如果设备缓冲已满,现在想而用户此时又想写入设备,此请求就无法立即执行,那怎么办呢?第一种情况是:驱动程序想用户返回请求失败的信息。第二种情况是:使调用进程阻塞等待设备可以被操作。而用户更希望自己选择在请求无法满足时候如何操作,所以在用户空间有了O_NONBLOCK标志在打开设备的时候如果用户指定了此标志(原创 2011-11-24 00:31:18 · 3476 阅读 · 0 评论 -
嵌入式Linux学习3——vi文本编译器应用
Linux提供了一系列功能强大的编译器 如vi,emace是屏幕交互式编译器vi简介:vi编译器是最早也是最受广大用户青睐的,(其实emace比vi好些但是我还没有用过,以后学会了 再给大家介绍vi有有三个模式分别是:命令模式,插入模式,底行模式。命令行模式:最初原创 2011-09-08 23:43:00 · 1388 阅读 · 1 评论 -
嵌入式根文件系统制作
好长时间没有写有关嵌入式的文章了,最近想移植QT,看了一些介绍 知道QT移植需要动态库才可以,但以前做的根文件系统是静态链接的 这就给做QT带来了问题, 所以一狠信 在网上图书馆找了些动态制作根文件系统的文章来看 弄了好久终于成功了一起分享一下吧这里先介绍一个很强的大哥的原创 2011-09-08 23:46:24 · 1106 阅读 · 0 评论 -
嵌入式Linux学习5——Shell编程
Shell 使用:1.Shell简介: 简单的说Shell就是一种命令解析器,是一种编程交互接口,通过驱动操作系统内核完成指定的工作,它是用户与操作系统之间的桥梁。 分类:Linux主流的Shell有三种BASH TCSH Korn原创 2011-09-08 23:44:17 · 1070 阅读 · 0 评论 -
嵌入式Linux学习2——宿主机Linux相关配置
本章节 主要在为后面嵌入式应有做铺垫作用 如果这些没有做好 可能后面会出现很多东西用不了的情况1tftp 服务器配置(宿主机到目标机的下载工具)简单介绍: 这里说到宿主机于目标机 两个不同的概念 我们有的电脑机宿主机——用来执行编译出开发平台能使用的可执行原创 2011-09-08 23:41:31 · 1069 阅读 · 0 评论 -
嵌入式Linux学习1——Linux相关命令介绍
刚刚 开始研究 嵌入式Linux 感觉 比较难 接下来的日子里 我会与大家 一起分享我的学习成果 也作为我的学习笔记吧“学习贵在坚持,别畏难”首先是 Linux 的基础Linux 的特点:1.免费 开源2.可移植性,设备平台无关性3.强大的网络功能4.原创 2011-09-08 23:38:18 · 838 阅读 · 0 评论 -
Makefile 理解(2)
上次提到了伪目标、变量及函数先说说伪目标 与 变量: 函数不多但用法很灵活 换句话说就是 太复杂了 以后慢慢讨论先看一个例子:OBJS = main.o a.o b.omain: $(OBJS) cc -o main $(OBJS)main.o: m原创 2011-09-12 17:51:11 · 979 阅读 · 0 评论 -
Makefile 理解(1)
最近因为需要了解bootloader的一些内容所以看顺便看了一下Mafefile的编写规则。当然了解的只是皮毛了,作为一个学习记录与总结 还是写一篇小文章吧。作为我在正式工作后的第一次的写博客 也把在百度博客上的文章copy过来了, 当然那是在校时写得, 现在看来写的一般了,原创 2011-09-10 21:23:43 · 1112 阅读 · 0 评论 -
cygwin一闪而过 的处理(小经验)
由于家里有台电脑配置比较低,给爸妈用,不能装linux,也跑不了虚拟机,但是每次回去总要去玩玩linux,所以想起了装一个cygwin,我将我电脑上的cygwin打包好,放到那台电脑上选择使用本地库安装,安装很快(因为不需要下载, 在线安装时候需要 2-3个小时),但是打开cyg原创 2011-09-23 23:06:56 · 9083 阅读 · 1 评论 -
Makefile 理解(3)
make 是如何工作的1、make target会在当前目录中查找Makefile 或者 makefile GNUmakefile 或者是自己用-f指定的文件(最好是Makefile)2、找到后它会执行相应目标(如果没有target则默认执行第一个目标),并将这个目标作文最终目标3、如果目标文件不存在或者目标依赖的文件修改时间新于目标文件修改时间,则执行这个命令生成新的目标原创 2011-09-15 00:07:47 · 1765 阅读 · 1 评论 -
Linux驱动编程 step-by-step (七)
并发 竞态 (信号量与自旋锁)代码传至并发竞态控制并发进程 导致竞态的一个例子前面所述的字符驱动都是没有考虑并发竟态的情况,想象一下一个进程去读一个字符设备,另一个进程在同一时间向这个设备写入(完全有这种情况)原来设备中存有 A B C D 要想设备写入1 2 3 4 每次读写一个字节t1t2t3t4t5t6t7t8原创 2011-11-17 00:24:33 · 6820 阅读 · 4 评论 -
wpa_cli P2P 连接相关调试命令
最近在一个客户那边调试基于p2p的wifi display, 一半都是在Android上去调这个,所以之前也没有过多研究整个p2p连接流程, 而客户现在用的是非Android平台架构, 很多东西需要协助客户debug 之前debug wifi 连接时用到了wpa_cli 来协助调试连接,那p2p怎么去调试呢? 可以用wpa_cli协助调试吗? 查看了代码有了肯定原创 2014-10-24 14:39:04 · 17463 阅读 · 3 评论