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

杨海清

7年用户 1728经验值
私信 关注
[经验]

浅析RK3128 Android系统内核驱动的相关知识

  一、rk3128 android4.4 平台

  主要用来做电视盒

  二、内核目录结构

  ├── android android基本配置参数

  ├── arch 各个体系下内核引导代码

  ├── block 块设备驱动代码

  ├── COPYING

  ├── CREDITS

  ├── crypto 加密算法

  ├── Documentation

  ├── drivers 驱动代码

  ├── firmware 内核使用,需要文件系统支持

  ├── fs 文件系统

  ├── include 头文件

  ├── init 内核通用的引导代码

  ├── ipc ipc 函数

  ├── Kbuild

  ├── Kconfig

  ├── kernel 内核通用函数接口

  ├── kernel.img

  ├── lib 内核使用的lib库函数接口

  ├── linaro

  ├── logo.bmp

  ├── logo_kernel.bmp

  ├── MAINTAINERS

  ├── Makefile

  ├── mkkrnlimg

  ├── mm 内存管理代码

  ├── modules.order

  ├── Module.symvers

  ├── net 通用的网络协议层代码

  ├── pack-kernel.sh

  ├── pie

  ├── README

  ├── REPORTING-BUGS

  ├── resource.img

  ├── resource_tool

  ├── samples

  ├── scripts

  ├── security linux安全防护代码

  ├── sound 声卡驱动

  ├── System.map

  ├── tools 工具

  ├── usr

  ├── virt

  ├── vmlinux

  └── vmlinux.o

  三、重点关注如下

  1、配置文件

  关于 dts 文件描述 文件描述

  瑞芯微平台上所有的 gpio 资源都是描述在 dts 文件当中

  dts 文件一般存放在 kernel 目录下 arch/arm/boot/dts/ 里面

  全志平台的配置文件 一般为 sys_config.fex

  存放路径 lichee/brandy/pack/chips/sun8iw1p1/configs/android/

  配置文件主要功能是用来统一管理 cpu 平台资源,方便查看和修改

  2、修改配置文件

  新增 gpio 管脚控制,描述如下,使用了 GPIO0_B0/GPIO0_D2/GPIO3_C5

  work_led{

  compatible = “WorkLed”;

  RED = 《&gpio0 GPIO_B0 GPIO_ACTIVE_LOW》;

  GREEN = 《&gpio0 GPIO_D2 GPIO_ACTIVE_LOW》;

  BULE = 《&gpio3 GPIO_C5 GPIO_ACTIVE_LOW》;

  status = “okay”;

  };

  compatible 为驱动当中平台总线匹配的名字 “WorkLed”

  RED = 《&gpio0 GPIO_B0 GPIO_ACTIVE_LOW》;

  描述的管脚名称为 RED, 管脚 IO 为: gpio 0 组,B0 这个管脚

  status : 资源的状态状态,okay :表示使能 disable: 表示关闭

  驱动探测函数当中匹配的名字为:WorkLed

  static const struct of_device_id of_workled_match[] = {

  { .compatible = “WorkLed”, },

  {},

  };

  usb 配置描述:

  usb0: usb@10180000 {

  /0 - Normal, 1 - Force Host, 2 - Force Device/

  /change yue 1---》0 for adb shell/

  // rockchip,usb-mode = 《0》;

  0:表示adb 调试模式 1 : 主机模式,可以外挂u盘、鼠标等

  3、驱动相关

  1、drivers/rtc/rtc-rk818.c 电源管理芯片驱动,主要实现电源定时开关机

  2、drivers/input/keyboard/rk_keys.c 瑞芯微标准的按键驱动代码

  3、drivers/leds/leds-gpio.c 瑞芯微标准的工作指示灯驱动代码

  4、drivers/input/touchscreen/rk29_i2c_goodix.c 触摸代码
(可参看里面的代码,编写自己的I2C驱动)

  5、sound/soc/codecs/snd-soc-rk312x.c 平台上用的是CPU内置的声卡

  6、sound/tty/serial/rk_serial.c 串口驱动

原作者:一缕

更多回帖

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