自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

橙子和小果的博客

百分之99的认知,百分之1的代码

  • 博客(30)
  • 资源 (12)
  • 收藏
  • 关注

转载 Android.bp入门指南之浅析Android.bp语法

Android源码编译系列博客: Android.bp你真的了解吗 Android.bp入门指南之Android.mk转换成Android.bp Android.bp入门指南之浅析Android.bp语法 Android.bp正确姿势添加宏控制编译指南 Android高版本P/Q/R源码编译指南 如何在线查看Android源码自带学习文档docs 引言   在前面的章节初始Android.bp里面我们对Android.bp有了一个基本的认识,知道了它是干啥的。算了吗,还是再介绍一遍

2021-10-12 15:50:05 617

转载 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制

最近在学习Binder机制,在网上查阅了大量的资料,也看了老罗的Binder系列的博客和Innost的深入理解Binder系列的博客,都是从底层开始讲的,全是C代码,虽然之前学过C和C++,然而各种函数之间花式跳转,看的我都怀疑人生。毫不夸张的讲每看一遍都是新的内容,跟没看过一样。后来又看到了Gityuan的博客看到了一些图解仿佛发现了新大陆。 下面就以图解的方式介绍下Binder机制,相信你看这篇文章,一定有所收获。 什么是 Binder? Binder是Android系统中进程间通讯(IPC)的一

2021-10-12 15:39:41 238

转载 usb gadget configfs 验证

内核打开对应的宏1、必须打开CONFIG_CONFIGFS_FS和CONFIG_USB_LIBCOMPOSITE的宏,前者为用户空间提供访问配置内核驱动的configfs文件系统,后者提供usb gadget composite框架;2、必须打开UDC(USB Device Controller)的配置,这个是配置硬件控制器。我这里使用CONFIG_USB_CHIPIDEA和CONFIG_USB_CHIPIDEA_UDC;3、如果使用mass storage功能,需要打开USB_CONFIGFS_MA

2020-09-06 09:51:52 2367 2

转载 Android ramdisk,boot,system.img 解包和打包

一、ramdisk介绍ramdisk通过字面意思就大概能理解意思,ram disk虚拟内存盘,将ram模拟成硬盘来使用的文件系统。对于传统的磁盘文件系统来说,这样做的好处是可以极大提高文件访问速度;但由于是ram,所以在掉电后,这部分内容不能保存。ramdisk文件系统是在系统上电后直接从磁盘一次性加载到内存,在整个运行期间都不会有写回操作,所以,任何修改都掉电后丢失。二、ramdisk.img介绍ramdisk.img是编译Android生成的一个镜像文件,最后和kernel一起打包生成boot.i

2020-08-17 00:20:03 2571

转载 linux的initrd机制和initramfs机制之initramfs

下面来介绍一下initramfsinitramfs是编到内核中的一种根文件系统,使用的是cpio格式,处理流程和我们之前介绍的initrd机制的cpio格式的流程几乎一样,只不过这个是编译到内核里的,需要用到时内核会自行解压使用。我们在编内核的时候,可以通过Initramfs source file(s) 来设置需要编入内核的文件系统的路径。General setup —> (就是CONFIG_BLK_DEV_INITRD)[*] Initial RAM filesystem and RA

2020-08-16 23:55:43 639

转载 linux的initrd机制和initramfs机制之initrd

