RK3399平台入门到精通系列讲解 - 总目录

RK3399平台开发入门到精通系列专栏
专栏收录该内容
¥139.00
¥299.90
704 篇文章

在这里插入图片描述

总目录

欢迎大家来到内核笔记的《RK3399平台开发入门到精通系列讲解》,开始前博主先列出RK3399平台学习的大纲,同时这也可以作为大家学习RK3399内核与安卓框架的参考。下面蓝字都是传送门,点击进入即可:

更新说明

此系列已更新五年,将近600篇,对现有文章内容进行优化和勘误,已迫在眉睫,故每周除了新增新知识文章输出,现有文章也将进行维护完善。

学前必读

⭐RK3399平台入门到精通系列讲解(导读篇)前言
RK3399平台入门到精通系列讲解(导读篇)使用到的工具
RK3399平台入门到精通系列讲解(导读篇)资料下载与介绍
RK3399平台入门到精通系列讲解(导读篇)RK3399平台介绍

一、Linux内核开发篇

我们在实际产品的研发过程中,比如手机项目研发或者车载、监控等嵌入式产品的研发,难免要编写驱动或者系统优化,那么常常会遇到一些问题。如果对内核了解很透彻,解决问题的速度也会明显提升。


🎓 1、内核入门篇

📢本篇章是读者在阅读后续章节之前必须掌握的一些基础知识,包括对Linux内核的初步了解、对高效阅读源代码方法的熟练掌握、内核的一些辅助函数、内核一些基础机制、并会对字符设备驱动程序、平台设备驱动程序、Linux驱动模型进介绍。

RK3399平台开发系列讲解(内核入门篇)1.1、如何通过sysfs清楚了解设备的系统状况?
RK3399平台开发系列讲解(内核入门篇)1.2、如何高效的阅读Linux内核设备驱动?
RK3399平台开发系列讲解(内核入门篇)1.3、从内核的角度看外设芯片的驱动
RK3399平台开发系列讲解(内核入门篇)1.4、如何写代码才能够让CPU执行得更快?
RK3399平台开发系列讲解(内核入门篇)1.5、内核编译机制分析
RK3399平台开发系列讲解(内核入门篇)1.6、图解字符驱动模块设计思路
RK3399平台开发系列讲解(内核入门篇)1.7、module_init 的优先级
RK3399平台开发系列讲解(内核入门篇)1.8、IOCTL的用法详解
RK3399平台开发系列讲解(内核入门篇)1.9、Linux的设备驱动管理之内核对象(Kernel object)机制
RK3399平台开发系列讲解(内核入门篇)1.10、bus_type、device、device_driver结构体的关系
RK3399平台开发系列讲解(内核入门篇)1.11、Platform总线驱动详解
RK3399平台开发系列讲解(内核入门篇)1.12、Platfrom 设备与驱动注册
RK3399平台开发系列讲解(内核入门篇)1.13、Platfrom 设备与驱动的匹配规则介绍
RK3399平台开发系列讲解(内核入门篇)1.14、Class设备大管家
RK3399平台开发系列讲解(内核入门篇)1.15、devres_add添加设备资源
RK3399平台开发系列讲解(内核入门篇)1.16、设备资源分配和释放
RK3399平台开发系列讲解(内核入门篇)1.17、proc文件系统介绍与分析
RK3399平台开发系列讲解(内核入门篇)1.18、sys目录详解及介绍
RK3399平台开发系列讲解(内核入门篇)1.19、mdev动态更新设备节点及动态挂着U盘
RK3399平台开发系列讲解(内核入门篇)1.20、container_of 获取结构体首地址原理
RK3399平台开发系列讲解(内核入门篇)1.21、内核定时器timer_list
RK3399平台开发系列讲解(内核入门篇)1.22、消息传递Netlink介绍
RK3399平台开发系列讲解(内核入门篇)1.23、dump_stack 实现分析
RK3399平台开发系列讲解(内核入门篇)1.24、系统CPU 性能指标有哪些?
RK3399平台开发系列讲解(内核入门篇)1.25、内核线程的创建
RK3399平台开发系列讲解(内核入门篇)1.26、什么是系统调用
RK3399平台开发系列讲解(内核入门篇)1.27、Linux中链表的使用与解析
RK3399平台开发系列讲解(内核入门篇)1.28、Priority List(优先级链表)
RK3399平台开发系列讲解(内核入门篇)1.29、什么是队列?
RK3399平台开发系列讲解(内核入门篇)1.30、结构体详解
RK3399平台开发系列讲解(内核入门篇)1.31、指针详解
RK3399平台开发系列讲解(内核入门篇)1.32、CPU是如何执行任务的?
RK3399平台开发系列讲解(内核入门篇)1.33、内核启动流程
RK3399平台开发系列讲解(内核入门篇)1.34、什么是系统调用?
RK3399平台开发系列讲解(内核入门篇)1.35、内核空间布局
RK3399平台开发系列讲解(内核入门篇)1.36、Kthreadd线程
RK3399平台开发系列讲解(内核入门篇)1.37、内核栈
RK3399平台开发系列讲解(内核入门篇)1.38、Systemd 系统启动流程
RK3399平台开发系列讲解(内核入门篇)1.39、函数入栈
RK3399平台开发系列讲解(内核入门篇)1.40、Docker
RK3399平台开发系列讲解(内核入门篇)1.41、内核通知链


🎓2、内核调试篇

📢本篇将介绍Linux内核调试的工具和技巧,以及内核开发者常用的调试工具,例如:动态打印、printk、dump_stack、devmem、usbmon、ethtool、strace等工具的使用。

RK3399平台开发系列讲解(内核调试篇)2.1、如何使用dynamic debug动态打印调试
RK3399平台开发系列讲解(内核调试篇)2.2、如何使用dump_stack分析函数调用关系
RK3399平台开发系列讲解(内核调试篇)2.3、休眠唤醒standby调试指南
RK3399平台开发系列讲解(内核调试篇)2.4、如何创建一个proc节点供上层app调试使用
RK3399平台开发系列讲解(内核调试篇)2.5、网卡PHY的基本调试手段汇总
RK3399平台开发系列讲解(内核调试篇)2.6、devmem直接读写寄存器进行调试
RK3399平台开发系列讲解(内核调试篇)2.7、USB Debugging工具usbmon使用介绍
RK3399平台开发系列讲解(内核调试篇)2.8、Linux Kernel Printk
RK3399平台开发系列讲解(内核调试篇)2.9、USB抓包软件usbmon报文解析
RK3399平台开发系列讲解(内核调试篇)2.10、ethtool工具的移植及解析
RK3399平台开发系列讲解(内核调试篇)2.11、SPI总线的验证方法
RK3399平台开发系列讲解(内核调试篇)2.12、ioremap及mmap映射物理地址操作寄存器
RK3399平台开发系列讲解(内核调试篇)2.13、利用debugfs调试
RK3399平台开发系列讲解(内核调试篇)2.14、USB逻辑分析仪报文分析
RK3399平台开发系列讲解(内核调试篇)2.15、Realtek千兆PHYRTL8211FS相关寄存器操作
RK3399平台开发系列讲解(内核调试篇)2.16、Linux kernel中计算代码运行时间
RK3399平台开发系列讲解(内核调试篇)2.17、添加Sysfs节点(kobject和kset)
RK3399平台开发系列讲解(内核调试篇)2.18、通过/proc/driver/rtc节点读取时间
RK3399平台开发系列讲解(内核调试篇)2.19、strace跟踪器的使用
RK3399平台开发系列讲解(内核调试篇)2.20、Crash dmesg日志分析
RK3399平台开发系列讲解(内核调试篇)2.21、/sys/class/gpio调试
RK3399平台开发系列讲解(内核调试篇)2.22、I2C tools的使用
RK3399平台开发系列讲解(内核调试篇)2.23、使用fdisk调试mmc块设备
RK3399平台开发系列讲解(内核调试篇)2.24、使用iperf进行吞吐量测试
RK3399平台开发系列讲解(内核调试篇)2.25、USB设备掉口问题的定位方法汇总
RK3399平台开发系列讲解(内核调试篇)2.26、EMMC 相关debug日志的打开
RK3399平台开发系列讲解(内核调试篇)2.27、SD等存储设备驱动常用调试方法
RK3399平台开发系列讲解(内核调试篇)2.28、以太网PHY调试方法
RK3399平台开发系列讲解(内核调试篇)2.29、PCIe debug方法
RK3399平台开发系列讲解(内核调试篇)2.30、如何在Linux kernel代码中获取当前进程的信息
RK3399平台开发系列讲解(内核调试篇)2.31、如何开启瑞芯微的I2C设备探测工具
RK3399平台开发系列讲解(内核调试篇)2.32、ALSA库的移植及测试命令
RK3399平台开发系列讲解(内核调试篇)2.33、stty设置串口波特率参数
RK3399平台开发系列讲解(内核调试篇)2.34、DRM架构下如何点亮一块屏
RK3399平台开发系列讲解(内核调试篇)2.35、CPU 利用率中softirq飙高情况分析
RK3399平台开发系列讲解(内核调试篇)2.36、Linux 性能工具有哪些?
RK3399平台开发系列讲解(内核调试篇)2.37、如何分析性能问题?
RK3399平台开发系列讲解(内核调试篇)2.38、使用Bus Hound抓USB设备数据包
RK3399平台开发系列讲解(内核调试篇)2.39、USB设备描述符分析工具-UsbTreeView
RK3399平台开发系列讲解(内核调试篇)2.40、如何分析Page Cache产生的问题
RK3399平台开发系列讲解(内核调试篇)2.41、ptrace
RK3399平台开发系列讲解(内核调试篇)2.42、什么是动态追踪调试?
RK3399平台开发系列讲解(内核调试篇)2.43、CPU 使用率过高怎么排查?
RK3399平台开发系列讲解(内核调试篇)2.44、使用proc文件系统导出信息
RK3399平台开发系列讲解(内核调试篇)2.45、debugfs API 汇总

