初接触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学习记录!相关推荐

  1. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  2. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  3. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  4. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

  5. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  6. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  7. add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX

    Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...

  8. java之字符串学习记录

    java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...

  9. Redis的学习记录

    Redis的学习记录 1.先导了解 1.1 NOSQL概述 1.1.1 为什么要用NoSql? 1.1.2 NoSql了解 1.1.3 NoSql特点 1.1.4 NoSQL的四大分类 2. Redi ...

最新文章

  1. 4.7 mini趴 走进猎豹
  2. R语言使用pwr包的pwr.f2.test函数对线性回归模型进行效用分析(power analysis)、在已知效应量(effect size)、显著性水平、效用值的情况下计算需要的样本量
  3. 向高手进阶,从 0 开始手写实现一个 RPC 框架!
  4. MongoDB空间分配
  5. 语言特性与API设计
  6. 【机器视觉】 dev_set_check算子
  7. 在Linux系统下, 可以用一个命令很容易批量删除.svn的文件夹
  8. PHP 函数 - 返回值
  9. 项目:NMEA2000的数据格式解析
  10. html5如何新建定义站点,HTML5技术教程:创建新作品_HTML5教程_创建作品_添加元素_课课家...
  11. 先搞定SLAM,再谈如何抓住下一代互联网产业爆发点!
  12. Spring与策略模式
  13. 菁搜FTP搜索引擎 photo2
  14. python 经典图书排行榜_计算机优秀书籍每周销售排行榜
  15. 计算机毕业设计-基于ssm的手机商城系统(文档+源码)
  16. 多少卡路里,我应该吃是错误的
  17. C语言 会员管理系统
  18. ASO优化:应用市场应该怎么做马甲包?
  19. vi linux insert切换该行第一个字符,Linux之Vi命令讲解
  20. 飞机订票管理系统C语言课程设计

热门文章

  1. PyAutoGUI 简介
  2. PyAutoGUI帮助文档
  3. 图形处理 柔化和锐化处理
  4. BetaFlight之穿越机F4飞控设置
  5. IOS真机调试包 iOS15.0
  6. iZotope Ozone 8 Advanced for Mac(臭氧8 mac版)
  7. 香港城市人文旅拍Lightroom预设APP滤镜与视频调色LUT预设
  8. 小爱音箱怎么装app_小爱音箱
  9. word 常规格式排版
  10. Python3入门(一)