以2.6以后的内核讨论一、概念什么是initrd?initrd的解释是initialized RAM disk,就是启动的时候由uboot来初始化内存,当做disk来使用。在uboot启动的时候,uboot会将存储介质中(如Flash)的initrd文件加载到内存,内核启动时会在访问挂载的根文件系统前先访问该内存中的initrd文件系统。在uboot配置了initrd的情况下,文件系统启动被分成两个阶段,第一阶段先执行initrd文件系统中的"某个可执行文件"(linuxrc或init,下面会讲

2020-08-16 23:54:39 404

转载 Linux--根文件系统的挂载过程分析

前言:本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到[email protected]进行讨论,先行谢过。简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的根文件系统,接下来再去调用do_mount来加载真正的文件系统,并将根文件系统切换到真正的文件系统,也即真实的文件系统。

2020-08-16 23:31:02 428

转载 VCC、VDD、VEE、VSS的区别

电路设计以及PCB制作中,经常碰见电源符号:VCC、 VDD、VEE、VSS,他们具有什么样的关系?一、解释VCC:C=circuit 表示电路的意思, 即接入电路的电压VDD:D=device 表示器件的意思, 即器件内部的工作电压;VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压二、说明对于数字电路来说,VCC是电路的供电电压,VDD是芯片的工作电压(通常Vcc>Vdd),VSS是接地点。有些IC既有VDD引脚又有VCC引脚,说明这种器件自身带有电压转换

2020-08-05 18:46:05 800 1

原创 【Linux中断子系统】中断上下文中为什么不能休眠?

参考1:原帖地址:http://bbs.chinaunix.net/thread-2115820-1-1.html 1.进入中断处理程序--->2.保存关键上下文---->3.开中断(sti指令)--->4.进入中断处理程序的 handler--->5.关中断(cli指令)---->6.写EOI寄存器(表示中断处理完成)---->7.开中断。硬中断:对应于上图的1、2、3步骤,在这几个步骤中,所有中断是被屏蔽的,如果在这个时候睡眠了,操作系统不会收到任

2020-08-03 00:31:49 256

转载 为什么函数调用要用栈实现?

“调用栈”(call stack)既可以指具体实现,也可以指一种抽象概念——由“栈帧”(stack frame)或者叫“活动记录”(activation record)构成的栈。 函数调用的局部状态之所以用栈来记录是因为这些数据的存活时间满足“后入先出”(LIFO)顺序,而栈的基本操作正好就是支持这种顺序的访问。举例说,假如有下面程序:int main() { a(); return 0;} void a() { b();} void b() { c();} voi

2020-08-02 22:27:34 1487

转载 Linux中I2C子系统框架

在linux中的i2c分层结构,也是代码的分层结构。这张图片是从程序调用角度的i2c结构图,其中左侧的/sys和/dev也就是用户访问设备的方式。代码调用层次图有时候代码比任何文字描述都来得直接,但是过多的代码展示反而让人觉得枯燥。这个时候,需要一幅图来梳理一下上面的内容 上面这些代码的展示是告诉我们:linux内核和芯片提供商为我们的的驱动程序提供了 i2c驱动的框架,以及框架底层与硬件相关的代码的实现。  剩下的就是针对挂载在i2c两线上的i2c设备了device,而编写的即具体设备驱动了

2020-07-27 12:21:35 250

转载 linux内核input子系统解析

linux内核input子系统解析时间:2017-01-04作者:华清远见Android、X windows、qt等众多应用对于linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大。但如果你想更灵活的应用它,就需要好好的分析下input子系统了。一、input输入子系统框架下图是input输入子系统框架,输入子系统由输入子系

2020-07-26 00:55:25 145

转载 SEAndroid安全机制框架分析

       我们知道,Android系统基于Linux实现。针对传统Linux系统,NSA开发了一套安全机制SELinux,用来加强安全性。然而,由于Android系统有着独特的用户空间运行时,因此SELinux不能完全适用于Android系统。为此,NSA针对Android...

2020-07-26 00:43:09 246

原创 【Android系统开发】SEAndroid权限解决方法汇总

前言:从android5.x开始,引入严格的selinux权限管理机制,经常会遇到各种avc denied的log。 SEAndroid就是SElinux的增强型版本。确认问题先排查是否由SElinux策略导致的问题串口输入:setenforce 0串口输入:getenforce 0 即进入了permissive1. 强制关闭SEAndroid的方法:1.1 方法一如果是user版本固件,则在bootcmd加入androidboot.selinux =permissive即可如

2020-07-16 12:00:11 644

转载 【Linux中断子系统】学习中断必备的基础知识之GIC控制器

通用中断控制器GIC1.1 GIC简介GIC 的全称是 generate interrupt controller,即 通用中断控制器。它是由 ARM公司 开发的一个 中断硬件IP,主要用于管理外设中断。中断为什么需要管理呢?要解决这个问题,我们需要知道 ARM核CPU 的一些小知识。在我们的 ARM核 上,其实只有 2根 中断线,也就是 IRQ(普通中断) 和 FIQ(快速中断),我们一个SoC 有许多许多个片上外设,这些片上外设如串口UART、I2C总线 等等都需要使用到中断,但是我们只有 2根

2020-07-16 10:30:35 1136

转载 【Linux中断子系统】学习中断必备的基础知识之中断与异常

异常1.1 异常与中断异常 和 中断 这 2 个词相信在各位学习Linux的读者严重不是很陌生。这 2 者在笔者理解来是属于 CPU 的概念,每个 CPU 都会发生 异常 和 中断。异常:在《ARM嵌入式系统开发》中的定义是 需要中止指令正常执行的任何情形。而这样的情形在 ARM 架构中一共有 7 种,分别是 复位、中断请求(irq)、快速中断请求(fiq)、软件中断(swi/svc)、数据访问中止、预取指中止 及 未定义指令。当 CPU 触发异常时,对自行切换到每种异常相应的 模式,然后跳到 异

2020-07-16 10:07:26 275

原创 【Linux中断子系统】疑问记录

IRQ Number 软件虚拟的 标识外设中断HW interrupt ID 硬件上的标识外设中断 1、irq domain干什么用的,为什么要使用它?irq domain就是指中断领域,任何超出这个范围的定义就没有意义了。IRQ domain来描述一个中断控制器(IRQ Controller)所管理的中断源。换句话说,每个中断控制器都有自己的domain。我们可以将IRQ Domain看作是IRQ Controller的软件抽象。这里所说的“中断控制器”,不仅指硬件上实际存在的中断控制器,也可

2020-07-15 22:42:38 324

原创 【Linux中断子系统】HW interrupt ID与IRQ number的关系

下面图片总结了Linux kernel的中断子系统之(二):IRQ Domain介绍的内容。图片来自Linux 中断 —— GIC (中断号映射)博客。可以完整知道内核如何将dts中的中断属性翻译成HW interrupt ID,以及如何将HW interrupt ID与IRQ number关联起来。...

2020-07-15 22:01:46 780

转载 内核中断号必须要跟硬件中断号一致吗

首先说明,答案是否定的,内核中断号可以与硬件中断号不一致,但是这是个无聊的问题。。实用价值不大。但是却可以引起对内核软件中断号与硬件中断号关系的思考。两者的关系我觉得可以从中断的初始化和分发过程来一探究竟。这里就从ARM PPC MIPS 3款主流嵌入式处理器架构的内核代码框架中来分析下他们中断的初始化和分发过程。一 中断的初始化对于中断初始化,在系统启动过程中,这3款处理器架构的内核软件框架中都会有相应的中断初始化函数.内核启动函数start_kernel中会调用init_IRQ来进行中断初

2020-07-15 20:56:43 441

转载 USB具体通讯过程(含枚举过程)

/***********************************************************************USB入门系列:1、USB行业标准介绍2、USB具体通讯过程3、USB中端点详细了解4、USB传输之控制传输......(待补充)********************************...

2020-07-15 19:53:51 2112

转载 Linux(内核剖析):27---中断下半部之(下半部机制的选择、在下半部之间加锁、禁止下半部(local_bh_disable、local_bh_enable))

一、下半部机制的选择在各种不同的下半部实现机制之间做出选择是很重要的。在当前的2.6版内核中,有三种可能的选择:软中断、tasklet和工作队列。tasklet基于软中断实现,所以两者很相近。工作队列机 制与它们完全不同,它靠内核线程实现 从设计的角度考虑,软中断提供的执行序列化的保障最少。这就要求软中断处理函数必须格 外小心地采取...

2020-07-15 18:55:44 2147

原创 【全志R18】Android6.0第三方应用访问dev节点正确配置Selinux策略后,依旧报错 avc: denied

在此做下一个笔记,以前其实也遇到过,没想到这次还是踩坑。由于客户使用第三方APP需要访问/dev/snd/下的声卡节点,因此打开APP后,发现并不能正常访问,使用cat /proc/kmsg | grep avc,报错以下信息:[ 70.119120] type=1400 audit(1554076874.080:6):avc: denied { search } for pid=638...

2019-04-17 18:16:00 1746

原创 【全志A64/R18】Android平台获取Chip ID

最近需要得到A64平台的Chip id或者serial号,然后使用cat /proc/cpuinfo 得到的信息如下:这不坑爹吗, 竟然没有Serial号,查看A64用户手册,也没提到Chipid相关寄存器。。解决办法:在lichee/linux-3.10/drivers/soc/allwinner/sunxi-sid.c中,在sid_chipid_init函数中有读取Chip id和Ser...

2019-04-04 12:01:15 4633

原创 全志Android6.0编译Ubuntu16.04环境搭建

1.【配置jdk1.7】Android6.0需要OpenJDK7,安装OpenJDK7用如下命令。sudo add-apt-repository ppa:openjdk-r/ppasudo apt-get updatesudo apt-get install openjdk-7-jdk(1).配置环境变量,在可以直接在/etc/profile下或者/etc/environm...

2018-07-17 11:46:47 3047

原创 全志OTA远程升级服务器搭建注意事项

目前是按照文档《OTA服务器端配置.pdf》验证OK有以下注意事项:资料下载地址:https://download.csdn.net/download/tsb151/10277863开发坏境:window7 32bit运行系统:rhel-server-6.2-i386-dvd.iso运行环境:VMware 10PS:在Redhat Enterprise Linux AS 6.2 系统上进行是Ok,...

2017-07-27 15:13:37 3521

原创 Android系统修改 设置->关于平板电脑(手机)->状态信息中显示的SN序列号

Android系统修改 设置->关于平板电脑(手机)->状态信息中显示的序列号1、本文全志A64为例,platform -> sun50iwp1   kernel -> linux-3.10  uboot: uboot-2014.07---------------------------------kernel层-------------------------------

2017-04-22 11:14:42 7331

原创 常用Linux下查找替换命令

find命令  find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'  #查找替换当前目录下包含字符串并进行替换  find -name '*.txt' | xargs perl -pi -e 's|智慧乡村|北部山区|g'  #递归查找替换  find . -type f -name

2017-02-27 14:26:07 1213

原创 linux下驱动编译报错EEROR: "***" [***.ko] undefined! 的错误原因和解决办法

出现错误的原因:在编译驱动出现这种ERROR”xxx函数” [*.ko] undefined!错误一般是xxx函数找不到,或者说没定义,内驱动编译的时候相关的函数没有找到! 有以下解决方法: 1.定义的相关函数的头文件没包含或者是路径不对。 2.定义相关函数或者用EXPORT_SYMBO

2017-01-12 13:18:30 10130

原创 linux下更改printk的打印级别和优先级

1.查看当前控制台日志信息的打印级别: $ cat /proc/sys/kernel/printk 4 4 1 7 分别对应:当前的日志级别、未明确指定日志级别时默认消息级别、最小允许的日志级别、引导是的默认日志级别。 2.若需要需改当前的日志打印日志级别为7,则修改打印的命令如下: echo 7 > /proc/sys/kernel/printk

2016-12-20 17:46:07 6618

原创 全志R16平台Android下添加自定义按键

Board:全志R16 SDK:Android KitKat、linux-3.41.先在linux-3.4/inlcude/linux/input/h添加自定义按键#define SOCHIP_EXT1 0x2e8 该键值最好不要跟系统的键值冲突,然后编写linux下的key driver代码。#include <linux/module.h>#include <linux/init.h>

2016-12-19 21:26:33 3856

A40i调试信息打印由uart0改uart3

全志A40i调试信息打印由uart0改uart3

2022-08-30

eMMC5.1协议规范spec-JEDEC

JEDEC下载的emmc5.1协议规范,需要了解emmc5.1规范的下载吧。

2018-07-12

JDK1.6 linux-x64版本

此jdk为oracle版本,有两个文件jdk-6u45-linux-x64.bin和jdk-6u29-linux-x64.bin,两个随便使用一个。 搭建Android4.4编译环境需要的可下载。

2018-07-11

SHT20温湿度传感器驱动

内核版本:linux-3.10,采用input子系统的polling模式上报数据,全志A64平台验证无问题

2018-05-09

Android版本Google输入法预装32bit&64bit;

GooglePinyin输入法 Android系统预装32bit版本和64bit版本

2018-04-18

全志OTA服务器搭建相关资料

全志一整套OTA服务器客户端搭建资料

2018-03-09

SoureInsigt4.0 SublimeText3主题

SoureInsigt4.0 SublimeText3主题,直接导入即可使用,具体方法: Options -->Preference --> Colors & Fronts -->Themes -->import

2017-12-08

解决全志A64 Android6.0第三方应用无法接收到开机广播补丁

解决全志A64 Android6.0v2.1第三方APP无法接收到开机广播的补丁

2017-12-01

apds993x系列linux驱动(全志平台),适用于apds9930,apds9931.

apds993x系列(apds9930,apds9931)驱动是在全志A64 linux-3.10平台上使用,其他平台同样可以移植。

2017-10-30

GNU C库源码

GNC C库源码,想要研究标准C库的都可以看~

2017-06-20

四线(IIC)OLED驱动STM32驱动程序

STM32模拟IIC驱动四线OLED显示屏。

2016-07-17

匿名科创-瑞萨飞控资料包-v1.0.rar

匿名科创-瑞萨飞控资料包,瑞萨最飞控的下载吧

2016-01-15

STM32编码器模式库函数版

STM32编码器模式库函数版,制作平衡车喜欢用库函数开发的车友的福音,内带详细注释。

2016-01-15

空空如也

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

TA关注的人

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