…


🎓3、内核设备树篇

📢设备树的使用,使得硬件的细节可以直接通过DTB传递给Linux,从而不再需要在内核中进行大量冗余的编码,故本篇章将重点介绍设备树的原理,以及讲解RK3399平台中i2c、spi、uart等总线的设备树配置案例。

RK3399平台开发系列讲解(内核设备树原理)3.1、设备树(Device Tree)的由来
RK3399平台开发系列讲解(内核设备树原理)3.2、图解Kernel Device Tree(设备树)的使用
RK3399平台开发系列讲解(内核设备树原理)3.3、设备树二进制文件DTB解析
RK3399平台开发系列讲解(内核设备树原理)3.4、设备树dtb信息转化为device_node结构
RK3399平台开发系列讲解(内核设备树原理)3.5、DTS 架构下 Device 与 Driver 匹配流程
RK3399平台开发系列讲解(内核设备树原理)3.6、内核对设备树的处理
RK3399平台开发系列讲解(内核设备树原理)3.7、设备树的解析of函数介绍
RK3399平台开发系列讲解(内核设备树原理)3.8、DTB的基本调试方法
RK3399平台开发系列讲解(内核设备树原理)3.9、内核启动阶段获得dtb位置指针过程介绍

RK3399平台开发系列讲解(内核设备树使用)3.9、UART设备树配置说明
RK3399平台开发系列讲解(内核设备树使用)3.10、ADC驱动树配置说明
RK3399平台开发系列讲解(内核设备树使用)3.11、I2C设备树配置说明
RK3399平台开发系列讲解(内核设备树使用)3.12、 SPI设备树配置说明
RK3399平台开发系列讲解(内核设备树使用)3.13、USB驱动树配置说明(待更新)
RK3399平台开发系列讲解(内核设备树使用)3.14、MMC驱动树配置说明(待更新)
RK3399平台开发系列讲解(内核设备树使用)3.15、以太网驱动树配置说明(待更新)
RK3399平台开发系列讲解(内核设备树使用)3.16、瑞芯微显示系统DRM设备树解析
RK3399平台开发系列讲解(内核设备树使用)3.17、开机logo device tree配置说明
RK3399平台开发系列讲解(内核设备树使用)3.18、多屏抢占及热拔插设备树配置
RK3399平台开发系列讲解(内核设备树使用)3.19、Rockchip PWM Backlight 设备树配置与驱动分析
RK3399平台开发系列讲解(内核设备树使用)3.20、 GT9XX 触摸屏设备树配置与内核解析
RK3399平台开发系列讲解(内核设备树使用)3.21、 设备树(DTS)添加版本信息
RK3399平台开发系列讲解(内核设备树使用)3.22、富瀚ISP FH8553设备树说明及其驱动解析
RK3399平台开发系列讲解(内核设备树使用)3.23、创建声卡方式simple-card framework机制分析
RK3399平台开发系列讲解(内核设备树使用)3.24、设备树中的Component System 介绍
RK3399平台开发系列讲解(内核设备树使用)3.25、WIFI设备树的解析
…


🎓4、低速设备驱动篇

📢本篇将介绍低速设备总线驱动:GPIO、PINCTL、I2C、SPI、UART、IIO

RK3399平台开发系列讲解(GPIO子系统)4.1、GPIO子系统框架图解
RK3399平台开发系列讲解(GPIO子系统)4.2、GPIO子系统之描述符的获取
RK3399平台开发系列讲解(GPIO子系统)4.3、GPIO子系统源码分析(待更新)
RK3399平台开发系列讲解(GPIO子系统)4.4、GPIO子系统与Pinctrl子系统的交互(待更新)

RK3399平台开发系列讲解(Pinctrl子系统)4.5、Pinctrl子系统详解
RK3399平台开发系列讲解(Pinctrl子系统)4.6、pinctrl子系统之框架组成
RK3399平台开发系列讲解(Pinctrl子系统)4.7、pinctrl子系统之图解相关数据结构
RK3399平台开发系列讲解(Pinctrl子系统)4.8、pinctrl子系统之图解注册过程
RK3399平台开发系列讲解(Pinctrl子系统)4.9、pinctrl子系统之相关ops操作集
RK3399平台开发系列讲解(Pinctrl子系统)4.10、pinctrl子系统之创建与设备树的解析
RK3399平台开发系列讲解(Pinctrl子系统)4.11、pinctrl子系统之与dev的绑定

RK3399平台开发系列讲解(SPI子系统)4.12、SPI通信过程介绍
RK3399平台开发系列讲解(SPI子系统)4.13、SPI子系统驱动框架详解
RK3399平台开发系列讲解(SPI子系统)4.13、SPI子系统之数据结构的抽象
RK3399平台开发系列讲解(SPI子系统)4.14、SPI子系统之数据结构的解析
RK3399平台开发系列讲解(SPI子系统)4.15、SPI子系统之驱动框架分析
RK3399平台开发系列讲解(SPI子系统)4.16、SPI子系统之数据的传输图示
RK3399平台开发系列讲解(SPI子系统)4.17、SPI子系统之spidev驱动分析
RK3399平台开发系列讲解(SPI子系统)4.18、SPI子系统之主机驱动与外设驱动分离模型

RK3399平台开发系列讲解(I2C子系统)4.19、I2C通信过程介绍
RK3399平台开发系列讲解(I2C子系统)4.20、I2C协议详解
RK3399平台开发系列讲解(I2C子系统)4.21、I2C物理总线详解
RK3399平台开发系列讲解(I2C子系统)4.22、I2C驱动详解
RK3399平台开发系列讲解(I2C子系统)4.23、I2C子系统之数据结构的抽象
RK3399平台开发系列讲解(I2C子系统)4.24、I2C子系统之框架图解
RK3399平台开发系列讲解(I2C子系统)4.25、I2C子系统之i2c adapter层的注册过程
RK3399平台开发系列讲解(I2C子系统)4.26、I2C子系统之i2c_new_device过程解析
RK3399平台开发系列讲解(I2C子系统)4.27、I2C子系统之读写流程
RK3399平台开发系列讲解(I2C子系统)4.28、I2C子系统之读写相关数据结构关系

