- 博客(42)
- 资源 (9)
- 收藏
- 关注
原创 MSM8909平台UIM驱动流程
UIM卡上电需要满足下面的时序。 UIM上电时序 UIM下电时序MSM8909平台UIM初始化流程如下。在initialize_intctrl中设置了UART接收数据的中断服务程序为uimIntctrlIsr,当...
2018-03-20 14:36:09
2833
原创 MSM8909开机logo显示(1)---LCD背光的控制
在MSM8909平台上,PWM信号由PMU的MPP2输出,MPP的全称是Multi Purpose Pin,即多用途管脚。在文档80-NN174-64中,说明了MPP2的性质:PMU输出PWM非常地简单,MSM8909可参考80-NP409,只需配置10个寄存器。对于PWM的输出频率和占空比,高通提供了一个公式来计算:PWM_FREQ_CLK_SELECT和PWM_SIZE由寄存器0x1BC41配...
2018-03-14 00:00:40
3973
2
原创 VS2008编译libpng
1.下载lpng1630.zip和zlib1211.zip的源码包,解压到同一目录下,将zlib-1.2.11目录重命名为zlib。2.打开lpng1630\projects\visualc71目录下的工程文件libpng.sln,按照VS向导将版本转换成当前电脑安装的VS版本。3.删除Solution中的pngtest工程,以免编译报错。4.配置libpng工程属性,选中libp
2017-08-14 18:04:16
876
原创 J-link V8在win7 64位系统下刷固件方法
1.安装sam-ba_2.16.exe,2.J-link通过USB连接至电脑,短接PCB上标号为ERASE的焊盘10秒,断开ERASE两个焊盘后,拔下USB线。3.短接PCB上标号为TST的两个焊盘,插上USB线10秒后,拔下USB线,再断开TST的两个焊盘。4.J-link通过USB连接至电脑,打开设备管理器,安装驱动,驱动位置:C:\Program Files (x86)\At
2017-07-24 18:03:21
6068
原创 高通平台EFS的制作
用来制作EFS的机器称为A,用来验证EFS的机器称为B。1.在modem_proc/core/storage/efs/inc/fs_config_i.h中增加以下三行:#ifndef FEATURE_EFS_ENABLE_FACTORY_IMAGE_SECURITY_HOLE#define FEATURE_EFS_ENABLE_FACTORY_IMAGE_SECURITY_HOLE
2017-05-19 14:37:46
8727
原创 高通Secure Boot调试流程记录
参考文档KBA-161109181347-how_to_enable_secure_boot_step_by_step.pdf。1.新建临时目录tmp: mkdir tmp cd tmp2.复制opensslroot.cfg和v3.ext到tmp目录: cp ~/work/M1503-6.0.1-01610/LINUX/android/vendor/qcom/p
2017-03-23 18:01:56
23239
9
原创 高通平台开机logo的修改
方法一:准备一张和LCD分辨率一样大小的png图片logo.png,在高通源码目录device/qcom/common/display/logo下面,有readme.txt文件,里面有说明生成镜像文件的方法:执行命令:python ./logo_gen.py logo.png,在当前目录下面会生成splash.img,用flash工具将splash.img刷进splash分区即可。
2017-03-07 10:05:17
8046
原创 Android中getevent和sendevent的应用
进入shell,以触摸屏为例,执行getevent -p /dev/input/event0,输出如下:add device 1: /dev/input/event0 name: "MSG21XX Touchscreen" events: KEY (0001): 008b 009e 00ac 00d9 ABS (0003): 002f : va
2017-02-20 21:31:22
2221
1
原创 Android消息处理机制---Looper、Handler、Message之间的关系
从一个应用程序的实例来理解安卓线程间的通信比较容易。class MyThread extends Thread { private Looper mLooper; @Override public void run() { super.run(); Looper.prepare(); synchronized (this)
2017-02-20 00:09:24
953
原创 Java中使用反射机制操作硬件
使用使用"mmm frameworks/base/"命令编译frameworks/base/core/java/android/os/ILedService.aidl文件,在out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/os/目录下会生成ILedService.java文件,内容
2017-02-06 19:35:41
785
原创 Android使用HAL操作硬件
1.新建hardware/libhardware/include/hardware/led_hal.h文件:#ifndef ANDROID_LED_INTERFACE_H#define ANDROID_LED_INTERFACE_H#include <stdint.h>#include <sys/cdefs.h>#include <sys/types.h&g...
2017-02-04 22:27:35
1183
原创 Android问题汇总
1.在frameworks/base/services/java/com/android/server/SystemServer.java文件中添加:Slog.i(TAG, "Led Service");ServiceManager.addService("led", new LedService());系统无法启动,通过logcat查看,报错如下:E/SELinux ( 298): avc:...
2017-02-03 20:40:27
4403
1
原创 Android中APK直接通过JNI访问驱动
1.新建文件LED-JNI.c,内容如下:#include /* /usr/lib/jvm/java-1.7.0-openjdk-amd64/include/ */#include #include #include #include #include #include #include /* liblog *///__android_log_p
2017-02-03 19:07:04
1717
原创 Android硬件访问服务---APK编写
开发环境:AndroidStudio2.0,MainActivity.java源码如下:package com.example.lawson.myapplication3;import android.os.RemoteException;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;
2017-02-03 15:09:39
507
原创 Android硬件访问服务---添加Service
1.在frameworks/base/core/java/android/os/目录下新建ILedService.aidl文件,这个aidl文件是让安卓系统自动生成ILedService.java文件,这个java文件给app使用,来调用jni提供的ledCrtl函数,app只需要点灯或者灭灯,它不需要其他操作,所以只需要实现ledCtrl方法:package android.os;/** {...
2017-02-03 11:29:56
986
原创 高通平台dts的匹配过程分析
在arch/arm/mach-msm/board-8909.c中:DT_MACHINE_START(MSM8909_DT, "Qualcomm Technologies, Inc. MSM 8909 (Flattened Device Tree)") .map_io = msm8909_map_io, .init_machine = msm8909_init,
2017-01-10 14:57:00
6681
原创 高通平台device tree生成platform device的过程(MSM8909)
在arch/arm/kernel/setup.c中,通过customize_machine函数中的machine_desc->init_machine();来调用高通平台的machine初始化代码:static int __init customize_machine(void){ /* * customizes platform devices, or adds n
2017-01-10 10:54:12
2729
原创 Linux驱动中module_init宏的解析
内核include/linux/init.h中,module_init展开如下:#define module_init(x) __initcall(x);__initcall(x)展开如下:#define __initcall(fn) device_initcall(fn)device_initcall(fn)展开如下:#define device_initcall(fn)
2017-01-09 21:34:01
765
原创 alsa-lib和alsa-util在TQ2416上的移植
下载alsa-lib-1.0.25.tar.bz2和alsa-utils-1.0.25.tar.bz2
2016-11-16 19:51:22
911
原创 QT4.8.6移植到TQ2440
交叉编译器用的是arm-linux-gcc4.3.2。1.安装依赖:sudo apt-get install libX11-dev libXext-dev libXtst-dev2.下载:qt-everywhere-opensource-src-4.8.6.tar.gz,网址:http://download.qt.io/archive/qt/3.解压:tar zxf qt-everyw
2016-10-25 15:46:29
2927
1
原创 Sensor在Linux内核中的驱动分析
内核中对sensor的抽象:drivers/sensors/sensors_class.c模块初始化函数:static int __init sensors_init(void){ sensors_class = class_create(THIS_MODULE, "sensors"); if (IS_ERR(sensors_class)) return PTR_ERR(sens
2016-10-17 18:38:47
7343
原创 tslib-1.4在TQ2440上的移植
1.解压:tar zxf tslib-1.4.tar.gz2.cd tslib/3.运行autogen.sh脚本:./autogen.sh4.echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache5.配置:./configure --host=arm-linux --cache-file=arm-linux.cache --en
2016-10-16 21:24:34
787
原创 在Ubunut12.04上搭建TFTP和NFS服务器
安装tftp-server:sudo apt-get install tftpd-hpa安装tftp-client(根据需要安装):sudo apt-get install tftp-hpa配置TFTP服务器:sudo vim /etc/default/tftpd-hpa,修改为如下内容:TFTP_USERNAME="tftp"TFTP_DIRECTORY="/home/yunta
2016-10-06 14:25:25
371
原创 lib-jpeg在TQ2440上的移植
tar zxf libjpeg-turbo-1.2.1.tar.gzcd libjpeg-turbo-1.2.1/./configure --prefix=$PWD/tmp/ --host=arm-linux./configure --prefix=$PWD/tmp/ --host=arm-linuxmake -j8make installcd tmp/lib/cp *
2016-10-01 00:12:20
291
原创 FreeType在TQ2440上的移植
主机:Ubuntu 14.04.1 LTS,交叉编译器:arm-linux-gcc4.3.2。cd freetype-2.4.10/./configure --host=arm-linux报错:GNU make (>= 3.80) or makepp (>= 1.19) is required to build FreeType2.Please try `GNUMAKE=
2016-09-25 21:37:21
727
原创 JLink烧写2440的NOR配置
打开SEGGER\JLinkARM_V408k目录下的JFlashARM.exe。选择File->New Project新建工程,选择Options->Project settings,切换到CPU页,勾选Use target RAM(如果不勾选这个,烧写时就不会利用2440片内的SRAM,导致烧写速度会非常慢),Addr填入40000000(2440从Nor启动时,片内的SRAM地址映射到0
2016-09-25 12:12:12
2445
原创 Git服务器搭建
1. 在服务器端新建仓库目录,比如linux-3.0.35-fastboot。2. 初始化服务器仓库为裸仓库: cd linux-3.0.35-fastboot git--bare init3. 在本地创建仓库目录,比如linux-3.0.35。4. 提交代码: cd linux-3.0.35 git add . gitcommit -
2016-09-23 16:29:34
368
原创 VS2008 问题汇总
1.中文乱码问题:在资源视图中,右击对话框IDD,选择属性,将语言更改为Chinese (Simplified, PRC)即可。 或者在新建工程时,资源语言选择中文:2.编译报错,需要编译两次才可以通过:Project--->xxx Property Pages--->Configuration Properties--->Linker中的Enable Incremen
2016-08-29 11:23:32
677
原创 LCD在打电话时不灭屏的解决方法
环境:MSM8909+Android6.0.1+STK33101.打开QSensorTest app,用手靠近和远离P-sensor,sensor均能正常上报数据。2.打电话时查看kernel日志,发现enable函数没有被调用。P-sensor采用的轮训的方式上报数据,说明上层没有调用sensor的enable函数,在frameworks/base/core/java/and
2016-07-20 17:56:00
2888
原创 OTM1287A在MSM8909上的移植
高通平台是根据board-id来匹配dts文件,查看lk日志,找到如下log,由此可以断定board-id=8B - 262971 - CDT version:3,Platform ID:8,Major ID:1,Minor ID:0,Subtype:0查看kernel/arch/arm/boot/dts/qcom/msm8909-1gb-mtp.dts文件发现,高通默认的dts配置
2016-07-08 19:21:56
3996
原创 Linux内核定时器的使用
内核定时器的结构体定义在include/linux/timer.h:struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct list_head entry; unsigned long expires; st
2016-06-29 10:47:40
594
原创 Workqueue的应用
工作队列允许内核代码请求某个函数在未来的时间被调用,具有很好的灵活性,其运行在特殊的内核线程,该线程没有对应的用户空间可以访问,因此,工作队列函数不能访问用户空间,但是可以休眠。TP的私有数据结构:struct msg21xx_ts_data { struct input_dev *input; struct hrtimer timer; struct work_struct wor
2016-06-28 14:56:20
532
原创 Linux中seq_file的应用
seq_file和seq_operations结构体定义在include/linux/seq_file.h:struct seq_file { char *buf; size_t size; size_t from; size_t count; size_t pad_until; loff_t index; loff_t read_pos; u64 version; stru
2016-06-28 14:09:35
2178
1
原创 Linux的notifier机制在TP中的应用
在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。notifier_block结构体在include/linux/notifier.h中定义:struct notifier_block { notifier_fn_t notifier_call; struct notifier_block __r
2016-06-27 22:00:35
3641
原创 Linux中miscdevice的分析
当字符设备不符合预先确定的字符设备范畴时,就可以采用Linux的杂项设备,这类设备用得比较多,misc device用主设备号为10来调用misc_register注册。misc device的实现在drivers/char/misc.c文件中,先看它的init函数。static int __init misc_init(void){ int err;#ifdef CONFIG_PRO
2016-06-27 19:41:02
2208
1
原创 Linux中debugfs的解析
debugfs_create_dir和debugfs_create_file定义在fs/debugfs/inode.c,声明在include/linux/debugfs.h。struct dentry *debugfs_create_dir(const char *name, struct dentry *parent){ return __create_file(name, S_IF
2016-06-27 17:56:17
6522
原创 Linux中debugfs的应用实例
struct ft5x06_ts_data { struct i2c_client *client; struct input_dev *input_dev; const struct ft5x06_ts_platform_data *pdata; struct ft5x06_psensor_platform_data *psensor_pdata;
2016-06-27 16:02:56
904
原创 sysfs_create_group使用
include/linux/sysfs.h中对attribute和attribute_group结构体的定义:struct attribute { const char *name; umode_t mode;#ifdef CONFIG_DEBUG_LOCK_ALLOC bool ignore_lock
2016-06-26 16:10:54
10338
原创 device_create_file的使用
DEVICE_ATTR是一个宏,其定义在include/linux/device.h:#define DEVICE_ATTR(_name, _mode, _show, _store) \ struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)__ATTR宏定义在include/linux/...
2016-06-26 14:21:20
11857
1
原创 配置Linux内核支持yaffs2文件系统
1.使用git工具下载yaffs2源码:git clone git://www.aleph1.co.uk/yaffs22.进入yaffs2目录,执行patch-ker.sh脚本,将文件复制到linux内核的fs目录下。cd yaffs2/./patch-ker.sh c m ~/work/linux-3.10.4/输出如下信息,标明脚本执行成功。Updating /home/y
2016-05-24 15:27:28
2016
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人