- 博客(147)
- 收藏
- 关注
原创 新员工代码提交流程--代码编译入门(repo && git)
常用指令: 查看A文件是谁最近修改的:git log A (会打印出commit号) 查看某条具体提交修改的内容:git show commit号 查看当前文件某一行是谁修改的:git blame 文件名 回退本地代码到哪一笔提交之前:git reset --hard commit号回退代码的方法:对于一个Git库,回退...
2020-02-27 00:19:11
1772
1
原创 Android系统中如何添加权限-----以TP为例
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
2017-08-28 16:10:42
2495
转载 Android进程间通信(IPC)机制Binder简要介绍和学习计划
在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。《Android系统源代码情景分析》一书正在进击的程序员网(http://0xcc0xcd.co
2017-08-23 17:09:23
596
原创 andrid分层的概念------native层
Android的分4层,java应用程序,java框架,本地框架和java运行环境,Linux内核空间Java应用程序无需过多解释,基本可以理解为各个App,由Java语言实现。Java框架层(系统服务)就是常说的Framework,这层里东西很多也很复杂,比如说主要的一些系统服务如ActivityManagerService、PackageManagerService等,我们编写的An
2017-08-23 16:11:40
20274
原创 各编译工具说明
不完整①、arm-linux-*和 arm-elf-*在基于ARM的嵌入式系统开发中,常常用到交叉编译的GCC工具链有两种:arm-linux-*和 arm-elf-*,两者区别主要在于使用不同的C库文件。arm-linux-*使用GNU的Glibc,而arm-elf-*一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统的开发的C库newli
2017-08-20 11:26:14
423
原创 Android.mk简单分析
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, src)LOCAL_PACKAGE_NAME := SettingsLOCAL_CERTIFICATE := platformin
2017-08-20 11:12:30
423
转载 从用户态的open到内核驱动实现流程
问题来源:在讲授Linux初级驱动的时候,我发现困惑很多同学的是不真正理解从应用层到我们自己所写的驱动层的调用过程,所以写此文章来大概描述。首先我们知道,在我们目前的Linux系统中,我们大概共约300左右个系统调用,其中syscall_table.S列出了所有的系统调用表。在本文件中记录了所有当前平台系统中所提供的系统调用表,其中第五项就包括:.long sys_
2017-08-14 17:47:50
1234
原创 ANDROID系统如何在ADB下读取GPIO口的状态 【面试】
[DESCRIPTION] 开机之后如何获取和调试GPIO的状态 [SOLUTION] To show GPIO status: cat /sys/devices/virtual/misc/mtgpio/pin To change GPIO status: echo \"-w=99:0 1 0 0 0 1 0\
2017-08-14 17:18:56
6666
转载 Linux内核之进程管理
Linux内核之进程管理支持线程的计算机系统里面,进程作为资源分配的基本单位而存在,线程作为调度的基本单位而存在.线程仅拥有必不可少的一些资源,如:一组寄存器,堆栈信息等等和其他线程共享同一个进程的所有资源.所以,在同一个进程的线程切换时不需要大量的保存和恢复工作,同时由于共享同一个存储空间,不需要更新快表TLB,提高了系统性能.1. 线程的实现方法有三种用户级线程;内核级线程
2017-08-14 10:24:47
412
转载 arm linux kernel 从入口到start_kernel 的代码分析
arm linux kernel 从入口到start_kernel 的代码分析本文针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数.我们当前以linux-2.6.19内核版本作为范例来分析,本文中所有的代码,前面都会加上行号以便于和源码进行对照, 例: 在文件init/main.c中:00478: asmlinkage
2017-08-14 10:23:59
501
转载 arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵
arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵转载地址:http://blog.youkuaiyun.com/skyflying2012/article/details/41344377前段时间移植uboot仔细研究过uboot启动过程,最近耐不住寂寞,想对kernel下手。Uboot启动过程分析博文连接如下:http:
2017-08-14 10:15:07
1529
原创 物理地址相关说明
steppingstone中的4K代码一个很重要的任务是,将nandflash的最前面区域的bootloader拷贝到SDRAM中去。那么拷贝到SDRAM中的bootloade代码的物理起始地址是多少,这个起始地址是程序员能控制的吗?如果能,怎么控制?针对这个问题有不同的说法:1、起始地址要看你mmu的配置,不同处理器都不一样的。地址肯定可以控制,用链接脚本控制,你可以查查链接
2017-08-14 10:08:53
1055
原创 关于ProjectConfig.mk文件相关配置编译名字长度规定
谷歌本身对Android内部相关镜像文件头有字节的规定限制。近期发现在项目文件rlk_projects\cxlite_z3713_a1_zmvf#####\ProjectConfig.mk中:CUSTOM_BUILD_VERNO = CY-CxAir-z3713-L 工具校验的一个编译版本名,L没有显示出来,导致使用工具加载代码时校验匹配出错。 最后发现该长度在文件booti
2017-08-11 11:50:27
883
转载 深入讲解Android Property机制
转载至:http://blog.youkuaiyun.com/codefly/article/details/483792391 概述 android系统(本文以Android 4.4为准)的属性(Property)机制有点儿类似Windows系统的注册表,其中的每个属性被组织成简单的键值对(key/value)供外界使用。 我们可以通过在adb
2017-08-08 15:24:38
552
转载 wait_event_interruptible 使用方法
1. 关于 wait_event_interruptible() 和 wake_up()的使用 读一下wait_event_interruptible()的源码,不难发现这个函数先将 当前进程的状态设置成TASK_INTERRUPTIBLE,然后调用schedule(), 而schedule()会将位于TASK_INTERRUPTIBLE状态的当前进程从runqueue 队列
2017-08-07 17:55:09
5364
原创 MTK平台分区回读
有时遇到各种开机卡死或重启问题,往往我们依靠分区回读的方法来验证是否为软件问题。在MTK平台我们利用flash_tool工具来回读分区,简单归结为一下步骤。1、首先选择Download一栏选择对应的项目软件【软件不一定与出问题软件对应】2、选择Readback-------->选择Add------>选择对应的Start Address和Length,该数值请查看out\target\
2017-08-07 17:27:50
8972
转载 lk启动流程详细分析(高通)
转载请注明来源:cuixiaolei的技术博客 这篇文章是lk启动流程分析(以高通为例),将会详细介绍下面的内容:1).正常开机引导流程2).recovery引导流程3).fastboot引导流程4).ffbm引导流程5).lk向kernel传参 start---------------------------------------- 在bo
2017-08-02 21:23:12
4020
1
转载 android文件系统挂载分析(1)---正常开机挂载
"android"系列分为三部分:1.正常开机挂载2.encryption3.dm-verity 我们知道android有很多分区,如"system","userdata","cache",他们是何时挂载的?如何挂载的?这个系列的文章进行分析。这里介绍第一部分,android手机正常开机各分区的挂载。这里我们以mtk平台进行分析,高通与mtk差别不是很大。 我们
2017-08-02 21:20:15
1810
转载 深入 kernel panic 流程
注:该文章转载至:http://blog.youkuaiyun.com/forever_2015/article/details/53235716?locationNum=6&fps=1一、前言 我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic
2017-07-24 16:55:29
1847
原创 看门狗深度解析
往往我们发现的HWT看门狗问题:都是CPU间共享资源互锁造成的(即R 状态死锁),所以后续当发现HWT问题时,不要只是关注具体直接导致HWT对应的那个CPU核的堆栈信息,我们必须要查看每一个CPU堆栈信息。---------------其实往往此种问题是由于其它cpu核访问资源异常时死在了锁里,而等待获取资源的cpu核(直接报问题的核)由于长时间不能等到锁被释放造成被看门狗复位。死锁概念
2017-07-21 17:04:35
1920
转载 linux设备驱动中重要的3个数据结构 &&Linux设备驱动模型几个基本数据结构模型:kobject,kset,subsystem
大多数基本的驱动操作涉及到内核的3个重要数据结构:file_operations,file 和inode。我们已经拥有一些设备号,但是如何将其与驱动操作连在一起呢?file_operations结构就是这个桥梁,这个结构体定义在Linux/fs.h>中,它是一群函数的指针集合,每个所打开的文件都存在一个f_op指针指向file_operations结构体,里面的操作大部分主要完成系统调用,如o
2017-07-18 16:33:11
1021
转载 Android中Log信息的输出方法
共两篇文章,第一篇讲述了如何在程序中输出Log信息,第二篇详细的分析了Log信息的输出机制。 下面是第一篇(转自:http://blog.163.com/binghaitao@126/blog/static/3383532520099309366435/) 1:在编译so文件的c或cpp文件之前中加入以下代码,就可以在Android中的log显示日志内容 #incl
2017-07-13 11:03:47
5846
原创 项目加载编译实质性流程
目录一、Android 编译大概过程...21、执行命令$source build/envsetup.sh导出环境变量,加载编译用到的环境变量,添加产品相应配置 22、执行source mbldenv.sh构建环境文件配置...23、然后执行命令$lunch选择相应的产品,列出所有系统编译项,让用户选择编译平台...24、最后执行编译Android系统de
2017-07-12 19:34:01
956
转载 Git 版本管理
安装-Git版本管理Git官网安装说明Linux 系统安装# 如果你的 Linux 是 Ubuntu:$ sudo apt-get install git-all# 如果你的 Linux 是 Fedora:$ sudo yum install git-all1234如果是其他linux版本,可以直接通过源码安装。先从git官网下载源码,然后解压,依次输入:./con
2017-07-07 17:17:07
509
原创 nvram
NVRAM是什么:NVRAM 非易失性随机访问存储器 (Non-Volatile Random Access Memory),是指断电后仍能保持数据的一种RAM。如果通俗地解释非易失性存储器,那就是指断电之后,所存储的数据不丢失的随机访问存储器。之所以加如此的定义,是因为:1.与此对应的随机访问存储器(Random Access Memory,RAM)包含SRAM和DRAM
2017-07-03 10:40:32
7299
转载 eMMC之分区管理、总线协议和工作模式
http://blog.youkuaiyun.com/u013686019/article/details/66472291一、eMMC 简介eMMC 是 embedded MultiMediaCard 的简称。MultiMediaCard,即MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。而eMM
2017-07-03 10:16:37
2155
原创 LINUX内核目录文件说明以及配置并编译内核的方法
在下载内核前,我们应该讨论一些重要的术语和事实。Linux内核是一个宏内核,这意味着整个操作系统都运行在内核预留的内存里。说的更清楚一些,内核是放在内存里的。内核所使用的空间是内核预留的。只有内核可以使用预留的内核空间。内核拥有这些内存空间,直到系统关闭。与内核空间相对应的还是用户空间。用户空间是内存上用户程序拥有的空间。比如浏览器、电子游戏、文字处理器、媒体播放器、壁纸、主题等都是放在内存里的用
2017-06-09 10:28:26
48314
3
原创 存储【1】 内存 POM RAM 理解
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
2017-06-05 16:10:21
1840
转载 CPU和内存之间——地址映射(知识总结)
转载:http://blog.youkuaiyun.com/csulimao/article/details/9275909CPU和内存之间有三根总线,地址,数据,控制总线。这是在说地址之间的问题。CPU和内存之间用地址来查找数据,但是两者的地址并不总是一样的,CPU产生的是逻辑地址,而内存的就是物理地址。通常都是不一样的,所以需要地址映射。正好是从编程人员的角度看,(不考虑解释执行)程序总是
2017-06-02 21:28:20
8801
原创 ARM 看门狗机制 [包括MTK] 【2】----[FAQ14332]SYS_LAST_KMSG里的hw_status和fiq step的含义
oooooooooooooooooooooooooooooooooooooooooo
2017-05-27 17:24:58
1812
原创 LINUX系统以及ANDROID 平台log信息输出级别设置 [MTK]
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
2017-05-25 16:27:58
14741
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人