RK3399平台开发系列讲解(UART子系统)4.29、TTY子系统之终端设备的抽象
RK3399平台开发系列讲解(UART子系统)4.30、TTY子系统之数据结构关系
RK3399平台开发系列讲解(UART子系统)4.31、TTY子系统之系统框架
RK3399平台开发系列讲解(UART子系统)4.32、串口子系统之uart_driver结构详解
RK3399平台开发系列讲解(UART子系统)4.33、串口子系统之底层uart_driver注册进TTY子系统

RK3399平台开发系列讲解(Input子系统)4.34、输入系统之设备数据结构体的抽象(待更新)
RK3399平台开发系列讲解(Input子系统)4.35、输入系统之GPIO按键驱动程序分析(待更新)
RK3399平台开发系列讲解(Input子系统)4.36、输入系统之触摸屏驱动程序分析(待更新)

…


🎓5、高速设备驱动篇

📢本篇将介绍高速设备总线驱动:以太网、PCIE、USB、MMC

RK3399平台开发系列讲解(以太网)5.1、MDIO Interface Clause 45与Clause 22详解
RK3399平台开发系列讲解(以太网)5.2、以太网控制及通信接口梳理
RK3399平台开发系列讲解(以太网)5.3、控制接口MDIO子系统之结构体抽象
RK3399平台开发系列讲解(以太网)5.4、MDIO总线上phy_device与phy_driver的匹配
RK3399平台开发系列讲解(以太网)5.5、mii_bus的注册mdiobus_register函数解析
RK3399平台开发系列讲解(以太网)5.6、以太网PHY的状态机
RK3399平台开发系列讲解(以太网)5.7、MDIO总线接口驱动详解
RK3399平台开发系列讲解(以太网)5.8、网卡操作描述结构:struct net_device_ops
RK3399平台开发系列讲解(以太网)5.9、虚拟网卡设备之VLAN
RK3399平台开发系列讲解(以太网)5.10、Linux网桥工作原理与实现
RK3399平台开发系列讲解(以太网)5.11、PHY工作的代码流程

RK3399平台开发系列讲解(PCI/PCI-E)5.11、PCI设备的内存是如何访问的?
RK3399平台开发系列讲解(PCI/PCI-E)5.12、如何对PCI设备进行配置操作
RK3399平台开发系列讲解(PCI/PCI-E)5.13、PCI总线信号定义
RK3399平台开发系列讲解(PCI/PCI-E)5.14、PCI总线地址空间介绍及配置
RK3399平台开发系列讲解(PCI/PCI-E)5.15、PCIe接口及数据包的解析
RK3399平台开发系列讲解(PCI/PCI-E)5.16、PCIe对PCI配置空间的扩展
RK3399平台开发系列讲解(PCI/PCI-E)5.17、PCIe体系结构
RK3399平台开发系列讲解(PCI/PCI-E)5.18、PCIe事务包(TLP)详解
RK3399平台开发系列讲解(PCI/PCI-E)5.19、PCIe路由方式详解
RK3399平台开发系列讲解(PCI/PCI-E)5.20、PCIe各类接口简介
RK3399平台开发系列讲解(PCI/PCI-E)5.21、PCI总线的驱动注册
RK3399平台开发系列讲解(PCI/PCI-E)5.22、PCI总线数据结构
RK3399平台开发系列讲解(PCI/PCI-E)5.23、PCI RC枚举过程分析(待更新)
RK3399平台开发系列讲解(PCI/PCI-E)5.24、PCI EP 驱动分析(待更新)
RK3399平台开发系列讲解(PCI/PCI-E)5.25、PCI EP 驱动分析(待更新)
RK3399平台开发系列讲解(PCI/PCI-E)5.26、PCI EP 驱动分析(待更新)

RK3399平台开发系列讲解(USB设备驱动)5.27、USB设备架构及设备描述符
RK3399平台开发系列讲解(USB设备驱动)5.28、USB 协议标准
RK3399平台开发系列讲解(USB设备驱动)5.29、USB Type C结构图
RK3399平台开发系列讲解(USB设备驱动)5.30、usb gadget configfs 的原理
RK3399平台开发系列讲解(USB设备驱动)5.31、使用usb gadget configfs配置USB功能
RK3399平台开发系列讲解(USB设备驱动)5.32、USB设备的插入检测
RK3399平台开发系列讲解(USB设备驱动)5.33、Gadget Function API
RK3399平台开发系列讲解(USB设备驱动)5.34、UDC设备控制器驱动代码详解
RK3399平台开发系列讲解(USB设备驱动)5.35、UDC和gadget_driver绑定
RK3399平台开发系列讲解(USB设备驱动)5.36、Gadget框架对Device/Driver的管理
RK3399平台开发系列讲解(USB设备驱动)5.37、Gadget Device驱动详解
RK3399平台开发系列讲解(USB设备驱动)5.38、USB设备端中断程序介绍
RK3399平台开发系列讲解(USB设备驱动)5.39、Gadget Driver(Configfs)详解
RK3399平台开发系列讲解(USB设备驱动)5.40、Gadget Driver (Legacy)
RK3399平台开发系列讲解(USB设备驱动)5.41、ECM Function Driver代码分析
RK3399平台开发系列讲解(USB设备驱动)5.42、USB枚举过程分析
RK3399平台开发系列讲解(USB设备驱动)5.43、USB BC1.2充电协议学习
RK3399平台开发系列讲解(USB设备驱动)5.44、URB Status分析

RK3399平台开发系列讲解(USB主机驱动)5.45、USB主机控制器驱动
RK3399平台开发系列讲解(USB主机驱动)5.46、USB主机控制器驱动数据结构体
RK3399平台开发系列讲解(USB主机驱动)5.47、USB主机枚举过程分析

RK3399平台开发系列讲解(MMC)5.48、Secure Digital(SD) Host Controller驱动分析之硬件电路与MMC协议介绍
RK3399平台开发系列讲解(MMC)5.49、Secure Digital(SD) Host Controller驱动分析之MMC子系统的组成
RK3399平台开发系列讲解(MMC)5.50、Secure Digital(SD) Host Controller驱动分析之数据结构关系
RK3399平台开发系列讲解(MMC)5.51、Secure Digital(SD) Host Controller驱动分析之相关初始化

RK3399平台开发系列讲解(WIFI)5.52、WIFI框架组成介绍
RK3399平台开发系列讲解(WIFI)5.53、hostapd(WIFI AP模式)配置文件说明
RK3399平台开发系列讲解(WIFI)5.54、什么是IEEE 802.11系列标准协议
RK3399平台开发系列讲解(WIFI)5.55、sdio wifi驱动代码流程分析
RK3399平台开发系列讲解(WIFI)5.56、什么是WIFI无线局域网

…


🎓6、内核驱动外设篇

📢本篇将介绍常见外设的驱动程序。

