
IMX6_Android4.4
文章平均质量分 73
KrisFei
工作记录.
展开
-
[IMX6DL][Android4.4] CPU频率调节模式以及降频方法
Platform: IMX6DLOS: Android 4.4Kernel branch: 3.0.35cpu的频率调节模式有如下几种:1. Performance. 不考虑耗电,只用最高频率。2. Interactive. 直接上最高频率,然后看CPU负荷慢慢降低。3. Powersave. 通常以最低频率运行,流畅度会受影响,一般不会用这个原创 2016-07-04 17:32:39 · 9098 阅读 · 0 评论 -
[Android4.4]NetworkManagementService与Netd交互流程
接收netd事件流程:NetworkManagementService.create -> SystemServer.java create -> //socket name 是NETD_SOCKET_NAME,即netd new NetworkManagementService -> new NativeDaemonConnecto原创 2016-01-22 17:13:52 · 2375 阅读 · 0 评论 -
[IMX6DL][Android4.4] DNS流程
拿getByName举例。framework端:InetAddress.getByName -> getAllByNameImpl -> lookupHostByName -> Libcore.os.getaddrinfo -> //调用natvie函数 getaddrinfo -> //b原创 2016-01-22 11:01:04 · 4480 阅读 · 0 评论 -
[IMX6DL][Android4.4] Netd启动流程小结
netd在Android中主要用于管理和控制网络部分,处于kernel和framework中间,两者的信息交互必须要通过netd。netd服务在启动的init.rc中创建:service netd /system/bin/netd class main socket netd stream 0660 root system socket dnsproxyd原创 2016-01-22 08:35:44 · 1927 阅读 · 0 评论 -
Kernel如何解析u-boot传过来的参数
kernel版本: 3.0.35之前有提过u-boot将tags作为启动kernel的第三个参数传递:int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images){...... theKernel (0, machid, bd->bi_boot_params); /* does原创 2016-01-11 10:23:41 · 1766 阅读 · 0 评论 -
[IMX6Q]如何得知当前平台是IMX6Q
kernel version: 3.0.35一般linux的通用方法是通过kernel_imx\include\generated\mach-types.h里的定义machine_is_mx6q_sabresd 来判断当前是否属于此平台#ifdef CONFIG_MACH_MX6Q_SABRESD# ifdef machine_arch_type# undef mac原创 2016-01-08 18:24:52 · 2195 阅读 · 0 评论 -
[IMX6Q][Android4.4] kernel匹配machine type
kernel版本: 3.0.35之前有提过u-boot对machine type的赋值:int board_init(void){...... /* board id for linux */ gd->bd->bi_arch_number = MACH_TYPE_MX6Q_SABRESD;......}然后传给kernel:void do_booti_linux (原创 2016-01-08 18:04:39 · 1309 阅读 · 0 评论 -
如何在Linux上格式化并创建分区
在开发的时候经常会遇到系统使用 /dev/block/mmcblk0p1 而不是 /dev/block/mmcblk0,所以经常会遇到/dev/mmcblk0p1: No such file or directory 但是一般SD卡默认都是/dev/block/mmcblk0, 因此需要格式化并创建一个分区,方法如下:1. 先用fdisk删除所有分区:#sudo fdi原创 2015-12-29 16:07:33 · 4165 阅读 · 0 评论 -
[IMX6Q]LCD LVDS driver 注册流程
ldb.c: LVDS drivermxc_dispdrv.c display通用注册handle接口,用于统一管理各种接口。mxc_ipuv3_fb.c 平台核心驱动,最终用于注册driver到fb中。ldb device 注册:imx6q_add_ldb -> //board-mx6-tek.c imx_add_ldb -> imx_a原创 2015-12-28 09:20:16 · 5794 阅读 · 0 评论 -
Android Kitkat 如何让系统永久不休眠
修改 frameworks/base/packages/SettingsProvider/res/values/defaults.xml中的def_screen_off_timeout 做法在Android 4.4上已经无效了。解决方法:[kris@:~/daogou/frameworks/base]$ g df services/java/com/android原创 2015-12-28 08:58:26 · 2109 阅读 · 0 评论 -
[IMX6Q][Android4.4] LCD参数匹配过程分析
Platform: IMX6QOS: Android 4.4本例只讨论lvds接口的是lcd参数匹配的过程,mipi dsi以及其他接口部分会有一点差异。重要参数说明: fb_find_mode 用于匹配最佳的lcd时序参数,其中有三部分重要参数。1. ldb.c中的 ldb_modedbstatic struct fb_videomode ldb_原创 2015-12-25 16:21:12 · 6729 阅读 · 4 评论 -
[IMX6Q][Android4.4] Audio添加控制MIC左右声道接口
平台: freescale imx6q系统: Android4.4主要关注的是自上而下添加的方法:hardware/imx 目录:diff --git a/alsa/config_aic3254.h b/alsa/config_aic3254.hindex 48465d3..ae0fff5 100644--- a/alsa/config_aic3254.h+++ b/原创 2016-02-24 17:01:29 · 5022 阅读 · 0 评论 -
Gerrit配置(http+postgresql+nginx)
系统: ubuntu 14.04 LTS安装git:#sudo apt-get install git安装open-jdk:要求最低1.7版本。#sudo apt-get install openjdk-7-jre安装PostgreSQL:Gerrit支持H2,MySQL, PostgreSQL,这里使用PostgreSQL.#sudo apt-原创 2016-03-07 16:15:09 · 2515 阅读 · 0 评论 -
[IMX6DL][Android4.4] 电池低电量告警提示
Android4.4之前版本的电池电量低是通过发送 intent ACTION_BATTERY_LOW来实现的,而在android4.4中,通过发送intent ACTION_BATTERY_CHANGED,也就是电池电量只要变化就检查是否需要低电量告警,并且实现挪到了PowerUI中。路径:frameworks/base/packages/SystemUI/src/c原创 2016-06-30 14:15:12 · 4898 阅读 · 0 评论 -
Linux死锁调试之hardlockup
Kernel branch: 3.0.35概要:hardlockup用于检测进入中断之后导致死锁的情况。原理:利用了NMI(非屏蔽中断)不能被屏蔽的特性,也就是说系统即使中断死锁后NMI也能被触发。如果中断正常,hrtimer会定期被调用而去更新计数变量hrtimer_interrupts, 而NMI中断函数后也会定期判断此值有没有变化,如果没有变化说明中断原创 2016-05-05 10:09:04 · 7372 阅读 · 0 评论 -
Linux死锁调试之softlockup
Kernel branch: 3.0.35概要:softlockup 主要用于检测内核的进程调度是否正常,当不能调度发生softlockup时,内核不能被调度,但是中断还是可以响应,而hrtimer属于中断的下半部,所以此情况下也可以响应。原理: 系统在每个cpu上创建一个内核线程,当hrtimer定期执行的回调后会尝试唤醒此线程,如果线程有被正常调度而被唤醒原创 2016-05-04 14:41:18 · 9025 阅读 · 0 评论 -
[IMX6DL][Android4.4] Linux dmaengine 使用方法
1. 分配slave通道#define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)struct dma_chan *__dma_request_channel(dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param);根据mas原创 2016-05-03 15:49:27 · 3299 阅读 · 0 评论 -
[IMX6DL][Android4.4] 超声波模块KS103 Linux驱动源代码
Platform: IMX6DLOS: Android 4.4Kernel branch: 3.0.35说明:1. KS103模块可自行网上查找。2. 一共使用三组探测,每个IC设置最远的探测距离位2M。3. 模块提供UART和I2C接口,本例使用I2C通信。源代码如下:diff --git a/arch/arm/mach-mx6/board原创 2016-04-25 15:54:43 · 2742 阅读 · 0 评论 -
[IMX6DL][Android4.4] 超声波模块HC-SR04 Linux驱动源代码
Platform: IMX6DLOS: Android 4.4Kernel branch: 3.0.35说明:1. 硬件基于HC-SR04模块,可自行查找。2. 代码PWM模块用于测试中断响应性能, 背光部分注释掉是因为和PWM复用了。3. 测试中断响应性能时不要使用在中断上半部使用printk()方式,否则延时会到ms级。4. 代码中注册的字符设备可不需要原创 2016-04-15 14:26:26 · 2664 阅读 · 0 评论 -
[IMX6DL][Android4.4] do_gettimeofday()的精度分析
Platform: IMX6DLOS: Android 4.4Kernel branch: 3.0.35网上有很多不同版本说 do_gettimeofday()精度是ms,有的又说是us,那么正确答案到底是什么呢?还有,系统的tick只有ms的精度,如果是us精度,那么它又是如何做到的呢?先看do_gettimeofday()源代码:do_gettimeofda原创 2016-04-14 16:30:36 · 2434 阅读 · 0 评论 -
[IMX6DL][Android4.4] Linux内核中断流程小结
platform: imx6qos: Android Lollipop 5.1kernel branch: 3.0.35初始化:start_kernel -> main.c early_irq_init irqdesc.c //没有定义CONFIG_SPARSE_IRQ,使用的是静态分配irq_desc,并且初始化。 init_IRQ原创 2016-04-01 11:33:44 · 2255 阅读 · 0 评论 -
[IMX6DL][Android4.4] 不同git分支的合并方法
需求提出背景是这样的:一开始我下了freescale的soure code在本地开发,假设Commit为A,过来一段时间后才开始基于Commit A创建git server,而期间我已经基于Commit A添加了Commit B, Commit C, Commit D.这样如果既要添加改动,又要保留Commit B/C/D的commit log,那么该如何做呢,当然再重复添加一次肯定是原创 2016-03-28 16:10:52 · 1321 阅读 · 0 评论 -
如何将dtb反编译成dts
由于device tree会将一个node的信息分布在各个文件里,比如如下例子:imx6qdl-sabresd.dtsi:&ldb { status = "okay";.......};imx6qdl.dtsi:ldb: ldb@020e0008 { #address-cells = ; #size-cells = ;......};imx6原创 2016-03-14 17:25:38 · 25589 阅读 · 0 评论 -
[IMX6DL][Android4.4] Recovery添加从U盘升级功能
Platform: imx6OS: Android 4.4device/fsl 目录:diff --git a/common/recovery/Android.mk b/common/recovery/Android.mkindex f98468b..c7a7886 100644--- a/common/recovery/Android.mk+++ b/common/re原创 2015-12-15 10:47:59 · 3485 阅读 · 9 评论