完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
初接触RK新平台,记录一下,省去后面反复查找的时间:
1、首先知道文档和工具目录:RKDocs RKTools 2、根据文档熟悉编译命令:基本各大平台都是一样,但是和mtk稍有不一样,mtk完全的编译命令,make -j8包含所有的模块;而rk的make -j8 只是android模块,如果修改驱动需要进入到kernel目录下编译。 3、熟悉各工具的使用,这一步有朋友做过的话,稍微问一下,问题不大,不需要浪费太多的时间折腾。 4、重点,代码平台的熟悉,由于上层通用,主要说下驱动: A、找到平台启动入口目录:kernelarcharmmach-rk3188 也有很大一部分是公用rk30的 kernelarcharmmach-rk30 B、入口文件:board-rk3188-sdk.c 从下往上看: 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 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 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
1070 浏览 0 评论
1248 浏览 1 评论
981 浏览 1 评论
2263 浏览 1 评论
3586 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 11:30 , Processed in 0.877683 second(s), Total 41, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号