- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 如何为驱动程序添加宏控制
背景:很多情况下,我们会在不同的项目上使用同一套代码,但是项目的不同会导致需求的不同,而宏控制可以解决这种或者诸多类似的问题。问题:如何在不影响其他项目的情况下为指定项目修改源代码?解决方案:(1)在该项目的配置文件*_deconfig中添加如下代码:CONFIG_XXXXXX=y(2)在*.c文件所在的文件夹下的Kconfig文件中添加如下代码:config XXXXXX tristate...
2018-04-10 16:48:18
372
原创 多态实例
class Base { public: void func1() { this->func2(); } virtual void func2() { cout << "Base::func2()" << endl; }};class Derived : public Base { public: virtual void func2() { c...
2018-04-10 15:46:11
166
转载 Binder系统:servicemanager
servicemanager 是 Binder 进程间通信机制的核心,它扮演了 Binder 通信机制上下文管理者(context manager)的角色,既负责系统中 Service 组件的注册,又负责向 Client 组件提供获取 Service 组件代理对象的服务。
2018-01-03 16:43:39
165
转载 深入理解SPI总线协议
单片机模拟SPI接口—加深理解SPI总线协议标签: 扩展c通讯存储工作2011-11-01 00:01 33827人阅读 评论(6)收藏举报本文章已收录于:分类: SPI总线学习(7) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[
2017-03-21 10:38:21
392
转载 SPI总线协议介绍
SPI总线协议介绍一、技术性能 SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平
2017-03-21 10:34:15
407
转载 uart自动流控制
1.流控制在串行通讯中的作用这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现在我们在网络上通过MODEM进行数据传输,这个问题就尤为突出。流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可
2017-01-08 15:38:39
316
原创 嵌入式linux内核面试题
1) linux中的同步机制?主要有哪几种内核锁?linux中的同步机制从2.0到2.6以来不断完善,从最初的原子操作到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随LINUX从单处理器到对称多处理器的过渡;伴随着从非抢占内核到抢占内核的过渡;linux的锁机制越来越有效,复杂。linux的内核锁主要有自旋锁和信号量。自旋锁最多只能被一个可执行线程持有,如果一个可执行线程试
2016-10-22 08:58:51
187
原创 linux系统工程师试题
参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩
2016-10-18 08:08:52
98
原创 嵌入式linux驱动工程师面试经验
1. 创发科技2. 中科创达3. 中电海康集团(52研究所)主要考察c语言的基础知识,问道了inline关键字和static关键字,然后就讲述了项目方面的经验,有关linux内核里面的各种机制也问道了好多,比如自旋锁和互斥锁机制,以及两个锁之间的区别,还有关于进程休眠和调度的知识,由于我对s3c2440比较熟悉,面试官还问到了bootloader方面各种知识,以及在编写
2016-10-13 13:31:07
378
原创 福州瑞芯微电子嵌入式软件笔试题
1. linux中shell变量$#,$@,$0,$1,$2的含义解释:$$:shell本身的PID(processID);$!:shell最后运行的后台process的PID;$?:最后运行的后台process的PID;$* = $@:所有参数列表。“$*” 以“$1 $2 ... $n”的形式输出所有参数。$#:添加到SHELL的参数的个数。$0:shell本身的文件名。$1~
2016-10-12 19:46:27
992
转载 linux中的pid与tid
1.linux中,每个进程有一个pid,类型pid_t,由getpid()取得。linux下的POSIX线程也有一个id,类型为pthread_t,由pthread_self()取得,该id由线程维护,不同进程中的线程可能有相同的id,每个进程有独立的线程id空间。代码范例:#include #include #include #include #include #include v
2016-10-11 00:27:18
479
转载 动态库、共享库、静态库
gcc -c a.c : 编译成目标文件gcc -o a.c : 生成可执行文件gcc a.c :生成执行文件a.exe总结:只要参数有-c,总是生成目标文件;只要参数中无-c而只有-o, 则总是生成执行文件。通常库分为:静态库,共享库,动态加载库。一、静态库—— 一些目标文件的集合。以.a结尾。1. 使用场合:程序链接时使用。链接器会将程序中使用到得函数代码从
2016-09-14 20:25:54
87
转载 linux同步机制
死锁(deadlock)是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件。1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某
2016-09-11 21:18:00
260
转载 static用法小结
static用法小结 static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C++中, 局部变量按照存储形式可
2016-08-28 08:10:02
348
原创 kobject引用计数
**************************************************************创建一个平台设备:static struct platform_device xxx = {.name = xxx.resourse =.dev = {.release = xxx_release,}
2016-08-23 08:36:22
319
原创 chche与DMA的一致性问题
1. cache是一种高速缓冲存储器,主要作用:提高cpu数据读取速率,协调cpu速度与内存存储速度之间的差异。2. cpu可以快速的从cache中读取数据,但是如何得到cpu在下一个时间段内用到的内存中的数据? 局部性原理:如果cpu当前时间用到内存中的某块数据,那么就将这块数据的周围数据存入cache中,为下一个时间段cpu读取数据做准备。3. 直接映像:主存的一个字块只能映像到Cac
2016-08-14 10:17:59
499
原创 Makefile中“=”与“:=”与“?=”区别
1. B := $(A) :在这句语句之前找A的值;2. B = $(A) :在Makefile 文件最后往前找A的值;3. B ?= $(A) :如果没定义B,则给B赋值;例子:1.#exampleA = befor1A = befor2B := $(A)A = laterall: @echo $(B)执行make 输出be
2016-06-22 18:55:02
230
原创 matlab2014b 安装libsvm-3.21
1. 安装 visual stdio 2012 :下载链接:https://lzw.me/a/microsoft-visual-studio-2012.html2. 重启电脑 ,打开matlab3. 下载:libsvm-3.21 将其置于tools 目录,并添加工作路径。4. 执行 mex -setup C++ 设置matlab使用的编译器5. 执行make 即可附:
2016-06-08 14:41:55
541
原创 驱动中的poll机制分析
-------------------------------------------------------------------------------------------------APP: 调用poll----------------------------------------------------------------------------------------
2016-05-11 15:07:50
243
原创 scullpipe驱动程序测试(使用x86平台)
scullpipe驱动程序测试打开两个终端:1. cat /dev/scull_pipe02. ls -l > /dev/scull_pipe0非阻塞测试:/**************************** * function nbtest * 测试非阻塞操作 * 用非阻塞性I/O把输入复制到输出,并在其间稍作延迟,延时时间由命令行传递
2016-05-10 15:11:47
466
原创 驱动模块编译平台的选择
编译平台的选择arm平台:DEBUG = yifeq ($(DEBUG), y) MYDEBFLAGS = -O -g -DSCULL_DEBUG else MYDEBFLAGS = -O2endifEXTRA_CFLAGS += $(MYDEBFLAGS)KERN_DIR = ../linux-mini2440all:make
2016-05-10 15:10:11
241
转载 wait_event_interruptible() 分析
1. 关于 wait_event_interruptible() 和 wake_up()的使用 读一下wait_event_interruptible()的源码,不难发现这个函数先将 当前进程的状态设置成TASK_INTERRUPTIBLE,然后调用schedule(), 而schedule()会将位于TASK_INTERRUPTIBLE状态的当前进程从runqueue 队列
2016-04-30 08:49:50
297
原创 LINUX驱动编写技巧(1)
驱动程序编写过程遇到的问题:1.为驱动程序增加编译可选项#ifdef MY_DEBUGprintk("my debug")//操作#endif2. 在Makefile中添加 1 DEBUG = y 2 3 ifeq ($(DEBUG), y) 4 MYDEBFLAGS = -O -g -DSMY_DEBUG 5 else 6
2016-04-23 16:52:55
207
原创 ldd(linux设备驱动程序)scull驱动
1. 下载源代码:http://download.youkuaiyun.com/detail/wjf201003050643/94942652. 参考书中第三章:linux设备驱动程序3. 下面将附上驱动源代码。(该驱动使用内存模拟出4个硬盘,可以实现对其读写操作)4. 调试过程出现的问题: 执行命令# ls –l > /dev/scull0 :该命令将输出重定向到设
2016-04-21 15:26:08
419
原创 CGI应用(1)
最近在学习嵌入式WEB服务器的移植,对于BOA服务器的移植,网上的文章很多,大家可以直接搜索嵌入式BOA服务器的移植;对于一个移植好的WEB服务器,例如BOA服务器,如何通过网页实现对板子的控制功能呢,这就需要CGI了,具体来说,CGI(common getway interface)就是运行在WEB服务器之外的供服务器调用的程序。它与服务器配合使用,可以让服务器具有更强大的功能。下面学习
2015-11-17 18:28:00
314
u-boot-mini2440
2016-04-18
linux设备驱动程序(第三版)示例源代码
2016-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人