- 博客(44)
- 资源 (33)
- 收藏
- 关注
原创 RK3399平台开发系列讲解(内核设备树篇)3.2、图解Kernel Device Tree(设备树)的使用
本质上,`Device Tree`改变了原来用`hardcode`方式将`HW` 配置信息嵌入到内核代码的方法,改用`bootloader`传递一个`DB`的形式。对于基于`ARM CPU`的嵌入式系统,我们习惯于针对每一个`platform`进行内核的编译。但是随着`ARM`在消费类电子上的广泛应用(甚至桌面系统、服务器系统),我们期望`ARM`能够象`X86`那样用一个`kernel image`来支持多个`platform`。
2020-08-29 17:48:17 6898 12
原创 RK3399平台开发系列讲解(内核驱动外设篇)6.12、PHY芯片RTL8201F的基本概念
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1目前RK已经将在Android体系中加入了以太网的控制,在设置的app里面,我们可以看到以太网的开关。我们知道,以太网接口分为协议层和物理层。RK3399这款主控的协议层是由MAC控制器控制,物理层由PHY芯片控制。MAC控制器已经集成在RK3399内部了,所以我们要通过以太网上网的话,还需要一个PHY芯片。按功能来分的话,MAC控制器实现的是协议层的功能,PHY芯片实现的是物理层的功能。IE.
2020-08-29 11:14:49 5699 8
原创 RK3568 Android11 从入门到实战项目专栏目录及学习指南
欢迎大家来到内核笔记的《RK3568 Android11 从入门到实战项目专栏目录及介绍》,开始前博主先列出RK3568平台学习的大纲,同时这也可以作为大家学习RK3568平台内核与安卓框架的参考。下面蓝字都是传送门,点击进入即可:
2020-08-28 00:04:04 4058 11
原创 RK3568平台开发系列讲解(环境篇)RK3568上OpenCV 的编译移植
OpenCV作为一个开源计算机视觉库,在 Windows、Linux、Android和Mac OS等操作系统上均可运行。OpenCV库因其开源的特性,而且在各种平台上都能移植,加上其能提供的图像处理算法丰富多样,在 ARM 嵌入式平台上也适用于做算法的移植。本系统选择将 OpenCV3.2.0 编译移植到开发板上,开发环境是虚拟机上安装的 Ubuntu16.04。由于 OpenCV 开源,直接在官网上下载源码包 opencv-3.2.0.zip, 在/opt 目录下新建文件夹 arm,并将源码包放入/op
2020-08-25 22:49:23 4224 9
原创 RK3568平台开发系列讲解(环境篇)RK3568 SDK软件架构
SDK 软件框图如图所示, 从下至上分为Bootloader、Linux Kernel、Libraries、Applications四个层次。各层次内容如下:Bootloader层主要提供底层系统支持包,如Bootloader、U-Boot、ATF相关支持。Kernel层主要提供Linux Kernel的标准实现,Linux也是一个开放的操作系统。Rockchip平台的Linux核心为标准的Linux4.4/4.19内核,提供安全性,内存管理,进程管理,网络协议栈等基础支持;主要是通过 Linux 内
2020-08-25 00:09:09 3373 9
原创 RK3568平台开发系列讲解(驱动篇)驱动开发之ADC的使用
文章目录网络设备驱动体系结构net_device 抽象网络驱动程序的实现网络设备驱动体系结构Linux 网络驱动程序的体系结构可以划分为四层, 如下图所示, 从上到下分别为协议接口层, 网络设备接口层, 再就是提供实际功能的设备驱动功能层, 以及网络设备和网络媒介层 。Linux 内核源代码 中提供了网络设备接口及以上层次的代码 , 因此移植特定网络硬件的驱动程序的主要工作就是完 成设备驱动功能层的相应代码 , 根据底层具体的硬 件特性 , 定义网络设备接口struc t net_device 类.
2020-08-23 17:32:48 3655 9
原创 RK3399平台开发系列讲解(网络篇)7.2、图解TCP通信协议
CP(Transmission Control Protocol)是面向连接的通信协议,通过三次握手建立连接
2020-08-23 17:32:01 2692 10
原创 RK3399平台开发系列讲解(网络篇)7.14、linux网桥系统相关数据结构
linux网桥(bridge)相当于一个虚拟二层交换机。 当创建一个bridge时,linux创建一个虚拟接口(net_device),这个虚拟bridge下可以挂接实接口、VLAN虚接口,形成一个多接口的二层交换系统。其内部维护一个高速fdb表(端口、mac、vlan关系表),从而实现完整的二层交换功能,
2020-08-21 23:45:58 2062 9
原创 RK3399平台开发系列讲解(网络篇)7.1、Linux 网络协议栈
由于 OSI 模型实在太复杂,提出的也只是概念理论上的分层,并没有提供具体的实现方案。事实上,我们比较常见,也比较实用的是四层模型,即 TCP/IP 网络模型,Linux 系统正是按照这套网络模型来实现网络协议栈的。
2020-08-21 00:12:24 2604 13
原创 RK3568平台开发系列讲解(驱动篇)POLL底层机制剖析
POLL底层机制剖析系统调用接口sys_pollfs/select.cSYSCALL_DEFINE3(poll, struct pollfd __user *, ufds, unsigned int, nfds,int, timeout_msecs){ struct timespec64 end_time, *to = NULL; int ret; if (timeout_msecs >= 0) { to = &end_time; poll_select_set_tim
2020-08-17 01:07:01 2104 10
原创 RK3399平台开发系列讲解(内核入门篇)1.2、如何高效的阅读Linux内核设备驱动
内核开发在很大程度上并不是重新造“轮子”的过程,而是深入理解并尽量复用现有的内核设计框架,然后参照相似的功能模块去添加或改写某项需要的功能。在对内核整体框架以及某些子系统融会贯通以后,我们才有可能站在巨人的肩膀上去改进框架本身,实现自主创新。如果过分强调不必要的“自主创新”,可能会让内核的可维护性变差,最终结果反而得不偿失。那么此次就分享就围绕如何高效的阅读内核驱动代码:
2020-08-16 16:39:39 6358 15
原创 RK3568平台开发系列讲解(电源篇)Early Suspend驱动
📢在Power Management系统的内核层中,实现文件kernel/power/earlysuspend.c对Kernel提供了如下所示的接口函数
2020-08-16 00:27:25 2281 9
原创 RK3399平台开发系列讲解(高速设备驱动篇)6.16、USB笔记(二) - USB串口设备驱动程序整体流程(对其中USB串口相关结构体的关系梳理)
文章目录1、USB串口模块加载和卸载函数(驱动入口)2、探测和断开函数3、串口设备各种操作的驱动实现3.1、create_serial3.2、destroy_serial3.3、serial_open3.4、serial_close3.5、serial_write3.6、usb_serial_generic_write平台内核版本安卓版本RK3399Linux4.4Android7.1USB 设备驱动程序主要包含 USB 部分的驱动程序和具体设备操作的驱动程序,它们在 L.
2020-08-15 18:46:15 2058 9
原创 RK3399平台开发系列讲解(系统篇)1.11、 Android 各个重要模块启动和/dev/binder的启动
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1
2020-08-14 22:57:43 2320 11
原创 RK3399平台开发系列讲解(系统篇)1.19、 按下开机键后安卓系统的开机流程
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1直接上input的脉络图:
2020-08-14 22:53:48 3010 10
原创 RK3399平台开发系列讲解(其他篇)1.27、Linux内核中的PID管理
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1
2020-08-14 22:08:04 1782 10
原创 RK3399平台开发系列讲解(内核子系统篇)2.33、图解输入子之重要的结构体及工作流程
文章目录1、input子系统结构体之间关系2、input子系统工作流程2.1、设备驱动层2.2、事件处理层2.3、应用程序的 open 操作2.4、底层的事件发生时平台内核版本安卓版本RK3399Linux4.4Android7.11、input子系统结构体之间关系输入子系统主要涉及 input_dev, input_handler, input_handle 等数据结构,其中:input_dev 是物理输入设备的基本数据结构,包括设备相关的一些信息;input_.
2020-08-13 23:31:53 1903 9
原创 RK3399平台开发系列讲解(其他篇)1.25、inux软件稳压器regulator与consumer 设备的关系
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录1、Regulator与Consumer的关系struct regulator 是对 consumer 设备的抽象描述,并提供 regulator操作相关的接口。这节我们重点看看consumer:1、Regulator与Consumer的关系父亲:Regulator儿子:子Regulator儿子的玩具:设备Consumer关系不言而喻如下图:...
2020-08-12 23:12:43 2054 9
原创 RK3399平台开发系列讲解(其他篇)1.26、Linux软件稳压器regulator的抽象类
电源管理芯片可以为多设备供电,但是这些设备电压电流有所同。那么此时就需要一个稳压器对其电压电流的输出进行管理。Linux世界将其抽象成模型即为`regulator`。
2020-08-12 22:52:41 1841 8
原创 RK3399平台开发系列讲解(项目实践篇)1.9、车机安卓框架
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录
2020-08-09 15:16:29 2760 9
原创 RK3399平台开发系列讲解(项目实践篇)1.8、嵌入式开发都可以理解的卷积网络(简单明了无公式)
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录卷积神经网络特点局部连接权值共享卷积神经网络层次输入层卷积层池化层全连接层卷积神经网络特点局部连接卷积神经网络是在全连接神经网络上的拓展和变形,与全连接神经网络的不同之处在于,卷积神经网络中,部分相邻的两层之间不再采用全连接的方式,而采用本层每个神经元只与上一层部分神经元相连接的局部连接方式。如下图所示,分别为全连接和局部连接。图 1 全连接图 2 局部连接局部连接不仅可以很好的...
2020-08-09 00:00:01 2368 10
原创 RK3399平台开发系列讲解(项目实践篇)1.4、OpenCV 实战之图像操作与增强
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录1. 实验环境的安装1.1 Ubuntu 下安装 Anaconda1.2 利用 Anaconda 安装 pythone-opencv2. 灰度分析与变换2.1 直方图介绍2.2 直方图绘制3. 空间域图像增强3.1 均值滤波3.2 方框滤波3.3 高斯滤波3.4 中值滤波完成机器视觉系统的搭建、校准并且确认其可以采集检测目标的图像后,就可以集中精力开发各种图像分析、处理以及模式识别算法。算法是机器...
2020-08-08 23:54:52 3006 10
原创 RK3399平台开发系列讲解(中断篇)13.7、中断request_irq函数做了些什么?
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1
2020-08-07 22:00:39 1994 9
原创 RK3399平台开发系列讲解(中断篇)13.6、中断irq_desc_tree描述
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1
2020-08-07 21:57:38 2044 9
原创 RK3568平台开发系列讲解(驱动篇)Linux 设备和分类
在建立一个设备节点之前,驱动程序首先应当为这个设备获得一个可用的设备号,注销设备需要释放所占用的设备号。当程序打开一个设备文件时,内核就可以获取对应设备的设备类型、主设备号和次设备号等信息,内核也就知道了程序需要操作使用哪个设备驱动程序。设备分为字符设备、块设备和网络设备,而网络设备没有设备节点,所以设备文件基本上就分为字符设备文件和块设备文件两类,在设备节点属性中,分别以。如果事先不知道设备的设备号,或者一个驱动可能在多个系统上运行,为了避免出现设备号冲突,必须采用动态设备号。
2020-08-07 21:53:43 1816 7
原创 RK3568平台开发系列讲解(触摸屏篇)Android11 触摸芯片移植
📢 本章节我们来配置触摸,mipi 屏幕的触摸芯片是 ft5x06。
2020-08-07 21:50:57 1853 8
原创 RK3399平台开发系列讲解(进程调度篇)14.6、等待队列结构体的抽象与关系
等待队列在`linux`内核中有着举足轻重的作用,很多`linux`驱动都或多或少涉及到了等待队列。因此,对于`linux`内核及驱动开发者来说,掌握等待队列是必须课之一。`Linux`内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(`wait_queue_head_t`)和等待队列项(`wait_queue_t`,`typedef struct__wait_queue wait_queue_t;`)。等待队列头和等待
2020-08-07 21:39:32 1827 7
原创 RK3399平台开发系列讲解(内核子系统篇)2.8、 图解输入子系统框架(一)
文章目录平台内核版本安卓版本RK3399Linux4.4Android7.1
2020-08-07 21:34:01 1862 9
原创 RK3399平台开发系列讲解(内核入门篇)1.18、 Sysfs设备驱动管理
Linux系统中一切皆文件。设备文件在哪里呢?它在/dev目录下,也在/sys目录下。它们直接有什么区别呢?/dev目录:该目录下面的文件是真实的设备文件,是应用层通过mknod创建的文件,通常系统中是由udev在运行时创建的。我们通常使用open、write、ioctl等函数操作设备,通常就是操作/dev目录下面的文件,它会间接调用到底层的驱动函数。/sys目录:这是由内核在运行时导出的,目的就是通过文件系统展示出设备、驱动和总线等层次关系。这也是这章节的重点。那么先通过下图看一下sysfs文
2020-08-07 19:21:09 3305 8
原创 RK3399平台开发系列讲解(项目实践篇)1.2、家用智能摄像头项目框图
平台内核版本安卓版本RK3399Linux4.4Android7.1文章目录产品示意图硬件资源:产品示意图硬件资源:
2020-08-06 02:10:23 2715 8
原创 RK3399平台开发系列讲解(系统篇)1.18、init_parse_config_file函数解析init.rc脚本示意图
init_parse_config_file函数解析init.rc脚本示意图
2020-08-06 01:43:16 1853 11
原创 RK3399平台开发系列讲解(网络篇)7.3、图解UDP协议头
UDP 是能够传输数据的最简单的协议,它的协议首部(也称作协议头)只有 8 个字节
2020-08-06 01:38:34 2042 8
原创 RK3399平台开发系列讲解(网络设备驱动篇)5.5、网络字节序
TCP/IP协议隆重出场,RFC1700规定使用“大端”字节序为网络字节序,其他不使用大端的计算机要注意了,发送数据的时候必须要将自己的主机字节序转换为网络字节序(即“大端”字节序),接收到的数据再转换为自己的主机字节序。
2020-08-06 01:31:24 1692 10
原创 RK3399平台开发系列讲解(网络篇)7.4、FTP wireshark交互包分析
一、FTP 登录服务器交互流程包二、FTP 上传文件交互流程包三、FTP 下载文件交互流程包四、退出数据,挥手告别
2020-08-06 01:26:39 1921 9
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关注的人