- 博客(17)
- 资源 (33)
- 收藏
- 关注
原创 RK3568平台开发系列讲解(驱动篇)十面埋伏的并发(一):硬件同步原语
十面埋伏的并发(一):硬件同步原语并发的根源多线程、多进程调度各种中断并发对程序的不良影响篡改共享数据动作不完整同步、死锁、数据竞争、系统调度开销…硬件同步原语由计算机硬件提供的一组原子操作,具有不可分割性,避免并行运算执行错误。案例//C语言代码进程一:i=10进程二:i=20//汇编代码进程一:ldr r0, =0X30000000 /* i 变量的内存地址 */ldr r1, = 10 /* 要写入的值 */str r1, [r0] /* 将 10 写入到
2020-01-31 20:55:14 4516 9
原创 RK3399平台开发系列讲解(系统篇)1.14、通信机制 Binder
本博客首先介绍了进程间的通信机制 Binder,其次介绍了 JNI 机制以及传感器模 块实现中是如何使用的,最后以数据传递为主线分析了各模块的设计与实现。平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录1、进程间通信机制1、进程间通信机制Binder作为 Android 中另外一个庞大的体系,虽然代码量多、跨度广,但也 同样需要自己...
2020-01-30 21:10:38 1926 8
原创 RK3568平台开发系列讲解(LCD篇)显示驱动硬件抽象层
在Android系统中,Gralloc模块由gralloc_module_t模块、alloc_device_t设备和framebuffer_device_t设备3个结构体来描述,里面的函数指针具有非常重要的作用。Gralloc模块是由UI库中的文件frameworks/base/include/ui/FramebufferNativeWindow.cpp调用的。在文件FramebufferNativeWindow.cpp中定义了类FramebufferNativeWindow,此类继承了android_
2020-01-30 12:40:30 2984 12
原创 RK3568平台开发系列讲解(驱动篇)十面埋伏的并发(二):自旋锁
十面埋伏的并发(二):自旋锁原子操作简单易用只能作计数操作,保护的东西太少自旋锁主要用于多核处理器短时期的轻量级加锁加锁失败时,原地打转、忙等待避免上下文调度、系统开销较小加锁步骤:查看锁的状态,如果锁是空闲的将锁设置为当前线程持有存在问题在没有 CAS 函数前,多个线程同时执行这 2 个步骤是会出错的。解决方案CAS 函数把这 2 个步骤合并为一条硬件级指令。这样第 1 步比较锁状态和第 2 步锁变量赋值,将变为不可分割的原子指令(硬件同步原语)CA
2020-01-28 21:52:06 1584 9
原创 RK3399平台开发系列讲解(其他篇)1.12、流媒体详解
平台内核版本rv1108Linux3.1文章目录1、流媒体技术基础1.1、流媒体传输的原理1.2、流媒体传输的特点1.3、流媒体传输的方式2、流媒体相关协议2.1、实时流协议--RTSP2.2、实时传输协议--RTP2.3、实时传输控制协议--RTCP2.4、绘画描述协议--SDP1、流媒体技术基础在二十世纪九十年代,流媒体刚出现时,人们就已经能在网上看到视频直播,...
2020-01-28 12:13:26 2742 7
原创 RK3399平台开发系列讲解(其他篇)1.13、H264关键编码技术介绍
平台内核版本rv1108Linux3.1文章目录1、H264的关键编码技术1.1、帧内预测编码1.2、帧间预测编码1.2.1、树状运动补偿1.2.2、高精度运动估计1、H264的关键编码技术H.264 的特征是加大了预测部分的比重,通过改善预测误差而提高编码效率。它采用了一系列先进的编码技术:内容好处分层结构设计增强网络亲和性空域帧内...
2020-01-27 23:10:53 2619 6
原创 RK3568平台开发系列讲解(驱动篇)十面埋伏的并发(三):信号量
十面埋伏的并发(三):信号量本质计数器,用来控制对公共资源的访问特点长时期的资源占用获取信号量失败,触发上下文调度当前进程(线程)陷入休眠,系统开销大信号量相关API定义信号量struct semaphore sem;初始化信号量static inline void sema_init(struct semaphore *sem, int val)参数:sem:指定要初始化的信号量val:信号量的初始值获取信号量void down(struct semaphore
2020-01-27 18:59:14 1639 8
原创 RK3568平台开发系列讲解(驱动篇)十面埋伏的并发(四):互斥锁
十面埋伏的并发(四):互斥锁信号量与互斥锁:同步还是独占?信号量强调信号机制(同步)生产者–消费者模型获取信号量失败,触发上下文调度互斥锁强调互斥机制独占共享资源获取互斥锁失败,触发上下文调度服务于多个线程间的执行的逻辑顺序的选信号量服务于共享资源的选互斥锁自旋锁与互斥锁:休眠还是“忙等待”?自旋锁加锁成本低,不释放cpu使用权互斥锁加锁成本更高(上下文切换耗时在几十纳秒到几微秒之间),加锁失败时会释放 CPU 给其他线程无法判断锁住的代码会执
2020-01-26 20:33:32 2080 8
原创 RK3399平台开发系列讲解(网络篇)7.9、tcpdump及Wireshark工具的使用说明
Tcpdump + Wireshark 实现,在 Linux 里抓包,然后在wireshark里分析包。
2020-01-26 14:05:02 2236 9
原创 RK3399平台开发系列讲解(内核入门篇)1.5、内核编译机制分析
`Linux` 内核从源码到安装使用大致可分三个阶段,配置,编译,安装。配置的过程主要由 `Kconfig` 提供的图形界面完成,也有部分工作由 `Kbuild` 完成。编译的实现机制主要是`Kbuild`系统,由`make`命令完成内核编译。内核的安装也是由`Kbuild`提供的安装脚本再由 `make` 命令执行安装。
2020-01-26 13:15:16 4197 10
原创 RK3568平台开发系列讲解(驱动篇)驱动开发之I2C使用
RK3568开发板上有 6 个片上 I2C 控制器本文主要描述如何在该开发板上配置 I2C。配置 I2C 可分为两大步骤:定义和注册 I2C 设备定义和注册 I2C 驱动
2020-01-25 14:24:53 3805 9
原创 RK3568平台开发系列讲解(驱动篇)驱动开发之红外遥控IR
RK3568 开发板上使用红外收发传感器 IR (在ADC接口下面)实现遥控功能,在 IR 接口处接上红外接收器。本文主要描述在开发板上如何配置红外遥控器。其配置步骤可分为两个部分:修改内核驱动:内核空间修改,Linux 和 Android 都要修改这部分的内容。修改键值映射:用户空间修改(仅限 Android 系统)。
2020-01-25 12:58:25 4453 9
原创 RK3399平台开发系列讲解(其他篇)1.7、Linphone的使用说明
文章目录一、摘要:二、准备工作:三、linphone 操作:四、Linphone中相关api介绍:五、Linphone中参数解析:六、 Linphone中通信过程分析:一、摘要:Linphone是基于WEB的IP电话工具,可以运行于 Linux和Windows下。通过 Linphone可以在互联网上和其他人进行声音、视频通信。 Linphone是遵从SIP协议开发的,它需要和支持SIP协议的设...
2020-01-24 12:24:24 8480 10
原创 RK3568平台开发系列讲解(驱动篇)驱动开发之PWM 使用
配置 PWM 主要有以下三大步骤:配置 PWM DTS 节点、配置 PWM 内核驱动、控制 PWM 设备。
2020-01-24 11:43:40 3181 7
原创 RK3568平台开发系列讲解(驱动篇)IIC核心函数与“万能”驱动
IIC核心函数与“万能”驱动i2c_add_adapter()函数drivers/i2c/i2c-core-base.c注册一个i2c适配器int i2c_add_adapter(struct i2c_adapter *adapter)int i2c_add_numbered_adapter(struct i2c_adapter *adapter)adapter->nr:适配器的编号参数:adapter:i2c物理控制器对应的适配器返回值:成功:0失败:负数i2c_a
2020-01-23 12:02:02 1692 7
原创 RK3568平台开发系列讲解(LCD篇)驱动开发之LCD使用
RK3568的SDK下kernel/arch/arm64/configs/firefly_defconfig已经把LCD相关的配置设置好了,如果自己做了修改,请注意把以下配置加上:CONFIG_DRM_ROCKCHIP=yCONFIG_ROCKCHIP_DW_MIPI_DSI=yCONFIG_DRM_PANEL_SIMPLE=y
2020-01-23 11:23:46 3157 7
原创 RK3399平台开发系列讲解(低功耗篇)11.4、RK3399待机唤醒相关问题定位
待机分为一级待机和二级待机,对应的唤醒也是分成 两级;一级待机:主要动作是关显示(lcd, backlight),关tp,关gsensor等;场景包括音乐播放,蓝牙传输,wifi下载,插USB接电脑等;二级待机:简单理解就是进入soc低功耗模式, RK3399支持 Core 断电,Logic 断电,DDR 进入Retention状态,OSC Disable (系统时钟切为 32.768k);
2020-01-22 21:24:11 5110 11
RK3399 Android7.1-Box 软件开发指南 V1.01-20170401.rar
2021-06-04
ioremap_gpio_demo.c
2021-02-26
rkisp的驱动代码
2020-10-21
MLX90640红外开发资料包.zip
2020-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人