Welcome 微信登录

首页 / 操作系统 / Linux

走读printk代码

走读printk代码

在我们书写内核代码的时候通常会使用printk,这里我们看下printk是如何和uart关联起来的。关于uart的相关的硬件知识不介绍了,so easy。我们这里只是走读下printk的代码,看看和uart的驱动的关联。printk---函数实现在kernel/printk.c文件中。接下来的很多的函数都是在这个文件中。这是一个神奇的函数哦,参数中的“...”可以让你参数输入的比较随意了。在函数体中声明一个va_list,然后用va_start函数来获取参...
基于V4L2的视频驱动开发

基于V4L2的视频驱动开发

编写基于V4L2视频驱动主要涉及到以下几个知识点:●摄像头方面的知识要了解选用的摄像头的特性,包括访问控制方法、各种参数的配置方法、信号输出类型等。●Camera解码器、控制器如果摄像头是模拟量输出的,要熟悉解码器的配置。最后数字视频信号进入camera控制器后,还要熟悉camera控制器的操作。●V4L2的API和数据结构编写驱动前要熟悉应用程序访问V4L2的方法及设计到的数据结构。●V4L2的驱动架构最后编写出符合V4L2规范的视频驱动。本文介绍基于S...
内核中并发所所采取的措施

内核中并发所所采取的措施

多线程执行的时候会出现并发的问题,处理不好,多线程会出现数据处理的错误。SMP(对称多处理器)和内核抢占是多线程执行的两个场景。我们提出要保护共享内核资源的问题,下面有内核中常用的方式。1、自旋锁和互斥体 首先先了解临界区的概念,临界区是访问共享资源的代码区域。自旋锁(spin lock)和互斥体(mutex, matual exclusion)是保护内核的两种基本的机制。 1)自旋锁可以确保在同一时刻只有一个线程进入临界区,其他想进入的则必须等待释放的到...
Android的传感器HAL层的书写---基础篇

Android的传感器HAL层的书写---基础篇

关于传感器,大家在日常的生活中用的很多。比如楼宇的楼梯灯,马路上的路灯等等。那么我们手机里的传感器又可以起到哪些作用呢?现在看下我们的Android中给提供了哪些吧。有加速度传感器,磁场,方向,陀螺仪,光线,压力,温度,接近传感器。------------------------------文件分布------------------------------其中的代码的分布如下:1、传感器系统的JAVA部分代码路径:frameworks/base/incl...
U-Boot中的boards.cfg文件

U-Boot中的boards.cfg文件

U-BOOT发展到现在,架构已经发生了不少的变化。现在不少开发学习板子上都在用1.1.6版本的。不过发展到现在,UBOOT经历了不少改进,变得越来越标准。从版本发布的命名上来看,现在的U-BOOT不再用以前版本号的方式进行描述。而采用日期的方式进行发布(例如这次最新版本命名为u-boot-2011.03)。U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htm第一次用UBOOT的时候是从u...
Linux下的usleep函数

Linux下的usleep函数

Linux中用的是时间片轮转算法,进程轮训要消耗时间,转换到一个进程来执行要消耗时间。结果在进程睡眠和运行过程中,许多时间已经过去了。 sleep()是以秒为单位的,要想延迟一个较小的时间,就需要用到usleep()。另外还有个nanosleep(),用法好像很复杂。usleep可能很难保证时间精度。我写了一段测试代码#include<stdio.h> #include<unistd.h> #include<sys/time....
Java裁剪图片(im4Java)

Java裁剪图片(im4Java)

ImageMagick和im4java处理图片,im4java是ImageMagick的一个Java开源接口,使用起来非常方便。 很多网站都会用到对图片的一些处理,包括图片的裁剪、给图片加水印、按比例缩放图片等操作,用ImageMagick实现这些功能,性能非常好,图片还不会失真,聚资库网站,上传图片的时候,就是用的这个实现的。 首先要安装ImageMagick这个工具,安装好这个工具后,再下载im4java包放到项目lib目录里就行了。 注意事项:如果是...
Linux C 开发中重要的数据结构——结构体

Linux C 开发中重要的数据结构——结构体

在Linux的驱动开发中,最常用的,也最重要的数据结构是结构体,它也最容易使人混淆。要掌握结构体,首先要弄明白运算符的优先级:在所有运算符中,下面4个运算符的优先级是最高的:结构体运算符“.”和“->”、用与函数调用的“()”以及用于下标的“[]”,因此它们同操作数之间的结合也最紧密。例如对:struct {int len;char *str;}*p;表达式++p->len :增加len的值,其中的隐含括号关系是++(p->len)(++...
Android中Cursor类的概念和用法

Android中Cursor类的概念和用法

使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader。今天特地将它单独拿出来谈,加深自己和大家对Android 中使用 Cursor 的理解。关于Cursor在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:Cursor 是每行的集合。 使用 moveToFirst() 定位第一行。 你必须知...
<< 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 >>