- 博客(16)
- 资源 (8)
- 收藏
- 关注
原创 【RK3399】【Android7.1】camsys 驱动加载流程分析
驱动的加载过程(1) camsys driver入口函数根据 ./kernel/drivers/media/video/rk_camsys 目录下的Makefile可以了解到,该目录源码最终会生成camsys_drv.o模块,设备端加载camsys_drv.o这个模块时,会调用这个模块中module_init注册的入口函数camsys_platform_init,具体代码如下:module...
2019-10-23 14:24:46 1386
原创 【RK3399】【Android7.1】Ubuntu16.04下不能正常使用vi编辑文件解决方法
问题现象:ubuntu16.04中vi在编辑状态下方向键不能用,还有回格键不能删除等我们平时习惯的一些键都不能正常使用。问题原因:ubuntu16.04中预装的是vim tiny版本,想要正常使用我们常用的功能需要的是vim full版本。解决办法:可以安装vim full版本,在full版本下键盘可以正常使用,安装好后同样使用vi命令。安装vim:执行下面的语句安装vim full...
2019-10-20 20:35:03 344
原创 【RK3399】【Android7.1】SecureCRT连接虚拟机中的Linux系统(Ubuntu)
Platform: Firefly-RK3399OS: Android 7.1PC: Ubuntu 16.04什么是SecureCRTSecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说就是可以在Windows下登录UNIX或Linux服务器主机的软件。为什么要使用SecureCRT想要操作linux系统的时候不必进入到linux桌面,可以更方便的在命令行下...
2019-10-20 20:05:56 378
原创 【RK3399】【Android7.1】Ubuntu16.04配置开发编译环境出现的问题
(1) ubuntu16.04 安装 lib32readline-gplv2-dev 出错,解决办法直接用 lib32readline6-dev 替代:lib32readline-gplv2-dev使用命令:sudo apt-get install lib32readline6-dev(2) Android N 源码编译错误:Communication error with Jack...
2019-10-19 08:37:52 493
原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(7)——读写信号量
读写信号量概述读写信号量和信号量的关系与读写自旋锁和自旋锁的关系类似。读信号量和写信号量是互斥的,但允许N个读执行单元同事访问共享资源(同事获取读信号量),而最多允许一个写进程获取写信号量。因此,读写信号量相对于信号量更宽松,对于读多写少的情况会明显提高程序的执行效率。读写信号量的使用方法(1) 定义和初始化读写信号量struct rw_semaphore rw_sem; /* 定义读写信...
2019-10-18 16:34:34 249
原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(8)——信号量(Semaphore)
信号量(Semaphore)简单介绍信号量也是一种用来保护 临界区(共享数据) 的常用方法,它的使用方法和自旋锁类似。和自旋锁类似之处是,信号量使用时,只有得到信号量的进程才能够执行临界区代码。和自旋锁不同的地方是,在没有得到信号量的时候,进程不会像自旋锁那样原地旋转,而是进入休眠等待的状态。因此当信号量阻塞时小号的系统资源(主要是CPU资源)并不多,也不会出现死机的现象。信号量的使用方法...
2019-10-15 19:10:47 146
原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(6)——读-复制-更新(RCU)机制API
RCU使用方法(1) 读锁定static inline void rcu_read_lock(void)static inline void rcu_read_lock_bh(void)(2) 读解锁static inline void rcu_read_unlock(void)static inline void rcu_read_unlock_bh(void)(3) 使用RC...
2019-10-13 16:32:16 209
转载 Markdown进阶(更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中)
Markdown进阶(更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中)Markdown进阶(更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中)...
2019-10-12 09:52:59 895 1
原创 【RK3399】【Android7.1】关于adb的一些问题
“adb”不是内部或外部命令,也不是可运行的程序或批处理文件(Win)原因: 出现这个问题的原因是在对应的目录下没有adb执行程序,即“adb.exe”。解决方法:解决这个问题最简单的一个方法就是,将android stuido软件里的 ./sdk/platform-tools/ 目录下的 adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll 三个文件放在对应的目录下...
2019-10-11 21:58:49 1035
原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(5)——读-复制-更新(RCU)机制原理
RCU的原理RCU(Read-Copy-Update,读-复制-更新)机制可以看做是读写自旋锁的扩展。在rwlock机制中读自旋锁和写自旋锁时互斥的,但是在RCU机制中读和写操作是可以并发执行的。在访问共享数据的时候,需要先获取锁,才能访问共享数据。这种原理很简单,其根本思想就是在访问共享资源时,需要先访问一个全局的变量,也就是锁,然后通过全局变量的状态来控制任务线程或进程对共享数据的访问。但...
2019-10-09 17:58:57 239
原创 【RK3399】【Android7.1】Ubuntu16.04配置开发编译环境
获取Ubuntu16.04镜像文件可以在如下地址获取到Ubuntu16.04的镜像文件Ubuntu16.04镜像文件下载链接下载成功后可以得到一个iso镜像文件:ubuntu-16.04.6-desktop-amd64.iso获取的 .iso文件 可以通过vmware 创建新的虚拟机中选中来加载。安装基本的依赖软件sudo apt-get install -y git flex bis...
2019-10-09 17:04:14 1696
原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(4)——顺序锁
顺序锁和读写自旋锁的区别顺序锁 同样是自旋锁的一种衍生,顺序锁和读写自旋锁类似,但是顺序锁赋予了 写自旋锁 更高的权限。在 读写自旋锁 中,读自旋锁和写自旋锁的优先级是相同的,当有任务线程或进程获取了读自旋锁后,写自旋锁必须等待读自旋锁被释放后,才能被获取,反过来也一样。在 顺序锁 中,当任务线程或进程获取了读自旋锁后,不必等到读自旋锁被释放也可以获取写自旋锁,并在此过程中继续执行修改共享数...
2019-10-09 12:32:18 141
原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(3)——读写自旋锁
为什么会引入读写自旋锁自旋锁并不在乎锁定的临界区是进行读操作还是写操作,因为它仅仅允许同一时间只有一个任务线程或进程获取自旋锁,所以即使有很多个任务线程或进程同时读取共享数据并不会影响到共享资源,临界区也会被锁住,这无疑是影响系统性能的。为了解决这个问题,在自旋锁的基础上衍生出了这样一个分支锁——读写自旋锁。读写自旋锁 可以将临界区的读、写操作区分开。如果开发人员认为临界区的代码只是读取了共享...
2019-10-08 18:51:58 144
原创 《Android深度探索 卷1 HAL与驱动开发》笔记之Linux驱动程序中的并发操作(1)——原子操作
为什么需要并发控制通常一个 Linux 驱动程序并不是为了给某个用户空间使用而编写的。调用到这个 Linux 驱动程序的用户有可能会有很多个,这就有可能出现多个用户程序同时对这个 Linux 驱动程序进行read、write、ioctl等操作。由于 Linux 驱动程序还会使用一些全局数据(即共享数据),如果同时对这些全局数据进行操作,就有可能会出现异常数据,这就使得 Linux 驱动必须具有能...
2019-10-07 18:50:42 290
原创 Linux 驱动程序编写流程概述
编写 Linux 驱动程序的步骤第1步:(建立 Linux 驱动的骨架加载和卸载 Linux驱动)Linux 内核在使用驱动前需要先加载驱动。在加载过程中会进行一些初始化的工作,比如分配设置注册对应的结构体,创建设备文件,分配内存地址空间等。而当 Linux 内核需要移除这个驱动时,会卸载该驱动,在卸载这个驱动的过程中会释放掉加载时这个驱动占用的资源,比如释放分配的内存地址空间以及删除创建的...
2019-10-06 22:58:08 1332
嵌入式CC++语言精华文章集锦
2019-02-15
深入Linux设备驱动程序内核机制
2019-02-15
Linux设备驱动开发详解:基于最新的Linux 4.0内核
2019-02-15
Android系统源代码情景分析
2019-02-15
深入理解Android内核设计思想
2019-02-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人