RK3399平台开发系列讲解(内核驱动外设篇)6.1、热红外传感器模块(MLX90614)使用介绍
RK3399平台开发系列讲解(内核驱动外设篇)6.2、热成像传感器(MLX90640)驱动
RK3399平台开发系列讲解(内核驱动外设篇)6.3、RK3399平台增加红外接收功能
RK3399平台开发系列讲解(内核驱动外设篇)6.4、RK3399平台增加DHT11驱动
RK3399平台开发系列讲解(内核驱动外设篇)6.5、音频芯片ES8323 基础知识及设备树相关配置
RK3399平台开发系列讲解(内核驱动外设篇)6.6、ALC5651 声卡驱动调试
RK3399平台开发系列讲解(内核驱动外设篇)6.7、旋钮按键的驱动调试
RK3399平台开发系列讲解(内核驱动外设篇)6.8、视频解码芯片GM7150驱动的添加
RK3399平台开发系列讲解(内核驱动外设篇)6.9、GT9XX触摸屏驱动详解
RK3399平台开发系列讲解(内核驱动外设篇)6.10、CAN转SPI 控制芯片MCP2515设备树配置
RK3399平台开发系列讲解(内核驱动外设篇)6.11、富瀚ISP驱动程序记录
RK3399平台开发系列讲解(内核驱动外设篇)6.12、PHY芯片RTL8201F的基本概念
RK3399平台开发系列讲解(内核驱动外设篇)6.13、add ethernet(RTL8306MB) support
RK3399平台开发系列讲解(内核驱动外设篇)6.14、ES8323音频芯片驱动分析
RK3399平台开发系列讲解(内核驱动外设篇)6.15、通过ES8388代码驱动理解DPAM(动态音频电源管理)
RK3399平台开发系列讲解(内核驱动外设篇)6.16、SarADC & 按键驱动分析
RK3399平台开发系列讲解(内核驱动外设篇)6.17、VOP驱动解析
RK3399平台开发系列讲解(内核驱动外设篇)6.18、调试笔记显示屏参的三种配置方法
RK3399平台开发系列讲解(内核驱动外设篇)6.19、摄像头OV4689模组驱动代码分析
RK3399平台开发系列讲解(内核驱动外设篇)6.20、TEA685XA收音机芯片的驱动
RK3399平台开发系列讲解(内核驱动外设篇)6.21、RK LCD显示驱动分析(fb和screen 部分程序)
RK3399平台开发系列讲解(内核驱动外设篇)6.22、UVC介绍及查看日志
RK3399平台开发系列讲解(内核驱动外设篇)6.23、UVC驱动分析
RK3399平台开发系列讲解(内核驱动外设篇)6.24、DRM下device resource management(设备资源管理)
RK3399平台开发系列讲解(内核驱动外设篇)6.25、GT9XX触摸屏驱动详解
RK3399平台开发系列讲解(内核驱动外设篇)6.26、DM5150驱动的支持
RK3399平台开发系列讲解(内核驱动外设篇)6.27、加密芯片支持(一)驱动支持
RK3399平台开发系列讲解(内核驱动外设篇)6.28、OV13850 Camera的移植
RK3399平台开发系列讲解(内核驱动外设篇)6.29、WIFI的移植
RK3399平台开发系列讲解(内核驱动外设篇)6.30、FLASH(W25Q128)的驱动解析
RK3399平台开发系列讲解(内核驱动外设篇)6.31、ALSA驱动分析
RK3399平台开发系列讲解(内核驱动外设篇)6.32、DM5150的驱动支持
RK3399平台开发系列讲解(内核驱动外设篇)6.33、触摸屏FT5X06驱动程序详细分析
RK3399平台开发系列讲解(内核驱动外设篇)6.34、实时时钟芯片AM1805驱动程序调试

…


🎓7、网络协议栈篇

📢当今是万物互联的5G时代,网络尤其重要,所以Linux网络协议栈将在本篇章进行重点讲解,围绕:物理层(MAC、PHY)、数据链路层(VLAN)、网络层(IP)、传输层(TCP/UDP)和应用层进行讲解相关内容的使用及原理。

RK3399平台开发系列讲解(网络篇)7.1、Linux 网络协议栈
RK3399平台开发系列讲解(网络篇)7.2、图解TCP通信协议
RK3399平台开发系列讲解(网络篇)7.3、图解UDP协议头
RK3399平台开发系列讲解(网络篇)7.4、FTP wireshark交互包分析
RK3399平台开发系列讲解(网络篇)7.5、图解HTTP
RK3399平台开发系列讲解(网络篇)7.6、网关
RK3399平台开发系列讲解(网络篇)7.7、ICMP与ping:网络侦察兵
RK3399平台开发系列讲解(网络篇)7.8、DHCP与PXE:IP是如何生成的?
RK3399平台开发系列讲解(网络篇)7.9、tcpdump及Wireshark工具的使用说明
RK3399平台开发系列讲解(网络篇)7.10、Linux网络包接收过程的监控
RK3399平台开发系列讲解(网络篇)7.11、图解Linux网络包接收过程
RK3399平台开发系列讲解(网络篇)7.12、在 Linux 上检查网络的常用工具
RK3399平台开发系列讲解(网络篇)7.13、如何兼顾并发数量与传输速度?
RK3399平台开发系列讲解(网络篇)7.14、Linux网桥系统相关数据结构
RK3399平台开发系列讲解(网络篇)7.15、网络为什么要分层?
RK3399平台开发系列讲解(网络篇)7.16、使用socket接口进行网络通信
RK3399平台开发系列讲解(网络篇)7.17、Socket内核数据结构
RK3399平台开发系列讲解(网络篇)7.18、什么是Socket套接字?
RK3399平台开发系列讲解(网络篇)7.19、Linux网络协议栈详解
RK3399平台开发系列讲解(网络篇)7.20、接收网络包从硬件网卡到IP层的处理(NAPI)
RK3399平台开发系列讲解(网络篇)7.21、如何提升网络数据包的接收性能
RK3399平台开发系列讲解(网络篇)7.22、select系统调用源码分析
RK3399平台开发系列讲解(网络篇)7.23、设备驱动程序中poll函数实现
RK3399平台开发系列讲解(网络篇)7.24、IP协议源码分析
RK3399平台开发系列讲解(网络篇)7.25、Socket接口的分层
RK3399平台开发系列讲解(网络篇)7.26、UDP协议源码分析
RK3399平台开发系列讲解(网络调试)7.27、如何分析TCP重传问题?
RK3399平台开发系列讲解(网络调试)7.28、如何分析常见的TCP问题?
RK3399平台开发系列讲解(网络调试)7.29、网络性能工具总结
RK3399平台开发系列讲解(网络调试)7.30、TCP 数据包的发送过程会受什么影响?
RK3399平台开发系列讲解(网络调试)7.31、TCP连接的建立和断开过程分析
RK3399平台开发系列讲解(网络调试)7.32、什么是网络路由?
RK3399平台开发系列讲解(网络调试)7.33、网络性能优化
RK3399平台开发系列讲解(网络调试)7.34、什么是iptables
RK3399平台开发系列讲解(网络调试)7.35、如何衡量 Linux 的网络性能
RK3399平台开发系列讲解(网络篇)7.36、ARP协议与邻居子系统剖析


🎓8、Linux I/O 篇

RK3399平台开发系列讲解(I/O篇)8.1、常见的I/O模型
RK3399平台开发系列讲解(I/O篇)8.2、I/O 操作
RK3399平台开发系列讲解(I/O篇)8.3、Linux 磁盘I/O是怎么工作的?
RK3399平台开发系列讲解(I/O篇)8.4、怎么才能衡量磁盘的 I/O 性能?
RK3399平台开发系列讲解(I/O篇)8.5、什么是Virtual File System(虚拟文件系统)


🎓9、Yocto篇

RK3399平台开发系列讲解(Yocto篇)9.1、Yocto简介
RK3399平台开发系列讲解(系统编译篇)9.1、系统分区表的修改
RK3399平台开发系列讲解(系统编译篇)9.2、系统固件的打包
RK3399平台开发系列讲解(系统编译篇)9.3、make命令 make 可在 /usr/bin/make处找到 由于/usr/bin 不在PATH 环境变量中,故无法找到该命令。
RK3399平台开发系列讲解(系统编译篇)9.4、AOSP build 流程分析
RK3399平台开发系列讲解(系统编译篇)9.5、编译时so库生成不了问题
RK3399平台开发系列讲解(系统编译篇)9.6、安卓开发环境的搭建及编译


🎓10、硬件波形篇

