
-------Freescale--------
文章平均质量分 71
KrisFei
工作记录.
展开
-
[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 评论 -
[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 评论 -
[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] 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] 超声波模块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] 超声波模块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] 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 评论 -
Linux死锁调试之softlockup
Kernel branch: 3.0.35概要:softlockup 主要用于检测内核的进程调度是否正常,当不能调度发生softlockup时,内核不能被调度,但是中断还是可以响应,而hrtimer属于中断的下半部,所以此情况下也可以响应。原理: 系统在每个cpu上创建一个内核线程,当hrtimer定期执行的回调后会尝试唤醒此线程,如果线程有被正常调度而被唤醒原创 2016-05-04 14:41:18 · 9024 阅读 · 0 评论 -
Linux死锁调试之hardlockup
Kernel branch: 3.0.35概要:hardlockup用于检测进入中断之后导致死锁的情况。原理:利用了NMI(非屏蔽中断)不能被屏蔽的特性,也就是说系统即使中断死锁后NMI也能被触发。如果中断正常,hrtimer会定期被调用而去更新计数变量hrtimer_interrupts, 而NMI中断函数后也会定期判断此值有没有变化,如果没有变化说明中断原创 2016-05-05 10:09:04 · 7372 阅读 · 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 评论 -
[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 评论 -
Ubuntu通过串口发送文件给u-boot
Windows可以通过默认的串口终端发送给u-boot,而在ubuntu上默认的minicom无此功能,不过c-kermit可以实现此功能。1. 安装 c-kermit#sudo apt-get install ckermit2. 测试#kermit[kris@:~/yocto_3.14.28-1.0.1]$ kermitC-Kermit 9.原创 2015-12-22 17:22:35 · 2664 阅读 · 4 评论 -
如何将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 评论 -
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 · 2514 阅读 · 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 评论 -
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]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 评论 -
如何在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][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 评论 -
[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 评论 -
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 · 1765 阅读 · 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 评论 -
[IMX6DL][Android4.4] DNS流程
拿getByName举例。framework端:InetAddress.getByName -> getAllByNameImpl -> lookupHostByName -> Libcore.os.getaddrinfo -> //调用natvie函数 getaddrinfo -> //b原创 2016-01-22 11:01:04 · 4480 阅读 · 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 评论 -
[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 评论 -
[IMX6Q]Android版本如何获取u-boot源代码
假设要获取kk4.4.2_1.0.0-ga这个branch:$git clone git://git.freescale.com/imx/uboot-imx.git uboot-imx$cd uboot-imx$git checkout kk4.4.2_1.0.0-ga如果是其他branch,可以在clone之后先查看所有branch$ git branch -a原创 2015-12-28 09:31:42 · 1641 阅读 · 0 评论 -
[IMX6Q]u-boot_v2009.08编译过程
版本: 2009.08先看如何使用,然后以此为入口。写一个脚本,这里以mx6q_sabreauto_config为例。#!/bin/bashexport ARCH=armexport CROSS_COMPILE= make distclean;make mx6q_sabreauto_configmake然后编译:$./build_u-boot.sh就可以生成u原创 2015-12-28 14:51:05 · 2449 阅读 · 0 评论 -
[IMX6Q]u-boot_v2009.08移植
u-boot版本: v2009.081. 参考一样平台其他目录copy一个$cp -rf board/freescale/mx6_ board/freescale/mx6_2. copy一个平台相关mx6_.h文件$cp include/configs/mx6_.h include/configs/mx6_.h3.在顶层Makefile中添加configmx6原创 2015-12-28 16:00:39 · 2162 阅读 · 0 评论 -
[IMX6DL] dd命令刷u-boot.bin到sd卡失败解决方法
Platform: IMX6DLOS: Android 4.4Kernel branch: 3.0.35现象:使用飞思卡尔自带烧写fsl-sdcard-partition.sh以及ubuntu自带dd命令烧写u-boot.bin到sd卡,放到板子上会无法开机。之前使用1GB内存的时候偶尔会出现此问题,但是换成2GB就成了100%。调试过程:具体原原创 2016-07-21 17:52:25 · 5725 阅读 · 0 评论 -
[IMX6Q][Android5.1]移植笔记 --- uboot_v2015.04移植
u-boot版本: v2015.04branch: imx_v2015.04_3.14.52_1.1.0_ga我们硬件参考的是sabresd demo板子,由于此branch没有对应mx6qsabresd目录,所以参考mx6sabresd来移植了,经验证也可以开机。以下是移植步骤:1. #cp -rf board/freescale/mx6sabresd boa原创 2016-01-14 16:40:09 · 5566 阅读 · 0 评论 -
[IMX6Q][Android5.1]如何获取Android5.1 Source Code
由于Google被屏蔽,所以直接从国外网站获取source code会出现异常,幸好国内也有对应的镜像提供,而且相对又快,方法如下:1. 获取repo # cd ~# git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/# chmod 755 git-repo/repo2. 修改repo将 git原创 2016-02-22 10:32:53 · 2633 阅读 · 0 评论 -
[IMX6Q][Android5.1]移植笔记 --- kernel停在Starting kernel 分析
platform: imx6qos: Android5.1branch: l5.1.1_2.1.0-ga原因: IMX6Q的PMU被bypass导致cpu没有供电而无法开机。u-boot加载boot.img的log如下:U-Boot 2015.04-14409-g6cf684a-dirty (Mar 10 2016 - 13:56:17)CPU:原创 2016-03-10 17:25:44 · 8604 阅读 · 0 评论 -
[IMX6Q][Android5.1]移植笔记 --- kernel移植
platform: IMX6Qos: Android 5.1kernel: 3.14.521. mach type匹配保证device tree中的值和mach desc结构中的值有相同的一个,本质上就是匹配里面的compatible属性值是否一致,否则kernel因为匹配不成功而开机失败。本例使用imx6平台,对应的dts文件是:kernel_原创 2016-03-14 09:58:52 · 4594 阅读 · 0 评论 -
[IMX6Q][Android5.1]移植笔记 --- Recovery下添加sh和toolbox
platform: imx6qos: Android5.1branch: l5.1.1_2.1.0-ga原生source code是无法通过adb进入recovery mode的,提示error 如下:但有时候却需要调试recovery,可以通过下面修改实现此功能。1. 修改 android/system/core/adb/services.c原创 2016-03-18 13:35:57 · 4154 阅读 · 0 评论 -
[IMX6Q][Android5.1]androidboot.xxx如何转换成ro.boot.xxx
platform: imx6qos: Android5.1branch: l5.1.1_2.1.0-ga在kermel cmdline中我们经常会设置androidboot.xxx比如androidboot.selinux=disabled,但是代码中并不能搜到对应的内容,其实是init做了统一转换。init进程中有:main -> process_kern原创 2016-03-18 17:38:50 · 3432 阅读 · 0 评论 -
[IMX6Q][Android5.1]移植笔记 --- Kernel启动无法挂载文件系统
platform: imx6qos: Android5.1branch: l5.1.1_2.1.0-ga错误log如下,主要是最后几句:Security Framework initializedSELinux: Initializing.AppArmor: AppArmor disabled by boot time parameterMount-cac原创 2016-03-21 11:00:40 · 6070 阅读 · 0 评论 -
[IMX6Q][Android5.1]移植笔记 --- 无法挂载system文件系统
platform: imx6qos: Android5.1branch: l5.1.1_2.1.0-ga编译好system image之后开机提示如下log,注意红色部分:Freeing unused kernel memory: 432K (c0be3000 - c0c4f000)usb 1-1: USB disconnect, device nu原创 2016-03-21 16:42:25 · 12919 阅读 · 4 评论 -
[IMX6Q][Android5.1]移植笔记 --- 调试串口只能输出不能输入
platform: imx6qos: Android5.1branch: l5.1.1_2.1.0-ga使用的是/dev/ttymxc1, 发现开机后有log输出,但是不能type输入,查阅资料发现是Android Lollipop 5.1中CTS的要求是默认关闭serial input.飞思卡尔的文档也有如下说明:因此可以通过如下方式解决此问题:原创 2016-03-22 16:09:46 · 4204 阅读 · 1 评论 -
[IMX6Q][Android5.1]移植笔记 --- LCD背光控制
platform: imx6qos: Android Lollipop 5.1branch: l5.1.1_2.1.0-gaLCD 背光的使能通过GPIO高低电平来控制, 因此本文也可以作为GPIO基本控制的一个例子。硬件部分:这里是MB_LCD_BL引脚,原理图如下:最终对应的是KEY_COL4:对应的GPIO是GPIO4_原创 2016-03-24 11:27:15 · 4220 阅读 · 0 评论 -
[IMX6DL]fastboot erase SD分区实现
u-boot: v2009.08系统默认只支持nand的fastboot erase功能,而我们用的是SD,SD和EMMC都是基于MMC,u-boot本身有实现mmc的block erase功能,因此我们利用它来擦写对应的块即可。在擦写之前,我们需要对应的分区信息,fastboot init那会需要将partition的信息添加到partition table中,这原创 2016-07-01 18:00:43 · 6099 阅读 · 3 评论