自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 内核驱动按照文件路径读写文件

直接上代码,此段代码选取自realtek的wifi驱动中的一段代码 fp = filp_open("/data/wifimac.txt", O_RDWR, 0644); if (IS_ERR(fp)) { pEEPROM->bloadmac_fail_flag = _TRUE; DBG_871X("Error, wifi mac address file doesn't exist.\n"); } else { fs = get

2020-06-04 14:14:17 323

原创 [Android]如何在root目录下新建文件夹

烧录android的固件之后,在根目录下有/sbin /sys /system /dev/ proc /data /mnt /root等目录,想添加一个新的目录,那么得弄清楚这些目录都是怎样生成的,查看代码android/system/core/rootdir/Android.mk的124行左右,有如下图这样的修改这里添加你想添加的目录,这样最终编译完之后out/target/product/...

2019-09-10 11:41:52 4094

原创 如何解决制作的rootfs无法加载驱动

问题描述和分析解决在制作ubuntu使用的文件系统的时候,开机之后发现自己制作的固件无法加载驱动,看串口打印的logcat,有[FAILED] Failed to start Load Kernel Modules.See ‘systemctl status systemd-modules-load.service’ for details.这样的错误。执行“systemctl s...

2019-09-05 14:05:58 818

原创 Linux如何验证AP6212(AP6236)的bluetooth功能

开发环境cpu:ARM芯片系统:使用buildroot(版本为2016.11)编译出的linux系统(无界面)BT模块:AP6212(该芯片有bt+wifi功能)测试步骤1.加载bcmdhd驱动2.rfkill来控制bt的供电3.执行brcm_patchram_plus程序控制ap6212的工作方式以及固件下载以上三个命令我写入了脚本openbt.sh#!/bin/s...

2019-09-05 11:45:09 5732 2

转载 如何在64位安卓系统中使用32位SO库

原文链接背景知识:对于64位系统的编译规则,可参考:http://source.android.com/source/64-bit-builds.html关键点:JAVA编译不分32bit和64bit(APK,JAR)可执行文件,默认编译64位动态库和静态库,默认同时编译32bit和64bit版本通过LOCAL_MULTILIB可以指定特定模块编译32bit或64bit或都编译...

2018-05-26 15:10:00 3919

原创 Android的权限说明(apk的运行权限和sepolicy)

参考链接地址Android sepolicy知识链接APK如何获取System权限 Android 7.0 SEAndroid app权限配置 1.首先了解一个基础知识ps -Z 和ls -Z,这两个命令分别查看进程和文件的sepolicy属性 下面是apk拥有system权限u:r:system_app:s0 system 30098 1653 ...

2018-05-17 19:55:13 2484

转载 STM32时钟说明

用时钟源来产生时钟! 在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接 外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤、PL...

2018-04-09 09:45:04 352

原创 Android4.4开机向导

1.前言 首次刷机之后,第一次启动系统会运行一个开机向导,该向导会设置系统语言 ,wifi,日期和时间等,由于现在需要去掉该向导,所得找到是那个apk干的这件事。 2.搜索apk 请先阅读此文章 我发现Provision.apk并没有编译,所以从启动向导来分析,该apk应该是在priv-app中,所以我从priv-app中找,在该文件夹中找到SetupWizard.apk,从apk的名字大

2017-11-02 13:40:05 672

原创 dd fdisk mount相关命令的总结

概论 工作中经常会碰到dd fdisk mount这些命令,比如这段时间玩banana-pi,在生成镜像和制作启动卡,会经常用到dd fdisk mount这些命令。常用参数 if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file > of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file > ibs=bytes:一次读

2017-10-30 11:14:51 891

原创 banana-pi M3的linux的编译和体验

1.体验Linux 手头上刚刚好有一块banana-pi,所以想试试Linux,首先在官网下载了个ArchLinux镜像和制作SD卡工具的下载路径,先使用SD Formatter这个工具格式化SD卡,然后用Win32DiskImager来制作启动卡,接着将SD卡插入M3,连上HDMI,启动就可以看到系统启动,当然,你也可以将XXXX.img放入U盘(如果你启动卡有足够的空间也可以放入到启动卡),m

2017-10-26 19:00:54 2399

原创 ssh免密登录和ssh配置

生成本地机器上生成公钥和私钥将公钥通过scp命令发送到远程服务器scp .ssh/regan.pub regan@192.168.1.181:/home/regan/regan.pub将regan.pub添加到.ssh/authorized_keys文件里cat regan.pub >> .ssh/authorized_keyschmod 600 .ssh/authorized_keys

2017-05-09 22:49:22 335

原创 android的智能指针

android引入只能指针是为了解决c++指针使用不当造成的内存泄漏问题。 智能指针可以理解为两个对象A和B,当A引用B的时候,B也引用A,当需要释放对象A所占用的内存的时候,由于B还在引用着A,所以不能释放对象A。同理想释放B的时候,A还引用着B,所以B也不能释放,这就是一个问题。基于这个引入了强指针和弱指针,假设AB是父子关系,A引用B就是强引用,B引用A是弱引用。对象A的生命周期不受对象

2017-04-14 12:12:25 252

原创 codec音频编解码器驱动分析

之前在公司做过cs42l52编解码器的驱动,不过现在已然已经忘记了。目前手中有友善之臂的一款三星4412的开发板,那么就分析这款产品的音频编解码器吧。 如图所示,可以看出该开发板使用的是WM8960的音频编解码器,查找源码android-5.0.2/linux-3.0.86/sound/soc/codecs/wm8960.c存在,查看mach-tiny4412.c可以看到如下图 很显然可以

2017-04-12 19:24:19 4101

原创 LCD驱动分析

由于最近面试需要,特此整理一下LCD驱动的调试,因为之前在公司调试的RK平台下的LCD已经忘记了,所以以我手中现有的友善之臂tiny4412为例。先了解下LCD有关的知识吧。LCD基础知识连接LCD常用接口TTL(RGB)、LVDS、EDP、MIPI,我个人理解就是从ARM中出来的是RGB接口的,本来这个可以直接用于显示到LCD屏,但由于抗干扰等等因素所以需要先将RGB数据通过芯片(转换芯片)转换

2017-04-12 17:25:29 1275

原创 分析改变Brightness的流程

系统修改屏幕亮度只用修改SetttingProvider中的Settings.System.SCREEN_BRIGHTNESS这个值就可以了,那么系统在这个背后都做了些什么呢?通过搜索Settings.System.SCREEN_BRIGHTNESS这个关键字,可以在PowerManagerService.java这个文件中找到,分析代码,截取片段如下//这个是SettingProvider的监听器

2017-04-08 11:07:25 707

原创 分析WifiStateMachine如何启动wifi驱动

WifiStateMachine中通过mWifiNative.loadDriver()来加载驱动,loadDriver对应jni的一个native方法,grep搜索下结果如下 ./opt/net/wifi/service/jni/com_android_server_wifi_WifiNative.cpp:1062: { “loadDriver”, “()Z”, (void *)andr

2017-04-08 00:53:48 1401

原创 由WifiStateMachine来理解StateMachine

前言:前一段时间在公司分析一个由于突然关掉路由器,导致设备wifi崩溃的问题。通过一段时间的摸索和学习,了解到wifi状态机的工作原理。所谓状态机我的理解是,表示一个物体它现在所处的状态,以及所处状态对于不同指令的处理。以下是我本人所持有的开发板所带的android5.0的wifi状态机的所有状态 从图片中的代码可以看出这差不多是个树形结构(由于图片上传大小的限制,我自己画图没办法上传

2017-04-07 23:49:27 1128

原创 ubuntu系统启动项的修改

1.原理 启动ubuntu后,你发现的启动画面是由/boot/grub/grub.cfg这个文件决定的,你能从这个文件中找到启动画面的一些启动项.而/boot/grub/grub.cfg这个文件本质上是由update-grub这个命令然后结合/etc/grub.d/这个文件夹下的00_header 05_debian_theme 10_linux 20_linux_xen 20_m

2017-03-10 09:16:38 6918

原创 RandomAccessFile读写分区设备节点

最近遇到一个apk读写分区的问题,代码如下RandomAccessFile file = new RandomAccessFile("/dev/block/platform/by-name/logo", "rw");这个方法会抛出FileNotFoundException这个异常.然后我就纳闷了首先想到的是AndroidManifest.xml的权限问题,但是尝试半天之后依旧是这个异常,通过adb

2016-12-29 11:24:43 357

原创 init.rc在boot中执行shell脚本,无法创建目录

我试了下在init.rc中boot段执行shell脚本,最终脚本可以运行却无法创建目录.目前原因尚不清楚,所以建议创建目录的相关东西尽量参考init.rc来做.

2016-12-29 11:12:32 712

转载 init.rc语法解析(转载)

1、init.rc是一个可配置的初始化文件,通常定制厂商可以配置额外的初始化配置,init.%PRODUCT%.rc2、init.rc是在$GINGERBREAD/system/core/init/init.c中读取的,它基于“行”,包含一些用空格隔开的关键字(它属于特殊字符)3、如果关键字中有空格,处理方法类似于C语言,使用/表示转义,使用“”防止关键字被断开,另外注意/在末尾表示换行4、#

2016-12-28 23:56:56 1473

原创 init.rc的触发顺序

很久之前一直差不多搞清楚来触发顺序,不过后来又忘了。先来看下我自己开发板的init.rc的内容吧# Copyright (C) 2012 The Android Open Source Project## IMPORTANT: Do not create world writable files or directories.# This is a common source of Andro

2016-12-28 23:49:08 6370

原创 kernel编译时出现的error, forbidden warning错误解决办法

两种解决办法 这是因为编译的时候,由于你的代码不符合标准,比如类型转换的时候,你没有强制转化(比如将int型赋值给char型,需要强制转换)或者定义了某些变量或者函数却没有使用.这些都会出现警告,而警告将会被看做错误来处理. 1. 修改自己的代码,将出现的警告全部解决掉.该强制转换的强制转化,该删掉定义了未使用的变量函数删掉或者注释掉. 2. 修改scripts/gcc-wrapp

2016-12-27 17:58:57 7449

转载 vim编辑时insert模式粘贴代码,造成格式混乱

今天遇到用vim编辑代码的时候,在insert模式下,粘贴代码时,比如我想复制如下代码//add by niotongif(a>1){return 0;}结果造成了复制成了//add by niotong//if(a>1){//return 0;//}这是因为vim设置了自动缩进造成的问题,所以如果你需要在insert模式下粘贴代码的话,那么先执行 set paste 这样就不

2016-12-27 17:00:30 7655

原创 shell删除svn未跟踪文件

svn删除未跟踪文件

2016-11-08 23:59:49 1415

原创 视频(一到十四):uboot编译,dnw,环境配置等

tiny4412裸板开发

2016-11-02 23:35:40 418

原创 touchpanel驱动

由于最近面试多次被问道驱动相关的东西,而tp驱动次数比较多,之前也没有怎么做过,但是还是有一些接触的。下面结合实际情况整理以下吧。(本人现有一款友善之臂的4412的开发板),通过adb shell,cat /proc/bus/input/devices,cat /dev/input/event0(根据实际情况分析具体是那个节点),最终确定tp的驱动deriver.name=”ft5x0x_ts”,然

2016-10-20 04:43:53 3683

原创 排序算法

这个是头文件sort.h#define ARRAY_NUM 20int * create_array(void);void random_array(int *);void print_array(int *);void free_array(int *);void swap_element(int *,int *);以下是myarray.c作用是随机产生int型数组,以及打印数组,释放

2016-10-08 02:39:27 252

转载 Android 4.0 添加按键及KEY映射(转载)

键盘映射

2016-09-23 04:01:33 2471

原创 Android编译错误set but not used [-Werror=unused-but-set-variable]

-Werror错误的问题

2016-09-22 18:28:36 3644

原创 Android.mk的问题

最近公司将android从4.4升级为6.0时,调试apk时,由于6.0编译的时候,有时候会生成odex文件,调试的时候odex不方便。所以网上找了下资料,只需在Android.mk中添加LOCAL_DEX_PREOPT := false就可以了,编译之后不生成odex,方便调试。同时还发现来一个十分蛋疼的问题,在4.4版本中使用LOCAL_JNI_SHARED_LIBRARIES := libJ

2016-09-20 23:05:39 448

原创 Android烧录的固件都是怎么生成的

Android固件实质上有哪些东西

2016-09-11 22:51:49 2702

原创 Android.mk编译控制

Android的编译

2016-09-11 22:00:33 1570

原创 代理模式和回调

java实现回调和代理模式

2016-09-11 01:50:09 786

原创 虚拟字符设备驱动的编写

虚拟字符设备的驱动编写

2016-09-10 23:57:02 1193

原创 AIDL示例编程

aidl的简单示例编程

2016-09-10 16:19:15 293

转载 java的命名规则(转载)

Java语言的编程规范

2016-05-04 10:47:38 287

原创 jdk环境配置,以及出现问题的解决办法

jdk环境配置,以及由于环境配置出现问题的解决办法

2016-03-31 14:10:21 796

原创 JNI基本编程

JNI编程基本写法创建android app项目 忽略res/文件夹下的adt生成的没什么用的东西。 编写MainActivity.java,代码如下:public class MainActivity extends Activity implements OnClickListener{ private EditText etValue1 ; private EditT

2016-03-30 20:46:25 359

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除