📢本篇章将讲述驱动开发工程师必备的硬件基础,主要分析常见的外设接口与总线的工作方式,包括串口、I2C、SPI、USB、以太网接口、PCI/PCI-E、SD和SDIO等。
RK3399平台开发系列讲解(硬件波形解析篇)10.1、示波器的使用(待更新)
RK3399平台开发系列讲解(硬件波形解析篇)10.2、逻辑分析仪的使用(待更新)
RK3399平台开发系列讲解(硬件波形解析篇)10.3、USB2.0相关硬件波形(实图)解析
RK3399平台开发系列讲解(硬件波形解析篇)10.4、UART硬件波形解析
RK3399平台开发系列讲解(硬件波形解析篇)10.5、I2C波形分析(待更新)
RK3399平台开发系列讲解(硬件波形解析篇)10.6、SPI波形分析(待更新)
RK3399平台开发系列讲解(硬件波形解析篇)10.7、以太网波形分析(待更新)
RK3399平台开发系列讲解(硬件波形解析篇)10.8、SDIO波形分析(待更新)


🎓11、电源管理篇

RK3399平台开发系列讲解(低功耗篇)11.1、wakeup events framework
RK3399平台开发系列讲解(低功耗篇)11.2、Runtime Power Management框架分析
RK3399平台开发系列讲解(低功耗篇)11.3、休眠唤醒基本概念
RK3399平台开发系列讲解(低功耗篇)11.4、休眠唤醒流程
RK3399平台开发系列讲解(电源管理篇)11.5、Regulator子系统详解
RK3399平台开发系列讲解(电源管理篇)11.6、wakelock详解
RK3399平台开发系列讲解(电源管理篇)11.7、PM callback
RK3399平台开发系列讲解(电源管理篇)11.8、runtime PM


🎓12、Linux并发与同步

Linux内核提供了多种并发访问的保护机制,例如原子操作、自旋锁、信号量、互斥体、读写锁、RCU等,本篇章将详细分析这些锁机制的实现。了解Linux内核中各种锁的实现机制只是第一步,重要的是思考哪些地方是临界区,该用什么机制来保护这些临界区。

RK3399平台开发系列讲解(并发与同步篇)12.1、Linux死锁问题情况介绍
RK3399平台开发系列讲解(并发与同步篇)12.2、互斥锁与自旋锁的选择
RK3399平台开发系列讲解(并发与同步篇)12.3、读写锁
RK3399平台开发系列讲解(并发与同步篇)12.4、如何根据业务场景选择合适的锁?
RK3399平台开发系列讲解(并发与同步篇)12.5、Linux的自旋锁和信号量如何实现?
RK3399平台开发系列讲解(同步与互斥篇)12.6、RCU原理与实现
RK3399平台开发系列讲解(同步与互斥篇)12.7、Linux并发控制机制总结
RK3399平台开发系列讲解(同步与互斥篇)12.8、信号量
RK3399平台开发系列讲解(同步与互斥篇)12.9、互斥锁的实现原理


🎓13、Linux中断子系统

本篇章介绍ARM架构下中断是如何管理的,Linux内核中的中断管理机制是如何设计与实现的,以及常用的下半部机制,例如软中断、tasklet、workqueue等。

RK3399平台开发系列讲解(中断篇)13.1、中断描述符的介绍及中断注册
RK3399平台开发系列讲解(中断篇)13.2、图解workqueue结构体
RK3399平台开发系列讲解(中断篇)13.3、workqueue初始化
RK3399平台开发系列讲解(中断篇)13.4、CMWQ(Concurrency Managed Workqueue)
RK3399平台开发系列讲解(中断篇)13.5、Linux Workqueue的使用
RK3399平台开发系列讲解(中断篇)13.6、中断子系统
RK3399平台开发系列讲解(中断篇)13.7、上半部和下半部
RK3399平台开发系列讲解(中断篇)13.8、怎么理解Linux软中断?
RK3399平台开发系列讲解(中断篇)13.9、中断下半部Tasklet的原理及使用
RK3399平台开发系列讲解(中断篇)13.10、workqueue工作队列
RK3399平台开发系列讲解(中断篇)13.11、ARM的异常处理过程
RK3399平台开发系列讲解(中断篇)13.12、中断驱动数据结构抽象
RK3399平台开发系列讲解(中断篇)13.13、中断下半部Tasklet实现原理
RK3399平台开发系列讲解(中断篇)13.14、中断下半部WorkQueue实现原理
RK3399平台开发系列讲解(中断篇)13.15、中断下半部WorkQueue编程接口介绍
RK3399平台开发系列讲解(中断篇)13.16、SoftIRQ详解


🎓14、Linux进程篇

RK3399平台开发系列讲解(进程调度篇)14.1、进程的文件表项
RK3399平台开发系列讲解(进程调度篇)14.2、进程管理架构图
RK3399平台开发系列讲解(进程调度篇)14.3、调度进程或线程的最小单元-任务添加链接描述
RK3399平台开发系列讲解(进程调度篇)14.4、 进程状态有限状态机
RK3399平台开发系列讲解(进程调度篇)14.5、内核中等待队列(wait queue)的介绍
RK3399平台开发系列讲解(进程调度篇)14.6、等待队列结构体的抽象与关系
RK3399平台开发系列讲解(进程调度篇)14.7、等待队列原理与实现
RK3399平台开发系列讲解(进程间通信篇)14.8、Unix Domain Sockets使用
RK3399平台开发系列讲解(进程间通信篇)14.9、共享内存


🎓15、Linux内存管理篇

RK3399平台开发系列讲解(内存篇)15.1、Linux 的 Page Cache
RK3399平台开发系列讲解(内存篇)15.2、ioremap
RK3399平台开发系列讲解(内存篇)15.3、kmalloc
RK3399平台开发系列讲解(内存篇)15.4、kmalloc与vmalloc区别
RK3399平台开发系列讲解(内存篇)15.5、为什么需要Slab
RK3399平台开发系列讲解(内存篇)15.6、OOM触发机制
RK3399平台开发系列讲解(内存篇)15.7、读取进程内存利用率
RK3399平台开发系列讲解(内存篇)15.8、free -m命令查看内存占用情况介绍
RK3399平台开发系列讲解(内存篇)15.9、内存泄漏排查方法
RK3399平台开发系列讲解(内存篇)15.10、/proc/meminfo 解析
RK3399平台开发系列讲解(内存篇)15.11、Slab、Slub、Slob的区别
RK3399平台开发系列讲解(内存篇)15.12、slub分配器的理念
RK3399平台开发系列讲解(内存篇)15.13、图解kmem_cache结构体
RK3399平台开发系列讲解(内存篇)15.14、内存被覆盖导致启动死机问题
RK3399平台开发系列讲解(内存篇)15.15、MMU页表存储管理部分
RK3399平台开发系列讲解(内存篇)15.16、程序运行时的进程地址空间
RK3399平台开发系列讲解(内存篇)15.17、物理内存的组织形式
RK3399平台开发系列讲解(内存篇)15.18、Linux swap的实现
RK3399平台开发系列讲解(内存篇)15.19、Linux 虚拟内存
RK3399平台开发系列讲解(内存篇)15.20、默认页大小是4KB的原因
RK3399平台开发系列讲解(内存篇)15.21、Swapping解决的问题
RK3399平台开发系列讲解(内存篇)15.22、页回收的三种路径
RK3399平台开发系列讲解(内存篇)15.23、Linux IOMMU
RK3399平台开发系列讲解(内存篇)15.24、用户态进程的地址空间介绍
RK3399平台开发系列讲解(内存篇)15.25、Page Cache是怎样产生和释放的?
RK3399平台开发系列讲解(内存篇)15.26、Linux内存是怎么工作的?
RK3399平台开发系列讲解(内存篇)1.27、Linux IOMMU
RK3399平台开发系列讲解(内存篇)15.28、Linux mmap完全剖析
RK3399平台开发系列讲解(内存篇)15.29、物理内存管理
RK3399平台开发系列讲解(内存篇)15.30、伙伴系统分配算法
RK3399平台开发系列讲解(内存篇)15.31、内存调优参数


