自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gwKismit的博客

程序猿成长之路

  • 博客(37)
  • 收藏
  • 关注

原创 Android7.0 init进程分析

init进程int main(int argc, char** argv) {if (!strcmp(basename(argv[0]), "ueventd")) {return ueventd_main(argc, argv);//这里比较当前进程是不是ueventd,因为init本身也是ueventd进程, //ueventd进程的工作是负责设备节点创建和权限设定}

2017-09-05 17:25:58 591

原创 Android关机流程

PowerManager 源码:frameworks/base/core/java/android/os/PowerManager.java public void reboot(String reason) { try { mService.reboot(false, reason, true); } catch (RemoteEx

2017-09-01 20:47:48 1622

原创 android开机动画bootanimation

android开机动画bootanimationbootanim服务源码:frameworks/base/cmds/bootanimation/bootanim.rcservice bootanim /system/bin/bootanimationclass coreuser graphicsgroup graphics audiodisabledones

2017-09-01 20:33:20 7601

原创 git stash 暂存信息

作用:将工作区内容暂存起来应用场合:当在需要紧急处理一个bug时,工作区内容又没有完成,不适合提交,想暂存起来。git stash 对当前的暂存区和工作区状态进行保存git stash list 列出所有保存的进度列表git stash pop --index stash@{0} 恢复工作进度git stash save “这是保存进度” 该命令可以添加保存信息

2016-08-10 23:01:03 548

原创 本地和远程版本库之间协作

1. 添加远程版本库git remote add origin git@github.com:kismit/GitTest.gitorigin:远程版本库在本地的命名git@github.com:kismit/GitTest.git :远程版本库的地址也可以使用http地址git remote add originhttps://github.com/kismi

2016-08-10 23:00:12 355

原创 git偷懒 -- 别名

git config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.st status例子:以后可以直接使用git co 代替 git checkout,快很多查看最

2016-08-10 22:59:23 232

原创 git reset 版本回退

git reset [--hard|soft|mixed|merge|keep] [或HEAD]A). --hard:重设(reset) index和working directory,自从以来在working directory中的任何改变都被丢弃,并把HEAD指向。B). --soft:index和working directory中的内容不作任何改变,仅仅把HEAD指

2016-08-10 22:58:47 321

原创 git学习

一. git安装sudo apt-get install gitsudo apt-get install git-doc git-svn git-emain git-gui gitk如果是第一次使用git,需要添加以下信息:git config --global user.name "kismit" 用户名git config --global user.email "

2016-08-10 22:57:57 227

原创 platform_driver平台设备驱动模型

一。平台设备 platform_device结构struct platform_device {const char * name; /*平台设备的名字,与驱动的名字对应*/int id; /*一般为-1*/struct device dev; /*设备结构,platform_device 派生于device*/u32 num_resources; /*设备使用的资

2016-07-21 17:16:23 477

原创 中断分层

一。中断部分1.中断申请函数 request_irqint request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void *dev)输入参数:中断号 中断处理函数 中断类型 设备名字 返回给中断处理函数的设备号成功返回0 失败返回错误代码

2016-07-21 17:15:09 317

转载 定时器timer

1.定义一个timer,定时器中断函数funstruct timer_list timer;void fun();2.先初始化timerinit_timer(&timer);then 对timer的相关参数赋值:timer.function = fun;timer.expires = jiffies + TIMER_DELAY;3.注册定时器ad

2016-07-21 17:14:13 325

原创 设备驱动模型:总线bus_type 设备device 驱动driver

一.总线 bus_type数据结构struct bus_type{const char *name; //总线类型的名称struct bus_attribute *bus_attrs;struct device_attribute *dev_atrrs;struct driver_attribute *drv_attrs;int (*match) (stru

2016-07-14 16:13:34 1030

原创 开发板开发环境搭建基本流程

1.烧写sd卡(win下使用sd卡烧写工具,win7下要format),将uboot文件烧到sd卡中2.sd卡启动,按下空格进入菜单界面,首先选择1 , y 回车 ,格式化nandflash ,然后选择3烧写镜像,选择1烧写uboot ,在虚拟机中通过dnw烧写uboot补充dnw使用方法:insmod dnw_usb.ko

2016-07-13 17:32:46 1592

原创 Linux QT环境的搭建

1.工具:qt-creator-opensource-linux-x86-3.2.1.run  libstdc++.so.6.0.17放在我的网盘 RedHat Qt安装工具中2.安装步骤:先查看 linux 内核的版本 uname -a 我的版本的x86的,所以使用qt-creator-opensource-linux-x86-3.2.1.run  

2016-07-13 17:30:18 396

原创 RedHat上Qt环境安装和配置

环境:redhat6.3源码:飞凌提供的qt-everywhere-opensource-src-4.7.1.tar.gzqt-creator-linux-x86-opensource-2.6.1.bin(qter下载的,不要选择太高的版本,因为高版本运行时占用的内存比较大,一般运行会出问题)将qt-everywhere-opensource-src-4.7

2016-07-13 17:28:17 5084

原创 OK6410 Qt4.7.1移植

环境:redhat6.3 源码:飞凌提供的qt-everywhere-opensource-src-4.7.1.tar.gz经过前面qt4.4.3的移植后,移植4.7.1比较顺利,移植步骤如下:将源码放在某个目录下(没有特别要求)解压源码tar xvzf qt-everywhere-opensource-src-4.7.1.tar.g

2016-07-13 17:25:53 536

原创 OK6410 Qtopia4.4.3和tslib的移植

实验环境:RedHat6.4(国嵌提供)用到的源码,工具:tslib.tar.gzARM-qt-extended-opensource-src-4.4.3.tar.gz说明:其实qt移植说白了就是移植一个tslib库和一个qt库,tslib的作用是触屏相关的,而qt库是运行qt程序时候需要调用的一些动态库文件。飞凌给的qt移植教程

2016-07-13 17:24:21 793

原创 中断与时钟机制

一.中断 IRQ中断安装与释放1.申请中断线int request_irq(unsigned int irq,irq_handler_t handler,unsigned long irqflags,const char *devname,void *dev_id) 中断号 中断处理函数 中断触发方式 设备名称 共用中断信号线时使用到(一般设备为NULL)一般在init函数中设置

2016-07-13 17:21:24 492

原创 printk 消息打印级别

KERN_EMERG 紧急消息,常常是那些崩溃前的消息KERN_ALTER 需要立即动作的情形KERN_CRIT 严重情况,常常与严重的硬件或者软件失效有关KERN_ERR 报告错误使用,常用于报告硬件故障KERN_WARNING 有问题的警告,这些情况自己不会引起系统的严重问题KERN_NOTICE 正常情况,警告一些安全情况

2016-07-13 17:20:26 289

原创 阻塞和非阻塞

1. 非阻塞non-block --selectint select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout)参数:最大fd 可读 可写 异常 超时超时参数:秒 微妙struct timeval{ long tv_sec;long tv

2016-07-13 17:19:03 399

原创 完成量:线程同步

作用:一个线程发送信号通知另一个线程开始执行某个任务#include struct completion{unsigned int done;wait_queue_head_t wait;}done 0:等待 >0:可执行wait 等待队列定义和初始化完成量定义struct completion com;初始化init

2016-07-13 17:16:52 278

原创 锁机制:自旋锁spinlock和信号量semaphore

作用:避免竞争一. 自旋锁使用步骤:1.定义自旋锁spinklock_t lock;2.初始化自旋锁spin_lock_init(&lock);3.获得自旋锁spin_lock(&lock);4.释放自旋锁spin_unlock(&lock);spin_lock [如果获得lock则立即返回,否则将自旋在那里直到其他线程释放]临界资源

2016-07-13 17:15:39 1634

原创 file_operation

struct file_operations ***_ops={ .owner =  THIS_MODULE, .llseek =  ***_llseek, .read =  ***_read, .write =  ***_write, .ioctl =  ***_ioctl, .open =  ***_open, .release = ***_release, }

2016-07-13 17:13:37 233

转载 信号量与锁的差别

信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是

2016-04-15 19:46:00 559

原创 ++ --运算符

(++i)+(++i)+(++i)错误结果:15正确的结果:编译器处理方式1:++i=4  ++i=5 ++i=66+6+6 = 18处理方式2:++i=4   ++i=55+5+(++i)=5+5+6 = 16 (gcc、g++编译器的结果)并没有标准结果,具体情况由编译器决定,这是C的灰色地带。int x;int

2016-04-11 22:20:24 325

原创 关键概念

数据元素:组成数据的基本单位数据项:一个数据元素由若干个数据项组成数据对象:性质相同的数据元素的集合逻辑结构:集合结构-数据元素之间没有特别的关系线性结构-数据元素之间一一对应树形结构-数据元素之间存在一对多关系图形结构-数据元素之间是多对多的关系物理结构顺序存储结构--将数据存储在地址

2016-04-11 21:46:45 352

原创 驱动模板

#include#include#include#include#includeMODULE_LICENSE("GPL");  //声明本驱动遵循GPL协议/*加载模块*/static int XXX_init() {        return 0;}/*卸载模块*/static void XXX_exit(){

2016-04-11 21:45:20 313

原创 操作符重载

操作符重载本质也就是函数调用而已!#include #include using namespace std;struct Complex{    int a;//实部     int b;//虚部 };/*Complex add(Complex c1,Complex c2){    Complex c;

2016-04-11 21:44:21 242

原创 接续符和转义符

接续符‘\’是编译器的指示符指示这一行尚未结束,下一行接着上一行。#define \SW\AP(a,b) \{                 \    int\ temp = a; \    a\ = b;        \    b = te\mp;     \}//这是\注释宏代码块定义:定义一个代码

2016-03-15 23:05:34 336

原创 内联函数

//宏定义函数 #define func1(a,b) (a>b?a:b)这种宏定义方法是直接代码替换方式的/*内联函数*/inline int func(int a,int b){    return a>b?a:b;}内联函数类似于宏定义,在编译器中是没有函数声明的,是将函数体直接插入调用的地方,没有标准开销,但是不是说所有函数都是可以转化为内

2016-03-13 22:00:07 451

转载 交叉编译工具链安装

平台:pc(笔者使用虚拟机vmware) 系统:redhat6  /  ubuntu版本:4.3.2tar xvzf arm-linux-gcc-4.3.2.tgz -C/注意这里使用的是默认解压路径,默认是解压到/usr/local/arm目录下如果需要制定安装路径的,只需要在-C后面跟上具体路径即可设置环境变量:vi /etc/profile在p

2016-03-13 14:40:42 296

原创 消息队列与通信

1.打开或创建消息队列int msgget(key_t key,int msgflg)成功:返回消息对列失败:-1标志: IPC_CREAT创建新的消息队列,没有与key对应的消息队列的情况下才创建消息队列的格式struct msgbuf消息的类型    long mtype消息数据       char mtext[1]2.发送消息到消

2016-03-09 22:49:12 223

原创 sizeof const volatile

sizeof是编译器内置的关键字,不是函数,用于计算相应实体所占内存的大小,在编译期间就可以确定。sizeof a  等价于 sizeof(a)const修饰的变量是只读变量,告诉编译器不可以对该变量进行赋值操作,但在程序运行过程中还是可以改变的。const变量在内存中是占据空间的!const int cc =1;

2016-03-09 11:39:30 275

原创 goto void

goto破坏过程式程序设计的规则基本不用!void关键字:修饰返回值和参数为了表示“无”void并不是表示内存大小的别名,C语言中并没有void标准类型的void只是定义为表示“无”类型,并没有定义其表示空间的大小,其表示空间的大小是由编译器定义的gcc编译器中:sizeof(void) ==1

2016-03-09 11:17:46 335

原创 auto,static,register分析(属性关键字)

变量的修饰符auto是C语言的默认属性,是在程序栈分配空间的static定义静态变量,实在程序静态区分配空间,修饰函数时表示全局变量,只是在同一个文件中是全局的,在其他文件中并不是全局的。register定义的变量是存储在寄存器中的,变量必须是CPU寄存器可以接受的值,不一定能够分配,因为是寄存器变量不在内存中分配空间所以不能使用&运算符

2016-03-09 11:14:07 305

原创 bool if float

标准C语言中是没有标准的bool类型的,bool由编译器制定,所以不同的编译器true或false不一定一样bool类型的实际变量实际是枚举变量typedef enum{      true = 1 ,       false = 0}bool;条件只判断是0还是非0if(-1)也是成立

2016-03-09 11:09:39 429

原创 enum define typedef

enum Color{     GREEN,    //这里GREEN默认为0     RED = 2,     BLUE       //BLUE = 3 };enum取值只能是整数,不能是float默认值是0开始的#define 宏常量变量只是简单的替换,枚举变量是真正意义上的常量define定义的

2016-03-09 11:04:08 254

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除