- 博客(62)
- 收藏
- 关注
原创 汇编循环打印
154 mov r9, #4000 //循环次数155 mov r6, #0 //初始化156 ldr r7, =0x5A06001C //初始化uart157158 4:159 mov r8, #'D' 160 str r8, [r7]161 add r6, r6, #1 //i += 116...
2020-03-23 16:30:30
394
原创 kernel3.10 内存预留和ioremap分析
3.10内核调试:/sys/kernel/debug/memblock/memory 查看内核分布/sys/kernel/debug/memblock/reserver 查看内核预留内存o------------------------------------------------------------=====>>arch/arm/mm/ioremap.c在...
2019-04-23 17:01:23
536
原创 汇编打印寄存器值
有时在调试时,需要讲寄存器值打印出来,但是在汇编中,不能直接调用打印函数。只能利用汇编直接往串口输出。特记录如下: mov r9, r2 ldr r8, =0x02020040 //串口地址 mov r7, #'\n' str r7, [r8] // 0-3 and r9, r9, #15...
2019-04-17 12:37:29
3775
转载 arm mmu管理
当进行一次MMU的translation过程时,不管是通过tlb查到的translation table descriptor,还是通过TTW查到的translation table descriptor,都会返回两种信息,一种是想要查询的物理地址,一种是这个物理地址的一些属性。这些属性被分成三类,A9芯片的mmu知识---Information returned by a translat...
2019-02-22 18:37:24
1390
转载 androidstudio2.3 jni cmake 链接外部库问题
android studio 2.2之后出的CMake 让jni的编写方便了很多,使用CMake让我们不在烦恼函数的定义,以前我们需要通过javah命令生成,jni规定的函数名,现在不需要了。他也让我们可以很方便的编写c/c++代码,自动打成so。总体来说,让我们的jni编写变得更简单。但是网上关于CMake的使用翻来覆去也就是官网的那些。所以我就记录一下自己在使用CMake进行jni编译过程中遇
2017-09-12 14:01:18
1288
转载 MTK flashtool 在14.04上不能使用问题
1、驱动配置: 先配置adb驱动:vim /etc/udev/rules.d/53-Android.rules 然后配置flash_tool的,vim /etc/udev/rules.d/53-MTKinc.rules驱动重新加载: sudo chmod a+rx /etc/udev/rules.d/53-android.rules
2017-07-06 18:40:30
1815
转载 linux 设备驱动之平台总线
platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver。Linux 2.6的设备驱动模型中,把I2C、RTC、LCD等都归纳为platform_device。总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。Linux2.6
2016-11-04 16:09:07
428
转载 linux 内核进程间通信semaphore和mutex
两者最大区别:信号量可以允许多个线程进入临界区,而互斥体只允许一个线程进入临界区。本贴将描述信号量与互斥体之间的细微区别以及在实际的代码设计中如何使用它们。信号量include/linux/semaphore.h:struct semaphore { spinlock_t lock; unsigned int
2016-11-04 15:33:41
500
转载 内核通知链-notifier_block
大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对应的函数就会被执行。所以对于通知链表来说
2016-11-03 17:24:54
832
原创 Android7.0 编译问题
AndroidN编译需要用到java1.8以上版本.第一次出错:1 warning generated.[ 31% 10040/31772] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dexFAILED: /bin/b
2016-11-01 20:19:35
7611
转载 android build.prop属性
本文简要分析一下build.prop是如何生成的。Android的build.prop文件是在Android编译时刻收集的各种property(LCD density/语言/编译时间, etc.),编译完成之后,文件生成在out/target/product//system/目录下和./obj/ETC/system_build_prop_intermediates/build.prop。在Andr
2016-10-13 11:25:07
420
原创 git 操作
#同步远程分支git fetchgit checkout -b local_branch-name origin/branch_name
2016-09-07 20:27:23
465
原创 python 关于excel 操作
在使用python操作excel文件时一些心得: python 通过导入 xlwt 和xlrd 两个库来对excel表格进行操作. xlwt 负责写数据 xlrd 负责读数据 如果希望往一个以存在的excel表格中添加数据. 则需要用到xlutils.copy库,该库用于提供一些xlrd打开的工作薄没有的函数. 如果没有该库则需要安装: 下载:xl
2016-09-06 23:00:14
330
原创 git使用
//如果我们在服务器上创建一个分支,那么通过以下的步骤来同步分支//首先clone一个projectgit clone xxxxxx//git地址cd foldergit branch -a //察看远程分支,git checkout branch-name //切换到指定分支//将需要push的文件拷贝到这个工程目录下git add --allgit commit
2016-01-18 18:15:01
327
原创 ubuntu 编译openpts
在ubuntu12.04和14.04上编译openpts,遇到了很多无语的问题。现将一些过程记录。1、获取源码 我的源码是openpts-0.2.6版本, http://openpts.osdn.jp/2、解压源码包 tar xvf openpts-0.2.6.tar.gz3、根据README来编译 1)、安装必要的包。 sudo ap
2015-11-12 21:39:07
1069
原创 利用split直接生成boot.img
在开发过程中,特别是android的Linux内核开发过程中,需要发福修改kernel ,而每次调试都需要重新将boot.img 重新编译,会比较麻烦。那么我们可用直接用工具来生成boot.img。1、需要一个队boot.img解包的工具,我在工作中用的spilt这个工具。下载地址:链接: http://pan.baidu.com/s/1mgrQl4k 提取密码: jk7x
2015-11-09 14:41:37
1053
转载 内核自旋锁API
1.1 关于自旋锁API 内核中,已经封装好了很多的自旋锁api,我们只需要在内核的开发当中,调用这些API即可。1)、spin_lock_init(x) 该宏用于初始化自旋锁x。自旋锁在真正使用前必须先初始化。该宏用于动态初始化。2)、DEFINE_SPINLOCK(x) 该宏声明一个自旋锁x并初始化它。该宏在2.6.11中第一次被定义,在先前的
2015-11-09 10:22:04
598
转载 menuconfig菜单选项
Linux内核裁减(1)安装新内核: i)将新内核copy到/usr/src下, #tar xzvf linux-2.6.38.4.tar.gz -----解压缩. ii) 将名为linux的符号链接删掉,这是旧版本内核的符号链接. #ln -s linux-2.6.38.4 linux ------建立linux-2.6.38.4的符号链接linux. (2)设置内核. # cd /
2015-10-29 14:41:05
7777
1
转载 pc与Android进行USB通信
需求: 1.一个android端的service后台运行的程序,作为socket的服务器端;用于接收Pc client端发来的命令,来处理数据后,把结果发给PC client 2.PC端程序,作为socket的客户端,用于给android手机端发操作命令 难点分析: 1.手机一定要有adb模式,即插上USB线时马上提示的对话框选adb。好多对手机的操作都
2015-10-20 13:11:01
3806
1
转载 内存管理之伙伴算法
Buddy算法的优缺点:1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是该算法中,一个很小的块往往会阻碍一个大块的合并,一个系统中,对内存块的分配,大小是随机的,一片内存中仅一个小的内存块没有释放,旁边两个大的就不能合并。2)算法中有一定的浪费现象,伙伴算法是按2的幂次方大小进行分配内存块,当然这样做是有原因的,即为了避免把大的内存块拆的太碎,更重要的是使分配和释放过程迅
2015-10-14 09:23:32
563
转载 create_proc_read_entry中函数的说名
原型:struct proc_dir_entry *create_proc_read_entry (const char *name, mode_t mode, struct proc_dir_entry *base, read_proc_t *read_proc, void *data);说明:name : 要创建的文件名;mode : 文件掩码,为
2015-09-23 10:11:14
530
转载 nexus5 博通芯片WIFI详解 (4)
1 IOCTL的调用逻辑之所以要分析这个,是因为上层wpa_supplicant和WIFI驱动打交道的方式,多半是通过ioctl的方式进行的,所以看看它的调用逻辑(这里只列出其主要的调用逻辑): 上面便是用户ioctl调用的流程图,它最终分为两条线即有两种支持,选择那一条或两条都选(个人感觉最好选第2条线,因为它最后也是会调用到相应的函数的,而且还有其它更
2015-09-17 11:38:36
1436
转载 nexus5 博通芯片WIFI详解 (3)
1 WLAN驱动结构介绍1.1 SDIO驱动在drivers/mmc下面是mmc卡,SD卡和SDIO卡驱动部分,其中包括host驱动,card驱动和core部分,由于网络接口卡挂接在SDIO总线上,所以在此之前我们先看一下SDIO的驱动结构。其驱动在drivers/mmc目录下的结构为: |-- mmc| |-- card
2015-09-17 11:35:59
2107
转载 nexus5 博通芯片WIFI详解 (2)
1 Wifi模块解析和启动流程1.1 框架分析WIFI整体框架如图所示:首先,用户程序使用WifiManager类来管理Wifi模块,它能够获得Wifi模块的状态,配置和控制Wifi模块,而所有这些操作都要依赖 Wifiservice类来实现。 WifiService和WifiMonitor类是Wifi框架的核心,如图所示。下面先来看看Wif
2015-09-17 11:34:43
1526
转载 nexus5 博通芯片WIFI详解 (1)
1 WLAN技术WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。
2015-09-17 11:33:01
1923
转载 设备驱动之mmap函数
from: http://blog.youkuaiyun.com/mirkerson/article/details/8232422http://blog.chinaunix.net/uid-25906157-id-1754499.htmlhttp://blog.youkuaiyun.com/bg2bkk/article/details/89465621.mmap系统调用v
2015-09-14 18:21:12
462
转载 ubuntu 拓展swap分区
有时由于swap分区大小不够,比如编译android5.0时,就会出现[out/target/product/generic/obj/SHARED_LIBRARIES/libwebcore_intermediates/LINKED/libwebcore.so] Error 1需要进行拓展:1.首先用命令free查看系统内 Swap 分区大小。 free -m
2015-08-28 10:18:35
481
转载 关于内核的xxx_initcall
在内核代码里到处都能看到这个subsys_initcall(),而它到底是干什么的呢?让我们来揭开它的神秘面纱。 先来看一段代码:---------------------------------------------------------------------include/linux/init.h174 /*175 * Early initcalls run b
2015-08-13 15:00:34
526
转载 android ndk打印log信息
第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog第二步:在要使用LOG的cpp文件中加入:[cpp] view plaincopy#include #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__)
2015-08-10 09:24:51
380
原创 编译.ko的简单Makefile实例
需要在kernel层编译好的.ko文件,然后放到Android文件系统中进行编译,上层会在适当的时候调用。需要准备源文件:我这里systest.c需要自己编写一个makefile 然后执行make就可以编出systest.ko文件obj-m := systest.o
2015-07-31 13:53:19
3266
转载 /proc/loadavg详解
shell@mako:/ # cat /proc/loadavg 1.22 0.89 0.96 2/748 9036这里的平均负载也就是可运行的进程的平均数前三个值分别对应系统在5分钟、10分钟、15分钟内的平均负载第四个值的分子是正在运行的进程数,分母是进程总数,最后一个是最近
2015-07-30 16:14:11
2718
转载 __setup解析
__setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下:#define __setup(str, fn) \__setup_param(str, fn, fn, 0)#define __setup_param(str, unique_id, fn, early) \static char __setu
2015-07-29 09:12:48
373
转载 CPU策略学习
1 cpu信息查看android应用设置界面,关于菜单下可以查看手机或者平板android设备的信息,这些信息都是内核预留出来的接口作为内核开发人员,可以直接在串口调试查看到这些信息#cd /sys/devices/system/cpu/在这个目录下有CPU的所有信息,如果是双核设备,会有cpu0 cpu1,cd进去,就可以看到很多信息了2 c
2015-07-28 10:32:07
342
转载 setsockopt 用法详解
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,
2015-07-27 17:24:55
865
转载 延时工作队列INIT_DELAYED_WORK
如何使用queue_delayed_work函数#include #include #include #include #include #include #include #include struct workqueue_struct *test_wq; struct delayed_work
2015-07-15 13:49:10
6275
转载 android 系统怎么将修改好的kernel打包成boot.img
「Android」Huawei U8825d(G330d)内核编译过程实录1. 下载内核源代码,放到任意地方(建议放在Ext4格式的盘符上)https://github.com/derekhe/huawei-g330d-u8825d-kernel2. 下载后解压,打开里边HOW-TO-BUILD,查看如何进行编译第一步:去Google查看相关编译过程,对于我
2015-07-01 08:51:33
7631
转载 解决Ubuntu上无法进行fastboot devices
1、先将环境配置好1. #lsusbBus 002 Device 004: ID 18d1:9018 Google Inc. 2.vi /etc/udev/rules.d/51-android.rulesSUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="9018",MODE="0600"# chmod 777
2015-06-30 10:06:33
5727
转载 traceview简介和使用
TraceView界面现来看一下整个界面的图,整个界面包括上下两部分,上面是你测试的进程中每个线程的执行情况,每个线程占一行;下面是每个方法执行的各个指标的值上面一部分是你测试进程的中每个线程运行的时间线,下图中可以可以看到,主要只有一个main线程在执行,因为我滑动了一下列表,main线程(UI线程)正在进行绘制View呢~~然后我点击了序号为133的一个方法io.bxbxbai.a
2015-06-29 10:16:53
338
转载 ftrace介绍和使用
Ftrace 是一个内核中的追踪器,用于帮助系统开发者或设计者查看内核运行情况,它可以被用来调试或者分析延迟/性能问题。最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程。如今 ftrace 已经成为一个framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能。一、Ftrace 的内核配置ftrace 相关
2015-06-29 10:02:28
1251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人