二、安卓开发基础篇

1、安卓系统修改记录篇

RK3399平台开发系列讲解(系统修改记录篇)1.1、安卓界面如何去掉顶部Google搜索栏
RK3399平台开发系列讲解(系统修改记录篇)1.2、如何修改安卓系统的浏览器默认主页
RK3399平台开发系列讲解(系统修改记录篇)1.3、开机动画代码的添加
RK3399平台开发系列讲解(系统修改记录篇)1.4、添加更改开机logo
RK3399平台开发系列讲解(系统修改记录篇)1.5、安卓系统所有音量条统一控制
RK3399平台开发系列讲解(系统修改记录篇)1.6、安卓系统开机logo 双屏异显配置
RK3399平台开发系列讲解(系统修改记录篇)1.7、安卓系统去除USB权限弹窗
RK3399平台开发系列讲解(系统修改记录篇)1.8、安卓系统去掉ADB打开时的确认框
RK3399平台开发系列讲解(系统修改记录篇)1.9、安卓系统强制横屏或者竖屏显示
RK3399平台开发系列讲解(系统修改记录篇)1.10、修改安卓系统浏览器默认主页
RK3399平台开发系列讲解(系统修改记录篇)1.11、 修改安卓系统默认壁纸
RK3399平台开发系列讲解(系统修改记录篇)1.12、隐藏安卓系统的导航栏和状态栏
RK3399平台开发系列讲解(系统修改记录篇)1.13、安卓系统hal层修改最大支持摄像头数量
RK3399平台开发系列讲解(系统修改记录篇)1.14、Android系统打开user版本的root权限
RK3399平台开发系列讲解(系统修改记录篇)1.15、安卓系统旋转后导航栏丢失,并有黑边问题解决
RK3399平台开发系列讲解(系统修改记录篇)1.16、优化开机启动时间
RK3399平台开发系列讲解(系统修改记录篇)1.17、Android系统永不休眠修改步骤(一般是为了开发便利)
RK3399平台开发系列讲解(系统修改记录篇)1.18、加密芯片支持(二)JNI
RK3399平台开发系列讲解(系统修改记录篇)1.19、添加白名单
RK3399平台开发系列讲解(系统修改记录篇)1.20、system.img扩容
RK3399平台开发系列讲解(系统修改记录篇)1.21、热成像传感器MLX90640的JNI添加
RK3399平台开发系列讲解(系统修改记录篇)1.22、添加HAL层代码步骤
RK3399平台开发系列讲解(系统修改记录篇)1.23、CVBS显示输出N制式、P制式添加


2、安卓系统调试记录篇

RK3399平台开发系列讲解(系统篇)1.1、安卓系统WIFI相关目录介绍与总结
RK3399平台开发系列讲解(系统篇)1.2、蓝牙相关目录介绍与总结
RK3399平台开发系列讲解(系统篇)1.3、安卓系统SurfaceFlinger显示框架
RK3399平台开发系列讲解(系统篇)1.4、安卓系统输入子系统从下到上的三种配置文件
RK3399平台开发系列讲解(系统篇)1.5、安卓输入系统流程图解
RK3399平台开发系列讲解(系统篇)1.6、安卓系统JNI的使用
RK3399平台开发系列讲解(系统篇)1.7、添加一个framework系统调用给app
RK3399平台开发系列讲解(系统篇)1.8、如何在安卓系统中添加硬件抽象层接口
RK3399平台开发系列讲解(系统篇)1.9、Settings 中的WiFi的设置流程分析
RK3399平台开发系列讲解(系统篇)1.10、 安卓系统中启动init.rc文件格式介绍
RK3399平台开发系列讲解(系统篇)1.11、 Android 各个重要模块启动和/dev/binder的启动
RK3399平台开发系列讲解(系统篇)1.12、安卓系统怎样检测键盘等输入设备的拔插?输入系统中的inotify、epoll
RK3399平台开发系列讲解(系统篇)1.13、输入系统框架之输入设备配置文件(idc文件)
RK3399平台开发系列讲解(系统篇)1.14、通信机制 Binder
RK3399平台开发系列讲解(系统篇)1.15、传感器 HAL 层的设计与实现
RK3399平台开发系列讲解(系统篇)1.16、音频播放与录音框架
RK3399平台开发系列讲解(系统篇)1.17、Camera软件框架(目录介绍)
RK3399平台开发系列讲解(系统篇)1.18、init_parse_config_file函数解析init.rc脚本示意图
RK3399平台开发系列讲解(系统篇)1.19、 按下开机键后安卓系统的开机流程
RK3399平台开发系列讲解(系统篇)1.20、 Android 9.0 下中科微 GNSS HAL 的移植过程
RK3399平台开发系列讲解(系统篇)1.21、百度 CarLife 总结

RK3399平台开发系列讲解(系统篇)1.22、Andriod 下 GPU 渲染开发总结
RK3399平台开发系列讲解(系统篇)1.23、新yolo算法在rk平台上的挣扎历程
RK3399平台开发系列讲解(系统篇)1.24、Tensorflow object detection API部署使用
RK3399平台开发系列讲解(系统篇)1.25、Android 进程内存回收机制


三、Linux应用开发基础篇

RK3399平台开发系列讲解(应用开发篇)1.1、SPI总线节点的使用
RK3399平台开发系列讲解(应用开发篇)1.2、I2C总线节点的使用
RK3399平台开发系列讲解(应用开发篇)1.3、ADC节点数据的读取
RK3399平台开发系列讲解(应用开发篇)1.4、音频的ALSA架构介绍及ALSA库的移植
RK3399平台开发系列讲解(应用开发篇)1.5、创建线程模块
RK3399平台开发系列讲解(应用开发篇)1.6、队列的实现
RK3399平台开发系列讲解(应用开发篇)1.7、状态机的实现
RK3399平台开发系列讲解(应用开发篇)1.8、 FBDEV: Framebuffer Device显示测试程序显示测试程序
RK3399平台开发系列讲解(应用开发篇)1.9、GPIO 编程-操作/sys/class/gpio/目录下文件方式
RK3399平台开发系列讲解(应用开发篇)1.10、Linux串口编程


四、项目实践篇

RK3399平台开发系列讲解(项目实践篇)1.1、5G自动驾驶网络协议拓扑图
RK3399平台开发系列讲解(项目实践篇)1.2、家用智能摄像头项目框图
RK3399平台开发系列讲解(项目实践篇)1.3、在RK3399上通过MTCNN进行人脸识别(一)MTCNN介绍
RK3399平台开发系列讲解(项目实践篇)1.4、OpenCV 实战之图像操作与增强
RK3399平台开发系列讲解(项目实践篇)1.5、车载项目-车机硬件总体设计
RK3399平台开发系列讲解(项目实践篇)1.6、广告机硬件结构设计
RK3399平台开发系列讲解(项目实践篇)1.7、 360倒车影像框架
RK3399平台开发系列讲解(项目实践篇)1.8、嵌入式开发都可以理解的卷积网络(简单明了无公式)
RK3399平台开发系列讲解(项目实践篇)1.9、车机安卓框架
RK3399平台开发系列讲解(项目实践篇)1.10、如何完成软硬件的绑定,从而做到软件加密
RK3399平台开发系列讲解(项目实践篇)1.11、ISP+ARM的摄像头数据处理系统方案
RK3399平台开发系列讲解(项目实践篇)1.12、车载项目笔记 -产品总体需求层次结构
RK3399平台开发系列讲解(项目实践篇)1.13、广告机项目介绍
RK3399平台开发系列讲解(项目实践篇)1.14、车机系统介绍


五、代码管理篇

RK3399平台开发系列讲解(代码管理篇)1.1、系统代码修改规范
RK3399平台开发系列讲解(代码管理篇)1.2、gerrit服务器操作基本方法
RK3399平台开发系列讲解(代码管理篇)1.3、gerrit服务器的搭建(用于安卓代码管理)
RK3399平台开发系列讲解(代码管理篇)1.4、gerrit服务器管理员使用手册
RK3399平台开发系列讲解(代码管理篇)1.5、gerrit服务器用户使用手册
RK3399平台开发系列讲解(代码管理篇)1.6、repo服务器的搭建


