
子类__Other
文章平均质量分 60
KrisFei
工作记录.
展开
-
[RK3399][Android7.1] 调试笔记 --- CPU_B_SLEEP引脚改动引起系统无法开机
Platform: RK3399OS: Android 7.1Kernel: v4.4.83朋友按照参考设计和firefly的板子做的硬件,无法开机。一开始只能进入maskrom,能下载,但是串口完全没有log。测量电压如下:PMUIO2_VDDPST(pin N23)=1.5V, PMUIO2_VDD( pin P23)=3.0VPMUIO4_VDDPST(pin AC8)=...原创 2019-07-25 14:32:51 · 2285 阅读 · 3 评论 -
[RK3399][Android7.1] 获取gpio函数devm_gpiod_get_optional()
latform: RK3399 OS: Android 7.1 Board: Firefly-RK3399调用流程: 在看显示模块的代码时看到一个函数devm_gpiod_get_optional(), 之前没接触过,它的调用如下: devm_gpiod_get_optional -> devm_gpiod_get_index_optional -> //index...原创 2017-12-29 16:31:38 · 12734 阅读 · 7 评论 -
[RK3399][Android7.1] 系统boot code 的boot procedure
OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55系统可以从eMMC, SD, Flash开机, bootRom中存有boot code, 加载流程如下:参考:Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf...原创 2018-01-22 13:18:12 · 1328 阅读 · 2 评论 -
[RK3399][Android7.1] 调试笔记 --- 系统默认时钟配置
OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55分两个模块,一个是cpu,还有一个是pmu模块,这里只举例cpu,cpu又分在两个文件中定义。 rk3399.dtsi: cru: clock-controller@ff760000 { compatible = "rockchip,rk3399-c...原创 2018-01-24 17:09:36 · 5649 阅读 · 2 评论 -
[RK3399][Android7.1] 调试笔记 --- clock的provider和consumer
Platform: rk3399 OS: Android 7.1 Kernel: v4.4.83kernel将clock分为两部分,一个是clock的提供者,叫clock provider;另一个是clock的使用者,叫clock consumer.Clock providers#clock-cells: 表示clock specifier。 为0表示provider...原创 2018-01-30 17:01:15 · 1080 阅读 · 6 评论 -
[RK3399][Android7.1] TSADC驱动流程小结(With thermal core)
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 Board: Firefly-RK3399背景: 和RK3288一样,RK3399上有两路TSADC通道分别用于监测CPU和GPU的温度。 不同的是RK3399结合kernel thermal core框架来管控,而RK3288直接是写了一个独立驱动控制硬件。 RK3288平台可...原创 2018-03-30 17:23:05 · 4898 阅读 · 0 评论 -
[RK3288][Android6.0] 调试笔记 --- LP55231驱动验证
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92LP55231和LP5523两颗IC是兼容的。 LP55231是TI公司发布的,LP5523是原来的Nation公司发布的.对应的驱动是leds-lp5523.c,但是3.10.92内核对应驱动并不兼容dts,没有给出解析dts中platform data的接口。 因此两种方法可以解...原创 2018-04-09 13:34:40 · 715 阅读 · 0 评论 -
[RK3288][Android6.0] Documentation/leds/leds-lp55xx.txt
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92LP5521/LP5523/LP55231 Common DriverAuthors: Milo(Woogyom) Kim milo.kim@ti.comDescriptionLP5521, LP5523/55231 and LP5562 have common featur...翻译 2018-04-09 10:10:53 · 680 阅读 · 0 评论 -
[RK3288][Android6.0] Documentation/leds/leds-lp5523.txt
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92Kernel driver for lp5523National Semiconductor LP5523 led driver chipDatasheet: http://www.national.com/pf/LP/LP5523.htmlAuthors: Mathias...翻译 2018-04-09 08:52:00 · 437 阅读 · 0 评论 -
[RK3288][Android6.0] 图形化下载工具rkflashkit
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92rockchip在ubuntu下提供了一个图形化的烧写工具rkflashkit, 它也可以用来读取分区信息,备份等操作。github: https://github.com/linuxerwang/rkflashkit安装: sudo apt-get install build-essentia原创 2017-11-23 10:47:07 · 1772 阅读 · 0 评论 -
[RK3288][Android6.0] 调试笔记 --- 打印当前reboot或shutdown进程信息
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92背景: 遇到一台机器黑屏,无法连接adb和uart,但是工作指示灯还亮着 Log: Logcat并未发现异常,Kernel log如下:<4>[ 1294.653184] ^^^^^^^^^^^^^^^^^Device Mode<4>[ 1294.6...原创 2018-04-20 16:31:11 · 1156 阅读 · 0 评论 -
[RK3399][Android7.1] 移植笔记 --- 伪电池驱动添加
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83原因:由于电池是外接到其他平台,rk3399在拿到电量信息之后需要更新到系统中, 因此写了个伪电池驱动,来适配此需求。改动:DTS:diff --git a/arch/arm64/boot/dts/rockchip/rk3399-eco.dts b/arch/arm64...原创 2018-07-10 10:28:19 · 2607 阅读 · 14 评论 -
[RK3399][Android7.1] 移植笔记 --- 网卡RTL8211配置添加
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83由于在 RK 系列的 SoC 中内置了以太网 MAC 控制器,所以只需要搭配一颗以太网 PHY 芯片, 即可实现以太网卡功能。 按照规范,即使是不同厂家的 PHY,仍然有一部分寄存器的定义是通用的, 只要配置了这些通用的寄存器,基本上 PHY 就可以正常工作。 因此,在 Linux 驱动...原创 2018-07-10 11:26:53 · 17444 阅读 · 17 评论 -
[RK3399][Android7.1] 调试笔记 --- 调整eMMC时钟速率
Platform: RK3399OS: Android 7.1Kernel: v4.4.83由于板子可能不稳定,需要降低eMMC速率验证测试。查看当前速率降低速率到150MHzdiff --git a/arch/arm64/boot/dts/rockchip/rk3399-vop-clk-set.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-v...原创 2019-07-23 16:42:08 · 4770 阅读 · 0 评论 -
[RK3399][Android7.1] 调试笔记 --- add_tid_to_cgroup failed to write 'xxx' (Permission denied)
Platform: RK3399OS: Android 7.1Kernel: v4.4.83现象:使用系统的app如音乐,点击的时候有如下error:01-01 08:12:10.696 779 802 I ActivityManager: Start proc 2696:com.android.musicfx/u0a9 for broadcast com.android.mus...原创 2019-04-11 10:30:22 · 3604 阅读 · 6 评论 -
[RK3399][Android7.1] 调试笔记 --- CPU的serial number读取
Platform: RK3399OS: Android 7.1Kernel: v4.4.83描述:系统除了device id, WiFi MAC,Andoid ID这些值以外,cpu的serial也是唯一的,因此也可以用它来做授权判断等应用。读取:rk3399_mid:/ $ cat /proc/cpuinfo......processor : 5BogoMIPS : 48.0...原创 2019-01-22 17:44:48 · 5348 阅读 · 7 评论 -
[RK3288][Android6.0] RK3288和RK3288-W版本说明
Platform: RK3288OS: Android 6.0Kernel: 3.10.92RK3288不同版本:RK3288-W丝印标记:RK3288-W功能更新:RK3288-W软件兼容方案:Android6.0不提供补丁包,直接从代码服务器更新,更新到:rk3288_android6.0_v1.03_170905.xml之前sdk默认使用的是rk3288_mars...原创 2019-01-24 16:09:46 · 8234 阅读 · 0 评论 -
[RK3288][Android7.1] 调试笔记 --- LAN MAC地址无法写入成功
Platform: RK3288OS: Android 7.1Kernel: v4.4.83现象:从android 6.0升级到7.1之后,使用UpgradeDllTool烧写LAN MAC重启后使用ifconfig命令查看LAN address不会发生变化。原因:6.0到7.1的LAN驱动发生了变化! 6.0驱动读取MAC address流程:stmmac_check_et...原创 2018-11-30 20:07:18 · 5374 阅读 · 4 评论 -
[RK3399][Android7.1] 调试笔记 --- 查看开机上一次kernel log
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83rk3288平台,rk自己实现了一套机制获取上一次的kernel log. rk3399平台,使用了内核框架中的ramoops机制。查看方法:#cat /sys/fs/pstore/console-ramoops-0要开启此功能,需要做以下几点配置(rk3399默认都开...原创 2018-07-26 11:08:11 · 4386 阅读 · 11 评论 -
[RK3399][Android7.1] 系统重启调用过程(PSCI)
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83系统重启调用和rk3288基本类似,只是rk3399平台对应的arm_pm_restart不同了。rk3288的可参考 [RK3288][Android6.0] 系统重启调用过程小结调用流程:KEYWORD(powerctl, COMMAND, 1, do_powerctl)...原创 2018-07-25 17:41:54 · 2975 阅读 · 5 评论 -
[RK3288][Android6.0] 系统重启后保存上一次kernel log机制
阅读数:67 编辑 Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92背景:最近遇到如下现象:自动随机重启板子连接adb和uart无响应这两个问题都需要抓取上一次的kernel log来查找问题。虽然我有在系统上做了重启后log的保存机制,但是由于是在用户空间使用脚本做的处理, 如果是kernel crash此类i...原创 2018-05-16 19:22:07 · 4136 阅读 · 0 评论 -
[RK3399][Android7.1] 系统reboot mode机制小结
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83背景:到kernel 4.4上面,发现内核把重启参数通用驱动也实现了。 rk3288 android6.0 kernel3.10上rk是自己实现的。文档说明:针对通用reboot mode驱动,内核有文档解释:Generic reboot mode core m...原创 2018-07-25 20:45:08 · 3829 阅读 · 0 评论 -
[RK3288][Android6.0] Mali GPU基本知识
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92Mali GPU的前身是Falanx,是挪威一家公司, 后来被ARM收购. 目前除了做GPU以外,Mali还做Camera, Video Processor, Display Processor.收购后的第一款产品是Mali 200, 后面是Mali 400系列, 属于Utgard架构. 后面原创 2017-09-21 14:08:22 · 5569 阅读 · 3 评论 -
[RK3288][Android6.0] 通用访问系统寄存器
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92由于系统寄存器映射到内存的固定地址,如下:比如我现在要访问TSADC想看看ADC的值是多少,dts中有tsadc address定义0xff280000表示起始地址,map表中也能看到。 0x100表示寄存器总共length.另外每个寄存器size是4, 那么就可以利用工具io来读取寄存器的值#原创 2017-09-12 17:45:58 · 2362 阅读 · 4 评论 -
[RK3288][Android6.0] 调试笔记 --- AndroidTool两种低格方式
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92低格实现的功能是擦除固件所在分区的数据(parameter 分区及其后的所有分区)。第一种方式选择工具的低格,然后用分散文件烧写,用的分区表是AndroidTool中的parameter.txt 第二种方式是直接download update.img, 里面包含分区表, 下载之前会先默认低格.原创 2017-09-19 11:31:03 · 3208 阅读 · 0 评论 -
[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED
Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示.Recovery中升级完成后控制GPIO输出高电平点亮LED.系统自带GPIO控制驱动:内核已经自带了通用GPIO驱动,可以直接在用户空间操作.路径: /sys/class/gpioroot@r原创 2017-04-07 15:04:03 · 14516 阅读 · 10 评论 -
[RK3288][Android6.0] 调试笔记 --- user版本固件升级无法开机问题
Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92user版sd固件升级启动之后开机出现如下error log:[ 3.036440] rockchip_i2c ff150000.i2c: i2c is not in idle(state = 3)[ 3.036451] ov5640_front_3(rk_cam原创 2017-04-14 14:41:42 · 5749 阅读 · 9 评论 -
[RK3288][Android6.0] 调试笔记 --- 系统识别不同硬件版本方法
Platform: RockchipOS: Android 6.0Kernel: 3.10.92需求:硬件版本不一样,通过几个gpio的高低电平来表示不同版本,u-boot/kernel/hal/framework/app层都需要用到,那么可以使用系统自身的参数传递机制以及property API来实现.以一个gpio为例.改动:u-bootdiff原创 2017-04-18 11:36:00 · 1838 阅读 · 2 评论 -
[RK3288][Android6.0] AT24C02驱动分析及功能增加小结
Platform: RockchipOS: Android 6.0Kernel: 3.10.92Spec:网上很多,如https://wenku.baidu.com/view/0020131fff00bed5b8f31d05.html驱动:文件: kernel/drivers/misc/eeprom/at24.c支持at24cxx所有系列,当然也支持at原创 2017-05-10 13:11:24 · 2482 阅读 · 0 评论 -
[RK3288][Android6.0] DeviceTree中的status属性使用规则
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92有看到网友在讨论device tree中的status到底该如何设置,默认状态是什么,知识点如下。默认情况下不设置status属性的话表示此节点的功能是enable的如果要设置status,那么值必须是”okay”或者”ok”dts里的status属性值会覆盖dtsi中的值(编译dtb的时候原创 2017-07-14 17:31:44 · 2296 阅读 · 0 评论 -
[RK3288][Android6.0] 调试笔记 --- 让cpu占用率达到100%
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92有时候要测试CPU为100%的case,比如测试满载时cpu的温度,其实只要写个脚本做个死循环就可以了。#!/system/bin/shwhile truedodone注意: 1. 循环中间家echo会引起sleep,导致cpu使用率会降低 2. 一个脚本控制一个cpu,所以多个cpu原创 2017-08-15 16:43:19 · 3348 阅读 · 0 评论 -
[RK3288][Android6.0] 调试笔记 --- 温度检测中断不会触发
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92之前在 [RK3288][Android6.0] TS-ADC驱动流程小结 一文中测试温度传感器设定65°,但是到了70°之后也没触发中断。利用IO工具([RK3288][Android6.0] 通用访问系统寄存器) 测试读取发现中断控制寄存器并没有使能中断,再回去检查代码。发现意见比较坑的事情:原创 2017-09-13 15:29:43 · 2310 阅读 · 0 评论 -
[RK3288][Android6.0] TS-ADC驱动流程小结
Platform: RK3288OS: Android 6.0Kernel: 3.10.92RK3288使用TSADC(Temperature-Sensor ADC)来测量CPU温度,支持两种模式:用户自定义模式: 主动控制读取温度.自动模式: 自动检测温度,达到阀值就自动报告.rk3288.dtsi中的device配置:tsadc: tsadc@ff280原创 2017-02-13 11:01:19 · 5740 阅读 · 12 评论 -
[RK3288][Android6.0] 调试笔记 --- 下载进入MSC设备
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92现象:同样的板子处于Rockusb状态时,有些PC显示为rockusb设备,但有个别却显示是MSC设备,如下图:原因:没有Source code,rk也没给具体是什么原因引起。目前只知道MSC指的是大容量存储设备。 之前在Qualcomm上面调试也有这个模式,可以按键进入,而且也可以down原创 2017-08-31 17:42:06 · 3170 阅读 · 2 评论 -
[RK3288][Android6.0] ION 驱动流程小结
Platform: RK3288OS: Android 6.0Kernel: 3.10.92之前Qualcomm平台有分析过ION, 可参考http://blog.youkuaiyun.com/kris_fei/article/details/8588661和http://blog.youkuaiyun.com/kris_fei/article/details/8618587因此这里就走下原创 2017-02-09 09:24:07 · 3680 阅读 · 4 评论 -
[RK3288][Android6.0] 调试笔记 --- 伪电池驱动添加
Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92由于电池部分是用户空间Service从另外一颗MCU获取,而Android需要显示电量,所以按照电池驱动框架做了一个伪电池驱动, 主要是使用它的充电状态和电池电量这两个property, 代码如下:/* drivers/power/rk3288_battery.c *原创 2016-12-21 15:11:13 · 3694 阅读 · 1 评论 -
[RK3288][Android6.0] IRQ-domain.txt 翻译
Platform: RK3288OS: Android 6.0Kernel: 3.10.92在前面文章学习RK818驱动时, 用到了irq doamin, 这里顺便把kernel/Documentation/IRQ-domain.txt的使用部分翻译下,供大家参考.The irq_alloc_desc*() and irq_free_desc*() APIs原创 2016-11-30 13:21:47 · 1135 阅读 · 0 评论 -
[RK3288][Android6.0] 调试笔记 --- AndroidTool低格无效问题
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92现象: 之前文章 [RK3288][Android6.0] 调试笔记 — AndroidTool两种低格方式 介绍了低格方式.在使用Android Tool去做低格发现重启后系统还是能正常开机.原因: 低格命令对eMMC无效.解决方法: 使用工具带的擦除Flash命令.原创 2017-09-25 14:46:05 · 1333 阅读 · 2 评论 -
[RK3399][Android6.0] 系统重启支持恢复出厂设置参数
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92reboot的boot flag请看文章 [RK3399][Android6.0] 系统支持的重启模式 注意到boot mode table中有对wipe data的支持(BOOT_WIPEDATA)enum { BOOT_NORMAL = 0, /* normal boot */原创 2017-09-25 14:26:32 · 2323 阅读 · 0 评论 -
[RK3399][Android6.0] 系统支持的重启模式
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92系统重启过程可参考 [RK3399][Android6.0] 系统重启调用过程小结而重启时android系统是支持带参数重启的. rk平台上定义的boot mode如下:enum { BOOT_NORMAL = 0, /* normal boot */ BOOT_LOADER,原创 2017-09-25 13:25:42 · 2236 阅读 · 0 评论