- 博客(103)
- 收藏
- 关注
转载 NAN、QNAN、 SNAN、 IND、 INF
32位浮点数在机器中的表示按照IEEE的标准是这样的: +------+----------------+-------------------------------+ | 1bit | 8bit | 23bit | +------+----------------+-------------------------------+其中:1bit表示符号位(0表示正,1表示负),8bit表示指数(0~25...
2021-09-20 10:14:38 2638
转载 Android Studio下的APP目录结构介绍
Project Name:工程项目名称Application Name:当前应用发布以后的名字,例如QQ图标下面的名字是“QQ”,就是Application Name.Android Studio工程目录这里写图片描述1、.gradle和.idea这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动编辑。2、app项目中的代码、资...
2019-07-14 10:14:11 595
转载 掌握 Android 系统架构,看这一篇就够了!
Android系统庞大且错综复杂,今天小编将带领大家初探Android系统整体架构,一窥其全貌。引言本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰。Android底层内核空间以Linu...
2019-07-11 13:37:47 950
转载 在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)
原文地址:https://blog.csdn.net/qq_23599965/article/details/80910202方式一、设置HTTP Proxy1. 打开Settings2. 点击HTTP Proxy,选择Manual proxy configuration:设置 Host name 为:mirrors.neusoft.edu.cn设置 Port number 为:80...
2019-06-27 10:56:20 1377 1
转载 git如何合并两个仓库
如何合并两个仓库假设现在有两个repo:repo1,repo2,每个repo中都已经有一堆提交记录了,现在想把repo2中的记录合并到repo1中,命令如下:cd repo1git remote add other ../repo2git fetch othergit checkout -b repo2 other/mastergit checkout mastergi...
2019-05-28 19:26:52 1790
转载 Linux电源管理(五)thermal
thermal子系统概述thermal子系统是内核提供的温控管理框架,一套软件温度解决方案,配合ic内部温度传感器,对ic温度进行管控,保证系统稳定性。thermal系统多用于对ic内部的重点发热模块的功能管控,如cpu、gpu。thermal sensor驱动负责读取硬件温度sensor的温度,并传给thermal 子系统,thermal子系统将根据调控对象的温度,决定是否触发对应的冷...
2019-05-28 16:25:30 2701
转载 Android 键盘键名和键值列表
电话键KEYCODE_CALL 拨号键 5KEYCODE_ENDCALL 挂机键 6KEYCODE_HOME 按键Home 3KEYCODE_MENU 菜单键 82KEYCODE_BACK 返回键 4KEYCODE_SEARCH 搜索键 84KEYCODE_CAMERA 拍照键 27KEYCO...
2019-04-25 09:55:36 1634
转载 Android NFC开发详细总结
Android NFC开发Near Field Communication(NFC) 为一短距离无线通信技术,通常有效通讯距离为4厘米以内。NFC工作频率为13.65 兆赫兹,通信速率为106 kbit/秒到 848kbit/秒。NFC手机相比普通手机来说,短范围无线技术。1.NFC基础用NDEF消息格式来发送和接收NFC数据,从NFC标签中读取NDEF数据是用标签调度系统来处...
2019-04-18 11:12:33 908
转载 最全的Android源码目录结构详解
最全的Android源码目录结构详解Android 2.1|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及generic等基础开发包配置)|-- cts ...
2019-04-17 10:27:51 319
转载 NFC协议分析之nci相关缩写
NCI规范,全称NFC Controller interface,主要的作用是将DH(Device host,主机,在手机中可以看做是手机的AP)和NFCC(可以看做手机中的NFC芯片,如PN544等)之间的消息标准化,让我们的手机CPU不用对每一个厂家的NFC芯片都做适配,只要CPU和NFC芯片都遵守NCI规范就可以了,当然了NFC芯片的驱动还是要适配的。DH:DeviceHost 一...
2019-04-16 17:22:04 1580
转载 Ubuntu 更新 sudo apt-get update升级错误
最近在折腾Ubuntu,安装的是17.04版本的。想安装PHP7.X最新版本,但是要先升级。利用sudo apt-get update命名后,出现了以下报错:忽略:1 http://cn.archive.ubuntu.com/ubuntu zesty InRelease忽略:2 http://cn.archive.ubuntu.com/ubuntu zesty-updates InRelea...
2019-04-11 09:55:49 1385
转载 工作队列(workqueue) create_workqueue/schedule_work/queue_work
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlock-p...
2019-03-22 18:36:01 2013
转载 Android ARM常用的汇编指令合集
原文地址:https://blog.csdn.net/djy1992/article/details/56289978ARM 处理器的指令集可以分为 跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令 六大指令,这里把其它几个指令一起发了出来,可以查看具体的目录,请点击头部左上角一、跳转指令跳转指令用于实现程序流程的跳转,在AR...
2019-03-04 14:47:06 770
转载 常用的ARM汇编指令总结
原文地址:https://blog.csdn.net/zb861359/article/details/810270211、IMPORT和EXPORTIMPORT ,定义表示这是一个外部变量的标号,不是在本程序定义的EXPORT ,表示本程序里面用到的变量提供给其他模块调用的。以上两个在汇编和C语言混合编程的时候用到。2、AREA语法格式:AREA ...
2019-03-01 09:27:11 488
原创 kernel 内存泄漏检测
检测系统是否存在内存泄漏,主要使用 procrank和kmemleak 配置选项1.procrankprocrank查看进程内存工具。有四个选项:VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS - Proportional Set Size 实际使用...
2019-02-28 12:14:24 969
转载 Makefile 常用内嵌函数
一、文本处理函数以下是GNU make内嵌的文本(字符串)处理函数。1 $(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst。函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。返回值:替换后的新字符串。示例:$(subst ee,EE,feet on the street)替换“feet on the street”中的“ee”为...
2019-02-27 17:27:42 398
原创 C语言二维数组作为形参传递
C语言中,把二维数组作为形参进行传递,有以下几种形式:case 1: void output_printf(int **a,int row,int col) 限制条件:形参二重指针,实参也要求二重指针,用于二维数组动态分配case 2: void output_printf(int a[4][6],int row,int col)限制条件: 显示的指定行列case 3: v...
2019-01-22 10:48:38 7701 2
转载 Linux kernel 配置选项
General setup常规设置Cross-compiler tool prefixCONFIG_CROSS_COMPILE交叉编译工具前缀(比如"arm-linux-"相当于使用"make CROSS_COMPILE=arm-linux-"进行编译).除非你想配置后默认自动进行交叉编译,否则不要使用此选项.Local version - append to kernel rel...
2019-01-17 17:14:37 11362
转载 C/C++经典程序
1.输出结果比较1)输出结果:212)输出结果:12。虽然循环只进行了一次,但是对!X++来说,X还是进行了自加运算。2.指针运算输出结果8,8.程序运行时,printf语句是从右往左进行读取,此时ptr指向8.因为*和++的优先级相同,结合顺序是从右到左,所以*ptr++等价于*(ptr++)。3.运算符优先级4.利用位运算实现两个整数的加法运算,请用代码...
2019-01-03 10:34:10 4369
转载 C++经典面试题
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要...
2019-01-03 10:32:18 215
转载 经典C++笔试题目100例
第一部分:C++与C语言的差异(1-18)1、C 和 C++ 中 struct 有什么区别? Protection行为 能否定义函数 C 无 否,但可以有函数指针 C++ 有 可以,默认是private 2、C++中的 struct 和 class 有什么区别?【参考答案】从语法上讲,class和struct做类型定义时只有两点区...
2019-01-03 10:24:29 6519
转载 c++常见面试题30道
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要...
2019-01-03 10:22:46 144
转载 C/C++进程内存的分布
内存分布只要分为五部分:text(文本段),initialize data(数据段),uninitialized data(为初始化数据段),heap(堆),stack(栈),如下图: 1.文本段也叫代码段,是对象文件或内存中程序的一部分,其中包含可执行指令。文本段在堆栈的下面,是防止堆栈溢出覆盖它。,通常代码段是共享的,对于经常执行的程序,只有一个副本需要存储在内存中,...
2019-01-03 09:59:37 244
转载 C++局部变量、全局变量、静态变量(堆、栈、静态存储区)
1 static关键字1.1 隐藏eg://a.c文件中char a = 'A';void msg(){ printf("Hello\n");}//main.c文件中extern char a;printf("%c",a);输出结果:A Hello 所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。a是...
2018-12-03 15:30:42 412
转载 基于wakeup_source的linux内核睡眠机制
转载地址:https://blog.csdn.net/yuzaipiaofei/article/details/50868407一:wakeup_source简介: linux 3.4内核PM使用了wakeup_source来保持唤醒状态,也就是keep awake。之前android一直是基于Linux加入了wake_lock机制来阻止系统休眠,后来Linux 3.4内核加入了wakeu...
2018-04-23 15:45:46 2296
转载 Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比
1. Linux内核suspend状态Linux内核支持多种类型的睡眠状态,通过设置不同的模块进入低功耗模式来达到省电功能。目前存在四种模式:suspend to idle、power-on standby(Standby)、suspend to ram(STR)和sudpend to disk(Hibernate),分别对应ACPI状态的S0、S1、S3和S4。State in LinuxLab...
2018-04-23 10:13:35 6562 1
转载 Linux 信号
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对...
2018-03-13 16:23:22 182
转载 LINUX SIGNAL
在终端使用kill -l 命令可以显示所有的信号。$kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) ...
2018-03-13 16:22:01 206
转载 Linux电源管理(6)_Generic PM之Suspend功能
1. 前言Linux内核提供了三种Suspend: Freeze、Standby和STR(Suspend to RAM),在用户空间向”/sys/power/state”文件分别写入”freeze”、”standby”和”mem”,即可触发它们。内核中,Suspend及Resume过程涉及到PM Core、Device PM、各个设备的驱动、Platform dependent PM、CPU co...
2018-03-06 09:42:37 562
转载 Linux电源管理(4)_Power Management Interface
1. 前言Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。该Interface的代码实现于“include/linux/pm.h”、“drivers/base/power/main.c”等文件中。主要功能是:对下,定义Device PM相关的回调函数...
2018-03-06 09:40:48 406
转载 Linux中__init、__devinit等初始化宏解析和入口函数
一、初始化宏1.1、定义 在内核里经常可以看到__init, __devinit这样的语句,这都是在init.h中定义的宏,gcc在编译时会将被修饰的内容放到这些宏所代表的section,编译器通过这些宏可以把代码优化放到合适的内存位置,以减少内存占用和提高内核效率。 其典型的定义如下:点击(此处)折叠或打开#define __init __section(.init....
2018-02-26 17:32:37 1313
转载 kernel 启动过程之五, initcall 的来由, console 的初始化。
参见include/linux/init.h和vmlinux.lds1)所有标识为__init的函数在链接的时候都放在.init.text这个区段内,在这个区段中,函数的摆放顺序是和链接的顺序有关的,是不确定的。2)所有的__init函数在区段.initcall.init中还保存了一份函数指针,在初始化时内核会通过这些函数指针调用这些__init函数指针,并在整个初始化完成后,释放整个init区段...
2018-02-26 17:30:13 609
转载 Linux动态频率调节系统CPUFreq之三:governor
在上一篇文章中,介绍了cpufreq的core层,core提供了cpufreq系统的初始化,公共数据结构的建立以及对cpufreq中其它子部件提供注册功能。core的最核心功能是对policy的管理,一个policy通过cpufreq_policy结构中的governor字段,和某个governor相关联,本章的内容正是要对governor进行讨论。/*******************
2018-02-07 10:10:54 1046
转载 Linux动态频率调节系统CPUFreq之二:核心(core)架构与API
上一节中,我们大致地讲解了一下CPUFreq在用户空间的sysfs接口和它的几个重要的数据结构,同时也提到,CPUFreq子系统把一些公共的代码逻辑组织在一起,构成了CPUFreq的核心部分,这些公共逻辑向CPUFreq和其它内核模块提供了必要的API,像cpufreq_governor、cpufreq_driver等模块通过这些API来完成一个完整的CPUFreq体系。这一节我们就来讨论一下核心
2018-02-07 10:09:15 335
转载 Linux动态频率调节系统CPUFreq之一:概述
随着技术的发展,我们对CPU的处理能力提出了越来越高的需求,芯片厂家也对制造工艺不断地提升。现在的主流PC处理器的主频已经在3GHz左右,就算是智能手机的处理器也已经可以工作在1.5GHz以上,可是我们并不是时时刻刻都需要让CPU工作在最高的主频上,尤其是移动设备和笔记本电脑,大部分时间里,CPU其实工作在轻负载状态下,我们知道:主频越高,功耗也越高。为了节省CPU的功耗和减少发热,我们有必要根据
2018-02-07 10:06:23 357
转载 linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合
1. 前言按理说,kernel中gpio subsystem和pinctrl subsystem的关系应该非常清楚:pinctrl subsystem管理系统的所有管脚,GPIO是这些管脚的用途之一,因此gpio subsystem应该是pinctrl subsystem的client(也可叫做backend、consumer),基于pinctrl subsystem提供的
2018-01-01 19:23:57 630
转载 linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结
1. 前言本站之前的三篇文章[1][2][3]介绍了pin controller(对应的pin controller subsystem)、gpio controller(对应的GPIO subsystem)有关的基本概念,包括pin multiplexing、pin configuration等等。本文将基于这些文章,单纯地从pin controller driver的角度(屏蔽掉p
2018-01-01 19:22:03 2307 1
转载 Linux内核中的GPIO系统之(3):pin controller driver代码分析
一、前言对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中),主要功能包括:(1)pin multiplexing。基于ARM core的嵌入式处理器一般会提
2018-01-01 19:17:52 577
转载 linux内核中的GPIO系统之(2):pin control subsystem
一、前言在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况:(1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码。例如:在bootloader中建立一个大的table,描述各个引脚的配置和缺省状态。此外,由于SOC的引脚是可以复用的,因此在各个具体的driver中,也可能会对引脚进行的配置。这些工作都是比较繁琐
2018-01-01 19:15:35 447
转载 linux内核中的GPIO系统之(1):软件框架
一、前言作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO ports的章节都是比较简单的,非常适合刚入行的工程师。虽然GPIO子系统相关的硬件比较简单,没有复杂的协议,不过,对于软件抽象
2018-01-01 19:12:14 457
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人