六、其他篇(芯片介绍、原理介绍、UBOOT等)

RK3399平台开发系列讲解(其他篇)1.1、RV1108芯片介绍
RK3399平台开发系列讲解(其他篇)1.2、Uboot编译配置及UBOOT目录介绍
RK3399平台开发系列讲解(其他篇)1.3、Uboot启动流程分析
RK3399平台开发系列讲解(其他篇)1.4、Rockchip Recovery详解
RK3399平台开发系列讲解(其他篇)1.5、display显示屏参设置偏差后现象
RK3399平台开发系列讲解(其他篇)1.6、UBOOT 中HDMI默认分辨率的修改【UBOOT上HDMI LOGO 显示代码分析】
RK3399平台开发系列讲解(其他篇)1.7、Linphone的使用说明
RK3399平台开发系列讲解(其他篇)1.8、linux的以太网架构的相关概念
RK3399平台开发系列讲解(其他篇)1.10、LVDS(Low-Voltage Differential Signaling)的介绍
RK3399平台开发系列讲解(其他篇)1.11、CPU如何定频
RK3399平台开发系列讲解(其他篇)1.12、流媒体详解
RK3399平台开发系列讲解(其他篇)1.13、 改进显示系统
RK3399平台开发系列讲解(其他篇)1.14、LCD屏幕原理之点时钟介绍
RK3399平台开发系列讲解(其他篇)1.15、摄像头CMOS sensor了解
RK3399平台开发系列讲解(其他篇)1.16、音频的采样与量化图解
RK3399平台开发系列讲解(其他篇)1.17、tcpdump及Wireshark工具的使用说明
RK3399平台开发系列讲解(其他篇)1.18、瑞芯微 RK3288 芯片介绍
RK3399平台开发系列讲解(其他篇)1.19、Rockchip I2C控制器(内含RK各产品最高传输速率表)
RK3399平台开发系列讲解(其他篇)1.20、Rockchip 通用GPIO驱动的控制(软件方式查看管脚高低电平,调试时使用)
RK3399平台开发系列讲解(其他篇)1.21、HDMI 自动适配过程分析
RK3399平台开发系列讲解(其他篇)1.22、Camera模组介绍&电路介绍
RK3399平台开发系列讲解(其他篇)1.23、Linux 休眠唤醒流程
RK3399平台开发系列讲解(其他篇)1.24、linux 输入子系统介绍分析
RK3399平台开发系列讲解(其他篇)1.25、linux软件稳压器regulator与consumer 设备的关系
RK3399平台开发系列讲解(其他篇)1.26、Linux软件稳压器regulator的抽象类
RK3399平台开发系列讲解(其他篇)1.27、Linux内核中的PID管理
RK3399平台开发系列讲解(其他篇)1.28、Framebuffer原理及缺点
RKRK3399平台开发系列讲解(其他篇)1.29、查看显示时钟
RK3399平台开发系列讲解(其他篇)1.30、 Regmap的使用
RK3399平台开发系列讲解(其他篇)1.31、 什么是虚拟化

RK3399快速上手 | 01- 开发环境搭建(固件烧写、编译工具链安装、kernel编译) 一、编译工具链 编译工具链使用gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu。 下载地址: https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/ wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabi 8.8k 阅读·6 点赞·63 收藏 阅读详情

相关推荐

从零开始学习 RK3399 单片机开发

总结一下,学习 RK3399 单片机开发需要掌握基础的 C 语言编程知识,同时也需要了解硬件电路原理。在具备这些基础知识的前提下,我们需要选择适合自己的开发板和开发环境,并进行必要的配置。通过编写这个简单的 LED 闪烁程序,我们可以初步了解 RK3399 单片机开发的基本流程,并进一步深入学习更丰富的单片机应用。首先需要准备的是一台基于 RK3399 平台的开发板,可以选择 RK3399Pro 或者 Firefly-RK3399 等开发板。从零开始学习 RK3399 单片机开发。

qq_37934722的博客 553

RK3399平台开发系列讲解(网络篇)7.19、Linux网络协议栈详解

Linux 通过软中断机制调用网络协议栈代码,处理数据。 在 net_dev 模块初始化时,注册网络收发数据的软中断处理函数。

内核笔记 2431

RK3399平台入门到精通系列讲解(导读篇)前言

博主从事`Linux`内核和驱动开发五年多,是`Linux`内核的爱好者,在智能汽车行业上市公司从事`Linux`底层软件开发工作。 撰写博文是博主多年来一直坚持的事情,一是为了沉淀自己,二是只有不断的向前奔跑才能赶上`Linux`内核发展的步伐,故博主依靠`RK3399`此平台进行相关`Linux`内核驱动,`Android`框架的研究。

内核笔记 1万+

RK3399平台入门到精通系列讲解(导读篇)21天学习挑战介绍

每个人在突破自己技术瓶颈时都会经历一段痛苦的时光,只有我们具有坚定的信念,并努力坚持下去,相信我等你回过头来再看曾经认为难以理解的技术和知识时,你会有一种阔然开朗、融会贯通的感觉,这就是成长和进步所带来最大的成就感。...............

内核笔记 3564

RK3399平台入门到精通系列讲解(导读篇)21天挑战Linux系统开发

每个人在突破自己技术瓶颈时都会经历一段痛苦的时光,只有我们具有坚定的信念,并努力坚持下去,相信我等你回过头来再看曾经认为难以理解的技术和知识时,你会有一种阔然开朗、融会贯通的感觉,这就是成长和进步所带来最大的成就感。.........

内核笔记 2770

RK3399平台入门到精通系列讲解(导读篇)资料下载与介绍

RK3399平台入门到精通系列专栏资料下载与介绍

内核笔记 8316

RK3399平台开发系列讲解(内核入门篇)1.11、Platform总线驱动模型

总线代表着同类设备需要共同遵循的工作时序,不同的总线对于物理电平的要求是不一样的,对于每个比特的电平维持宽度也是不一样的,总线上传递的命令也会有自己的格式约束。 在Linux系统中总线可分为两种, 一种是实际存在的总线(例如I2C、SPI、USB等总线), 另一种是虚拟存在的总线(platform总线) 为什么需要虚拟的platform总线? 是因为在嵌入式系统里面SoC系统中集成的独立的外设控制器、挂接在SoC内存空间的外设等无法依附于第一种总线,所以基于这一背景,Linux发明了platform总线

内核笔记 4488

RK3399平台入门到精通系列讲解(导读篇)烧写工具使用

一、安装 RK USB 驱动 二、安装 AndroidTool 三、SD_Firmware_Tool 四、安装串口 UART_TO_USB 五、启动/升级方式 六、模式的介绍 启动模式 Normal 模式 Loader 模式 MaskRom 模式 七、工具的使用

内核笔记 2978

RK3399平台开发系列讲解(低功耗篇)11.4、RK3399待机唤醒相关问题定位

待机分为一级待机和二级待机,对应的唤醒也是分成 两级; 一级待机: 主要动作是关显示(lcd, backlight),关tp,关gsensor等;场景包括音乐播放,蓝牙传输,wifi下载,插USB接电脑等; 二级待机: 简单理解就是进入soc低功耗模式, RK3399支持 Core 断电,Logic 断电,DDR 进入Retention状态,OSC Disable (系统时钟切为 32.768k);

内核笔记 5820

RK3399平台入门到精通系列讲解:Thermal governor(温控方案)

Thermal 是内核开发者定义的一套支持根据指定 governor 控制系统温度,以防止芯片过热的框架模型。 Thermal framework 由 governor、core、cooling device、sensor driver 组成

内核笔记 2797

RK3399平台开发系列讲解(内核入门篇)1.6、图解字符驱动模块设计思路

