- 博客(18)
- 资源 (5)
- 收藏
- 关注
原创 Hisi 3518EV300 基于LiteOs 摄像头驱动开发
如果需要在liteos平台上添加一款新的摄像头驱动,并点亮摄像头,比如我们要把ov5554添加到系统,需要做如下工作:1.添加驱动源代码,源代码路径Hi3516EV200_SDK_V5.0.0.1/mpp/component/isp/user/sensor/hi3516ev200,在这个目录下创建ov5554目录,在其它相类似的sensor目录拷贝源码和make文件,其中xxxx_cmos.c...
2019-04-04 18:01:56 420 1
转载 C++ placement new 用法
---源码---struct Student{ string name; int age;};//创建共享内存的ID#define MEM_ID 1234//映射共享内存的大小,3个Student大小长#define MEM_SIZE sizeof(Student)*3//共享内存读取端int main(void){ //打开共享内存 int shmid = shmg...
2018-02-27 15:35:02 235
原创 Android.mk文件分析
1. 基本语法 LOCAL_PATH := $(call my-dir) //定义了当前模块的相对路径,必须在清空当前环境变量之前 include $(CLEAR_VARS) //清空当前环境变量 LOCAL_MODULE := test //编译生产的目标文件的名称 LOCAL_SRC_FILES := t
2017-09-23 15:11:13 321
原创 全志v3s 方案 sdk编译
环境:ubuntu 14.04 64bit1.需要安装jdk1.7以下,下面安装jdk1.6下载jdk:http://pan.baidu.com/s/1slyMLAl官方下载:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html
2017-09-22 19:26:55 11337
原创 从一个简单的sensor驱动看linux输入子系统框架。
最近学习一个简单的心率计驱动,在学习驱动源码的过程中,体验了linux驱动中input子系统框架及其它一些知识点,现在记录下来可供以后复习参考学习。1. sensor数据的获取,一般的做法是注册中断,在中断里面做处理,中断注册函数主要做的事情就是唤醒等待队列。1)注册中断:request_irq(hwmon->irq, jz_hwmon_irq_handler, 0, pdev->na
2016-07-31 17:49:04 5159 1
原创 sigaction 函数实现非阻塞IO
1. 函数原型: int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 这个函数可以获取阻塞函数的状态,也可以设置阻塞属性,有个相关的结构体: struct sigaction { void (*s
2016-05-19 13:03:46 802
原创 怎么在实际的商业商业项目中控制自己的debug级别
在做linux下的C或者C++开发,特别是应用程序开发,如果代码量特别大,我们如何控制自己调试信息,其实我们可以定义自己的debug模式:定义debug.c#include "debug.h"const char *get_log_levname(unsigned int loglevid){ if (DBG_TYPE_TRACE == loglevid) {
2016-05-18 17:37:01 339
原创 linux 进程间通信管道文件读写规则
1. 打开写端,读端未打开,写端会阻塞2.打开读端,写端未打开,读端会阻塞3.写端存在,管道中有数据,读端可以读出数据,管道没有数据,读端会阻塞等待写端写入数据4.写端关闭,管道中有数据,读端可以读出数据,管道没有数据,读端会立即返回,返回值为05.读端存在,写端在管道没有填满之前可以一直写入数据6.读端不存在,向管道中写入数据的进程将收到内核传来的SIGPIPE信号(通常是B
2016-05-12 19:21:28 1292
原创 linux 父进程中不阻塞不轮询回收子进程的两种方
在linux 中,子进程的正常退出后,还有一些资源没有被释放掉,一般的方式是父进程负责来回收子进程的资源,采用wait()和waitpid()函数,前者只能只能阻塞的方式等待子进程从其它状态变为僵尸态,后者可以以阻塞的方式或者轮询的方式来等待子进程的状态改变,不管是阻塞方式还是轮询方式,父进程必然要消耗一些时间开销来做这件事情,其实可以通过信号的用不阻塞不轮询的方式回收成为僵尸态的子进程,对于SI
2016-05-12 18:17:35 2347
原创 线程同步和互斥机制的区别
很多初学者在学习线程同步和互斥机制的时候往往不能真正理解他们之间的区别,那就不能再合适的场合使用好这两种机制,其中的区别: 1. 互斥锁主要用来保护临界资源,什么是临界资源,就是有可能多个线程都需要访问的数据地址,也有可能是某一段 代码,执行这段代码有可能会改变多个线程都需要访问的数据。 2. 加入同步机制主要是为了在多线程程序中,如果需要对某个共享资源C进行同
2016-05-10 12:48:19 5099
原创 多进程和多线程文件拷贝
1. 线程与进程的异同点A.相同点1): 比如都有自己在系统中唯一标识ID,一组寄存器(pc指针),状态(6种),调度优先级以及所要遵循的调度策略。2): 每个进程都有一个进程控制块,线程也拥有一个线程控制块(在Linux内核,线程控制块与进程控制块用同一个结 构体描述,即struct task_struct),这个控制块包含线
2016-05-10 12:14:32 1255
原创 linux 商业项目 makefile 自动生成工具Autotools的使用
我们在平时的学习中要编译我们写的源代码生成可执行文件,大家都知道用gcc编译工具就可以完成任务,更复杂一点的,如果我们编写的文件比较多,那单纯在linux环境下写gcc命令进行编译就显得有点效率太低了,这时我们肯定想到写一个makefile来完成这样稍微复杂的编译过程,我想很多人也确实是是这样做的,所以我们回去学习makefile 的语法,其实如果编译 的文件量再多一些,文件之间的依赖关系更复杂一
2016-05-08 20:25:24 582
原创 数据结构之链表学习心得
顺序表从节点之间的链接方式分我连续空间顺序表和链式顺序表,前者的实现就是在普通数组上做了封装,后者实现就是前一个节点保存后一个节点的地址。本文讨论的就是后者,链式顺序表的一个最明显的特征,就是在增减,插入,排序,遍历等操作中有更好的效率,这些操作的有一个共同的核心思想,就是对链表节点进行重新排序。添加节点到一个链表,有头插法和尾插法之分,前者就能实现一个插入顺序的逆置,实现代码:#includ
2016-05-01 10:02:27 7471
原创 Linux C程序设计的一些小技巧
罗列一下自己在工作和学习中知道的定位段错误的一些方法:1. 在自己写的代码中,如果运行后报出段错误的提示,结合gdb调式可以进行定位,现在当前调试环境的shell中输入,ulimit -c unlimited 命令,这样在运行代码是如果出现段错误,就会在当前的运行shell中尝试core文件,此文件就是用来定位段错误的,然后在调试模式下输入,gdb a.out core ,当然必须在gdb调
2016-04-26 17:49:57 412
原创 notepad++ 添加java 开发插件
在java 程序开发中我们有时候需要些一些自己开发的类,为了保证代码的健壮性,我们不一定就会在集成开发环境的工程中去添加,这是在notepad中进行编辑,编译,调试是很方便,这样我们就需要在notepad中添加一些必备的开发插件,添加方法如下 1. 在插件菜单中找到Pluin Mangeer 选项,在Available 中找到 NppExec, 点击右下角的Install按钮进行下载
2016-04-24 11:10:44 7102
原创 windos下JAVA 安装及环境变量配置
1.从官方网站上,下载自己电脑和操作系统对应的jdk 版本,下载好后按安装程序提示一步一步安装2.环境变量配置,比如jdk安装目录是:C:\Program Files\Java\jdk1.8.0_91 在环境变量->系统变量中新建变量JAVA_HOME, 变量值就设置为jdk的安装目录 找到系统变量中的Path 变量,在其变量值后面添加jdk和jre的安装路径:%JAVA_H
2016-04-24 09:46:03 289
转载 判断一个整数是否是回文数
问题判定一个正整数是否是一个回文数。例如12121是回文数,而1231不是回文数。解法1:转换成字符串再判断要判断一个整数是否是回文数,最自然的想法是把整数转换成一个字符串,然后根据回文的对称特性进行判断。数字转换为字符串可以通过itoa函数实现,判断字符串是否为回文字符串代码如下:bool isPalindrome(string &str) { int begi
2013-03-05 08:16:40 1163
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人