rk3399

linux 设备树【转】

萝らか妹 提交于 2020-03-08 07:41:41
转自: http://blog.csdn.net/chenqianleo/article/details/77779439 [-] linux 设备树 为什么要使用设备树Device Tree 设备树的的组成和结构 1设备树的组成 11 DTS和DTSI 12 DTC 13 DTB 14 绑定bingding 15 Bootloader 使用dtb 2设备树框架 设备树语法 下面这个是rk3399-fpgadts 1根节点兼容性 2节点名 3引用 KEY 1compatible 2address 3interrupts 4gpio DTB的加载过程 API调用 linux 设备树 参考地址 http://blog.csdn.net/green1900/article/details/45646095 http://www.cnblogs.com/xiaojiang1025/p/6131381.html http://blog.csdn.net/21cnbao/article/details/8457546 1.为什么要使用设备树(Device Tree)? 在以前的内核源码中,存在大量对板级细节信息描述的代码,这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备、resource、i2c_board

[RK3399][Android7.1] 传感器 HAL 层的设计与实现

江枫思渺然 提交于 2020-01-30 15:14:24
平台 内核版本 安卓版本 RK3399 Linux4.4 Android7.1 文章目录 传感器 HAL 层的设计与实现 传感器 HAL 层的设计与实现 Linux 驱动一般由访问硬件代码和业务逻辑代码两部分组成。 Linux 内核提供了 标准的读写硬件的方法,只需要调用 Linux 提供的标准函数即可。 而 Linux 驱动的业务逻辑对厂商或个人来说是保密的。例如,缓冲区的设置等。 Google 在 Android 体系中添加一个 HAL 层的目的是为了满足不想开源的个人或者厂商的要求,该层位于系统库层和 Linux 内核层之间。对于想开源的 Linux 驱动个人或者厂商,既可 以将驱动业务逻辑放在 HAL 层,也可以放在驱动程序中。而对于不想公开 Linux 驱动代码的个人或者厂商, Linux 驱动只是一个传递数据给相关设备的角色。即 Linux 驱动中只有操作设备寄存器的代码,而没有任何的业务代码。 HAL 层统一了硬件的 调用接口, HAL 层的编写需要遵循一定的规范。 HA L 层的框架如下图所示。 Android 应用程序通过 NDK 访问 HAL 的系统库,或者直接访问 HAL 中程序库,最后通过程序库访问驱动程序为其提供的设备节点实现,设备节点为程序库提供了操 作接口。 本 chat 将设计并实现重力传感器驱动硬件抽象层模块部分。重力传感器的业务逻

嵌入式Linux之RK3399:内核buildroot的emmc-img编译原理(一)

