RK3188/RK3288学习记录!
初接触RK新平台,记录一下,省去后面反复查找的时间:
1、首先知道文档和工具目录:RKDocs RKTools
2、根据文档熟悉编译命令:基本各大平台都是一样,但是和mtk稍有不一样,mtk完全的编译命令,make -j8包含所有的模块;而rk的make -j8 只是android模块,如果修改驱动需要进入到kernel目录下编译。
3、熟悉各工具的使用,这一步有朋友做过的话,稍微问一下,问题不大,不需要浪费太多的时间折腾。
4、重点,代码平台的熟悉,由于上层通用,主要说下驱动:
A、找到平台启动入口目录:kernel\arch\arm\mach-rk3188 也有很大一部分是公用rk30的 kernel\arch\arm\mach-rk30
B、入口文件:board-rk3188-sdk.c 从下往上看:
<span style="font-size:14px;">MACHINE_START(RK30, "RK30board").boot_params = PLAT_PHYS_OFFSET + 0x800,.fixup = rk30_fixup,.reserve = &rk30_reserve,.map_io = rk30_map_io,.init_irq = rk30_init_irq,.timer = &rk30_timer,.init_machine = machine_rk30_board_init,
MACHINE_END</span>
fixup,reserve, map_io,irq,timer等初级阶段暂时可以不用了解,个人感觉二次开发很少需要改动到这些的东西,都是地址分配,映射,中断分配等。直接从machine_rk30_board_init进入rk的世界。
================================================================================================================================================================
问题点:调试gsensor、陀螺仪。
和很多其他平台一样,rk为了减少自己也为了减少客户的工作量,把sensor增加了一个类似中间层的驱动,主要文件sensor-dev.c sensor-i2c.c,其他依葫芦画瓢。有几点值得注意的地方:
1、很多人认为gsensor、陀螺仪必须使用polling的方式,其实在新的内核上,request_threaded_irq线程中断很好用,并且节省资源。rk采用的这种方式,但是中断方式,感觉老有中断不出来的情况。调试又无从下手,比较郁闷。
2、线程中断函数中如果是电平中断必须添加IRQF_ONESHOT,原理自己百度。
3、gsensor和陀螺仪有不同的地方,在默认的hal或者上层,有自动打开gsensor的方式,所以驱动调试通,马上就有数据出来。但是陀螺仪不同,上层没有打开的地方,必须自己打开,通过ioctl接口操作,来让数据输出。(其实道理很简单,但是卡了我小半天)。
========================================================================================================================================================================================
RK3288 查看打log的串口:
config中:#define CONFIG_RK_DEBUG_UART 2
RK3188/RK3288学习记录!相关推荐
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...
- 【Cmake】Cmake学习记录
Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...
- ASP.NETCore学习记录(一)
ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.N ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX
Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...
- java之字符串学习记录
java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...
- Redis的学习记录
Redis的学习记录 1.先导了解 1.1 NOSQL概述 1.1.1 为什么要用NoSql? 1.1.2 NoSql了解 1.1.3 NoSql特点 1.1.4 NoSQL的四大分类 2. Redi ...
最新文章
- 4.7 mini趴 走进猎豹
- R语言使用pwr包的pwr.f2.test函数对线性回归模型进行效用分析(power analysis)、在已知效应量(effect size)、显著性水平、效用值的情况下计算需要的样本量
- 向高手进阶,从 0 开始手写实现一个 RPC 框架!
- MongoDB空间分配
- 语言特性与API设计
- 【机器视觉】 dev_set_check算子
- 在Linux系统下, 可以用一个命令很容易批量删除.svn的文件夹
- PHP 函数 - 返回值
- 项目:NMEA2000的数据格式解析
- html5如何新建定义站点,HTML5技术教程:创建新作品_HTML5教程_创建作品_添加元素_课课家...
- 先搞定SLAM,再谈如何抓住下一代互联网产业爆发点!
- Spring与策略模式
- 菁搜FTP搜索引擎 photo2
- python 经典图书排行榜_计算机优秀书籍每周销售排行榜
- 计算机毕业设计-基于ssm的手机商城系统(文档+源码)
- 多少卡路里,我应该吃是错误的
- C语言 会员管理系统
- ASO优化:应用市场应该怎么做马甲包?
- vi linux insert切换该行第一个字符,Linux之Vi命令讲解
- 飞机订票管理系统C语言课程设计