平台 内核版本 安卓版本 RK3399 Linux4.4 Android7.1 文章目录图解字符驱动模块设计思路 图解字符驱动模块设计思路 在Linux世界,应用进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。 如上图所示,应用程序控制硬件的必要的必要因素包括应用程序、设备文件、设备驱动程序和硬件,前面三个部分在控制硬件时的具体作用和形式如下 应用程序: 应用程序是指利用系统函数...

内核笔记 4434

RK3399平台入门到精通系列讲解(导读篇)使用到的工具

RK3399平台入门到精通系列讲解(导读篇)

内核笔记 6987

RK3399平台开发系列讲解(内核入门篇)1.5、内核编译机制分析

`Linux` 内核从源码到安装使用大致可分三个阶段,配置,编译,安装。配置的过程主要由 `Kconfig` 提供的图形界面完成,也有部分工作由 `Kbuild` 完成。编译的实现机制主要是`Kbuild`系统,由`make`命令完成内核编译。内核的安装也是由`Kbuild`提供的安装脚本再由 `make` 命令执行安装。

内核笔记 4926

RK3399平台开发系列讲解(内核入门篇)1.53、platform平台设备

有两种方法可以把有关设备所需的资源(IRQ、DMA、内存区域、I/O端口、总线)和数据(要传递给驱动程序的任何自定和私有数据结构)通知内核。

内核笔记 3062

电动汽车整车控制器 UDS诊断功能开发调试优化方法

摘要:通过某电动汽车VCU开发过程中,UDS诊断功能的调试,发现一些测试中存在的问题,比如覆盖度不够、效率低下等,提出了相应的优化方法,并经过测试验证其可行性,此方法亦可推广应用至BMS、HCM等其他控制器的UDS诊断开发调试过程中。希望能给相关技术人员带来参考和帮助。

qq_43011586的博客 2109

Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)

Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 目录导航Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建前言1.安装前的准备工作2.安装交叉编译器 前言 这篇文章,主要是基于 Ubuntu19.10版本而写,写此文的初衷,是为了自己使用,因为最近正在以Tiny6410板子做实训,所以也是初学者一枚,只能保证我遇上的问题统统能够解决掉,至于一些没遇上的,欢迎各位看客给我留言,大家一起讨论,一起解决。 注:本文会持续更新 1.安装前的准备工作 环境要求 Linux系统:U

繁臻的小窝 4873

RT-Thread代码启动过程——以及 $Sub$ $main 与 $Super$ $main

我们找到系统复位的地方,可以往下单步跟踪。 ①从系统初始化开始执行,将函数地址赋给R0寄存器,跳转到R0地址执行并返回此处(BLX是带链接的跳转,即带返回的跳转)。 ②将main函数地址给R0,将函数地址赋给R0,跳转到R0地址执行,不返回(BX是跳转,不返回)。 ③跳转到了$Sub$$main。 【注:在 __CC_ARM 编译器环境下,使用了$Sub$$ 与$Super$ $ 的...

yang1111111112的博客 1万+

Synopsys 逻辑综合之 ICG

文章摘要: ICG(集成时钟门控单元)是一种用于降低时钟功耗的专用逻辑单元,通过控制时钟信号的传播实现节能。其核心原理是在寄存器前插入门控逻辑(如gclk=clk&en),但需避免直接使用AND门以防止毛刺,转而采用带锁存器的专用ICG单元。在RTL设计中,符合条件(如稳定使能信号)的if(en)结构可被综合工具(如DesignCompiler)自动识别并替换为ICG。使用时需配置时序检查(如PrimeTime分析使能路径、门控时钟延迟),并注意避免组合逻辑使能、多级门控等误区。ICG是芯片低功耗设

Serven的博客 4320

重带电粒子的能量歧离(energy straggling)

能量歧离,Bethe-Bloch

G751888629的博客 2268

Python计算时间差的方法

使用datetime模块是Python内置的方法,使用timedelta对象可以更精确地计算时间差,而使用dateutil库则提供了更为灵活和方便的操作方式。我们可以使用datetime模块中的datetime类来表示一个具体的日期和时间,并进行相应的运算。在Python中,我们经常需要计算日期和时间之间的差异,例如计算两个日期之间的天数、小时数、分钟数等。Python提供了多种方法来计算时间差,下面我们将介绍其中的几种常用方法,并附上相应的源代码。在上面的代码中,我们使用了dateutil库中的。

学习使你进步。 2066

Allegro如何设置走线自动删除重复走线操作指导

Allegro如何设置走线是自动删除重复走线操作指导在PCB布线的时候,点到点需要重复走一段线的时候,希望原来的线段自动被删除,Allegro设计的时候支持这个操作如下图,重复走中间的线段的时候,希望下方的走线自动删除具体操作如下This section is describe what the function allegro have ,helpfully could let user know more about allegroAllegro Design and Analysis includes

weixin_54787054的博客 4473

基于 YOLOv26 的车辆违规停车检测系统:实时监控

本文提出了一种基于YOLOv26的车辆违规停车实时检测系统。系统采用多模块架构,包括视频预处理、YOLOv26目标检测、DeepSORT目标跟踪、停车区域定义、行为分析和违规判定等功能模块。关键技术包括使用YOLOv26s模型进行车辆检测,结合DeepSORT算法实现车辆跟踪,支持多种停车区域定义方式(多边形、矩形、限时区域等)。系统通过边缘计算平台部署,实现了对道路边、禁止停车区等场景的实时监控,能够准确识别长时间停车、禁止区域停车等违规行为,并触发告警机制。实验结果表明,该系统在车辆检测准确率和违规判定

一键难忘的博客 739

CMK计算表格.xls

CMK计算表格.xls

全国区县高程和坡度数据

01、数据介绍而是基于NASA ASTER数据在GIS软件中计算生成的。数据整理全国区县高程、坡度等数据,结合全国2025地市级行政区划数据,制作了全国县级高程和坡度参数。数据名称:全国区县高程和坡度数据数据来源:NASA ASTER更新时间:2025年4月02、数据指标省代码、省、市代码、市、县代码、县、坡度Area_平方米、最小坡度、最大坡度、坡度极差、平均坡度坡度标准差、高程Area_平方米、最小高程、最大高程、高程极差、平均高程、高程标准差

材料腐蚀方面的资料.zip

材料腐蚀方面的资料

YOLO目标检测-人形+棒球棒检测数据集2500多张(含yolo格式txt标签,适用于棍棒检测).zip

【数据集说明】YOLO目标检测-人形+棒球棒检测数据集(含yolo格式txt标签,适用于棍棒检测).zip标注工具:labelimg标签格式:yolo格式(独立txt标签文件),多种yolo算法可直接使用标注类别:行人、棒球棒该数据集适用于 棍棒检测、行人检测等图像数据集背景丰富多样,各个视角、角度、远近距离,都包含,YOLO系列算法训练该数据拟合很好。该数据集适用于高校科研、毕业设计、课程设计、实际项目等,请放心下载使用。若需其他格式标签,比如json、voc等格式,请私信博主。请放心下载使用!!!YOLO目标检测-人形+棒球棒检测数据集(含yolo格式txt标签,适用于棍棒检测).zip标注工具:labelimg标签格式:yolo格式(独立txt标签文件),多种yolo算法可直接使用标注类别:行人、棒球棒该数据集适用于 棍棒检测、行人检测等图像数据集背景丰富多样,各个视角、角度、远近距离,都包含,YOLO系列算法训练该数据拟合很好。该数据集适用于高校科研、毕业设计、课程设计、实际项目等,请放心下载使用。若需其他格式标签,比如json、voc等格式,请私信

上一篇: RK3568平台开发系列讲解(环境篇)瑞芯微RK3568亮点介绍
下一篇: RK3568平台开发系列讲解(LCD篇)配置沉浸式导航栏&状态栏
内核笔记
内核笔记 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄11年 1万+粉丝 1586原创
评论 206
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

内核笔记

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值