前提是你 提交于 2020-01-25 09:13:36
一、脚本分析 在sdk的根目录下有自动化脚本build.sh,build.sh里面定义了emmc-img的功能函数。 function build_emmcimg ( ) { local IMG = local ROOTFS = #如果OSNAME未定义,则定义为buildroot if [ -z ${OS_NAME} ] ; then OS_NAME = buildroot fi if [ x ${OS_NAME} = xbuildroot ] ; then IMG = rk3399-eflasher-buildroot-linux-4.4-arm64- $( date +%Y%m%d ) .img ROOTFS = ${TOP_DIR} /buildroot/output/rockchip_rk3399/images/rootfs.ext2 elif [ x ${OS_NAME} = xdebian ] ; then IMG = rk3399-eflasher-debian9-4.4-armhf- $( date +%Y%m%d ) .img ROOTFS = ${TOP_DIR} /rootfs/binary else echo "Unknow OS: ${OS_NAME} " exit 1 fi prepare_image_for_friendlyelec_eflasher

RK3399—用户态操作EEPROM

佐手、 提交于 2020-01-20 18:37:48
  在此之前,在其他平台上应用i2c总线用户接口(ioctrl)进行访问EEPROM,具体可以参考“ 嵌入式Linux下 24系列EEPROM/FRAM驱动 ”文章。现将其移植到RK3399平台运行。 编译系统:Ubuntu16.04 ARM硬件:firefly RK3399 ARM系统:firefly Ubuntu16.04(SDK) 连接i2c:i2c4 EEPROM:AT24C02 电路原理图: 查看器件   首先使用“i2ctools”工具查看硬件连接是否正常。   i2c总线已经正确识别到到AT24C02,根据电路原理图地址线A0—A2接地,所以0x50是AT24C02的器件地址。0x51—0x57是24系列高容量型号芯片的地址(24c04—24c16)。 编译源码 clone源码 https://github.com/Prry/linux-drivers/tree/master/i2c-24cxx 文件目录结构: 24cxx目录为EEPROM/FRAM用户态访问抽象公共接口 at24cxx为EEPROM读写测试程序 fm24cxx为FRAM读写测试程序 修改“at24cxx.c”源码   本次硬件使用的是AT系列EEPROM,选择“at24cxx”目录源码。 /* 修改EEPROM数据结构描述 */ /** * @brief device init */ const

[RK3399][Android8.1] 调试记录 ---HDMI 无法输出

时光怂恿深爱的人放手 提交于 2020-01-13 16:57:11
Platform: RK3399 OS: Android 8.1 现象: RK3399系统自带HDMI无法输出(之前使用正常) 1.使用命令行强制HDMI输出,可以用 cat /d/dri/0/summary看到输出1080P60图像信息 2.命令行打印错误,HDMI phy PLL error 解决方法: 1.增加两组电源给HDMI单独供电,排除电源问题,后续继续排查 来源: CSDN 作者: oliverJ 链接: https://blog.csdn.net/oliverJ/article/details/103957723

学习笔记3-RK3399安装caffe

不想你离开。 提交于 2020-01-11 01:10:31
本节将详细介绍在RK3399的Ubuntu16.04系统中安装caffe   本人使用的是普通的RK3399开发板,安装的是Ubuntu 16.04系统,如果使用的是RK3399 PRO且安装Ubuntu 18.04可以直接 sudo apt install caffe-cpu 1.安装caffe依赖包 sudo apt-get install libprotobuf-dev sudo apt-get install libleveldb-dev sudo apt-get install libsnappy-dev sudo apt-get install libopencv-dev sudo apt-get install libhdf5-serial-dev sudo apt-get install protobuf-compiler sudo apt-get install libgflags-dev sudo apt-get install libgoogle-glog-dev sudo apt-get install liblmdb-dev sudo apt-get install libatlas-base-dev apt-get install --no-install-recommends libboost-all-dev 2.安装git sudo apt-get

RK3399—设备树

夙愿已清 提交于 2020-01-07 10:05:11
1. 什么是设备树 1.1 背景   嵌入式底层,一般是用汇编或者C语言进行编程,如内存访问、寄存器访问、外设控制等。在linux 3.x之前,linux内核与硬件抽象层相关采用的是C语言的方式描述板级设备信息,一般位于“kernel/arch/arm/mach-xxx”下,这样的方式有个严重弊端就是板级源码与内核耦合在一起,同一个CPU更改PCB或者调整底层设备时,就得修改板级C源码,然后重新编译内核, 导致内核存在大量与内核无关的冗余代码。 因此,从linux 3.x后引入独立于内核的设备树(Device Tree),来描述板级信息,存放于“/kernel/arch/arm(arm64)/boot/dts”目录下。 1.2 设备树   设备树,顾名思义,分为设备和树,以树的形式描述设备,所有设备都是“挂”在树上,,设备树不限于传统板级描述。设备树以ASCII字符的形式描述板级信息,类似XML、JSON的易读性格式,方便编写和阅读。 处理信息,CPU核数和类型、内存地址和大小、内存总线 连接板级信息,GPIO、中断 连接外设,固定设备、热插拔设备 1.3 设备树组成   设备树包括DTC(device tree compiler)编译器,DTS(device tree source)源文件和DTB(device tree blob)目标文件。DTS与C语言一样

[Android7.1][RK3399] 移远EC20添加4G通话功能-ql-ril.conf

不问归期 提交于 2020-01-02 21:30:27
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.126 文章目录 需求 调试步骤 调试接口 需求 热插拔 默认打开 UVC 功能 调试步骤 在移远提供的 ql-ril.conf 中添加 添加 Sim_Hot_Plugging=2 添加 At_Cmds_For_Customer_Initialize=AT+QCFG="usbcfg",0x2C7C,0x0125,1,1,1,1,1,0,1;AT+QPCMV=1,2 如果不需要打开 At_Cmds_For_Customer_Initialize=AT+QCFG="usbcfg",0x2C7C,0x0125,1,1,1,1,1,0,0;AT+QPCMV=0 ql-ril.conf 中的内容会在开机的时候由移远提供的 ril 库调用.写入到 EC20 的 NV 中. 即,如果没有其他的 AT 指令将其覆盖,掉电后也不会丢失. 调试接口 ql-ril.conf #This file is in a state of unavailability. #In most cases, there is no need to open any option. #In special cases, please use it under the guidance of FAE. #LTE

rk3399开发adb网络调试

末鹿安然 提交于 2019-12-21 00:15:40
1.从朋友那拿了一个rk3399开发版,确忘了要官网使用说明。。。大傻子,adb devices 找不到设备,adb connect ip也拒绝连接? 安卓7.1也启动了开发模式,USB调试开关。还是不行,网上找了一大堆资料。最终还是官网给力。哎,详见官网adb说明。 http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/adb_use.html 设置完Root权限,打开adb后,直接adb connect ip adb shell,ok 来源: CSDN 作者: Jenkins2012 链接: https://blog.csdn.net/Binary2014/article/details/103629840

RK3399之ap6212移植

你。 提交于 2019-12-11 00:46:05
ap6212模块采用bcm43438作为wifi、bt主控芯片;在移植该模组的时候,需要有fw_bcm43438a1.bin文件 首先根据原理图配置dts,可以参考rockchip提供的 《Rockchip Linux WIFI BT 开发指南 V6.0》; 然后烧录编译出来的rootfs, boot, userdata文件; 如果配置没错,但是没有wlan0设备,并且使用命令 wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf 提示如下错误: 找不到wlan0设备,很有可能是 userdata 文件没烧录 来源: https://www.cnblogs.com/weishengzhong/p/12017430.html