瑞芯微Rockchip开发者社区
直播中

郝埃连

7年用户 1395经验值
私信 关注
[问答]

初试RK3188/RK3288的学习记录

怎样去使用RK3188/RK3288呢?有哪些注意事项?

回帖(1)

杨芳

2022-2-18 10:13:32
初接触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
举报

更多回帖

发帖
×
20
完善资料,
赚取积分