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



























  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值