自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 SELinux策略语言--编写TE规则

SELinux策略大部分都是一套声明和规则一起定义的类型强制TEType Enforcement策略一个定义良好、严格的TE策略可能包括上千个TE规则TE规则数量的巨大并不令人惊奇因为它们表达了所有由内核暴露出的允许对资源的访问权这就意味着每个进程对每个资源的访问尝试都必须至少要有一条允许的TE访问规则如果我们仔细思考一下现代Linux操作系统中进程和资源的数量就明白为什么在策略中有那么多的TE规则了。neverallow规则也支持通配符来代表所有的类型求补算操作符~也表示所有的类型除了明确列出的之外。

2023-08-02 21:09:29 591

转载 [Linux 基础] -- 45个 Git 经典操作场景,专治不会合代码

Git 对于大家应都不太陌生,熟练使用 git 已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree 这样牛 X 的客户端工具,使得合并代码变得很方便。但找工作面试和一些需彰显个人实例的场景,仍然需要我们掌握足够多的 git 命令。 下面我们整理了 45 个日常用 git 和代码的经典操作场景,基本覆盖了工作中的需求。我刚刚提交了什么? 如果你用 git commit -a 提交了一次变化(changes),而你又不确定到底...

2022-04-08 16:44:04 476

转载 [Linux 驱动] -- Linux 字符设备驱动结构(一)—— cdev 结构体、设备号相关知识解析

一、字符设备基础知识1.1、设备驱动分类 Linux 系统将设备分为 3 类:字符设备、块设备、网络设备。使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和 LED 设备等。 块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U 盘和 SD 卡等。 每一个字符设...

2021-12-23 10:15:15 554

转载 [Linux 基础] -- Linux v4l2 框架分析

本文转自: Linux v4l2框架分析背景 说明:Kernel 版本:4.14; ARM64 处理器,Contex-A53,双核; 使用工具:Source Insight 3.5,Visio。一、概述V4L2(Video for Linux 2):Linux内核中关于视频设备驱动的框架,对上向应用层提供统一的接口,对下支持各类复杂硬件的灵活扩展; V4L2 框架,主要包括 v4l2-core、media framework、videobuf2 等模块,这也是本文将...

2021-12-20 15:00:23 1257

转载 [Linux 基础] -- eMMC 小总结

通俗的来说,eMMC = NAND 闪存 + 闪存控制芯片 + 标准接口封装。 本文大致做下面几点小结:一、MMC 与 Host 之间的连接 连接由下图可见:二、eMMC 和 NAND Flash 与 Host 的连接比较NAND Flash 直接接入 Host NAND Flash 直接接入 Host 时,Host 端通常需要有 NAND Flash Translation Layer,...

2021-12-09 13:52:28 2802

原创 [Linux 基础] -- Linux 内核 Makefile 分析

本文是对<嵌入式Linux应用开发完全手册> 16.2.2章节的总结,具体请查看书籍.配置文件 .config 中定义了一系列的变量, Makefile 将结合它们来决定哪些文件被编进内核, 哪些文件被编成模块, 涉及哪些子目录. 顶层 Makefile 和 arch/$(ARCH)/Makefile 决定根目录下哪些子目录, arch/$(ARCH) 目录下哪些文件和目录将被编...

2021-12-08 14:48:33 437

原创 [Linux 基础] -- 在 Linux 驱动中使用 gpio 子系统

在Linux驱动中使用gpio子系统 - 黄树超 - 博客园 (cnblogs.com)https://www.cnblogs.com/schips/p/linux_subsystem_using_gpio_ss.html

2021-12-08 10:02:21 654

原创 [Linux 基础] -- struct class 详细分析

struct classstrcut class { const char *name; struct module *owner; struct class_attribute *class_attrs; const struct attribute_group **dev_groups; struct kobject *dev_kobj; int (*dev_uevent)(struct device *dev, struct .

2021-12-08 10:00:07 373

转载 [Linux 基础] -- udev 和 rules 使用规则

前言:本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备的用户受益匪浅,这些用户包括 Linux 最终用户、设备驱动开发人员、设备测试人员和系统管理人员等。概述:Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0,eth1,sda,sdb 等等。通过观察这些设备的内核设备名称,用户通常能知道这些

2021-12-07 13:51:45 13989

转载 [Android 基础] -- Android 硬件抽象层(HAL)深入剖析(三)

android hal

2021-11-30 17:08:13 189 1

转载 [Android 基础] -- Android 硬件抽象层(HAL)输入剖析(二)

hal

2021-11-30 16:21:02 265

转载 [Android 基础] -- Android 硬件抽象层(HAL)深入剖析(一)

HAL:硬件抽象层

2021-11-30 15:03:40 966

原创 [Android O] [RK3399] -- Vendor Storage 功能探究

前言: Vendor storage 被设计用来存储 SN,MAC,LAN,BT 等 vendor data。 特征:唯一的访问 ID; 可靠的数据验证; 掉电不会丢失; 系统启动各个阶段都可访问; PC 端可读写; Kernel 可读写; Linux Application 可读写; 如下图: Data Layout: 也就是说 vendor storage 是从 eMMC 3.5M 之后...

2021-11-12 17:26:57 5865

转载 [Linux 基础] -- sysfs、udev 和它们背后的 Linux 统一设备模型

引子 —— sysfs 诞生之前一切皆文件,这是 Linux 的哲学之一。设备当然也不例外,它们往往被抽象成文件,存放在 /dev 目录下供用户进程进行操作。用户通过这些设备文件,可以实现对硬件进行相应的操作。而这些设备文件,需要由对应的设备文件系统来负责管理。在 kernel 2.6 之前,完成这一使命的是 devfs。devfs 是 Linux 2.4 引入的一个虚拟的文件系统,挂载在 /dev 目录下。可以动态地为设备在 /dev 下创建或删除相应的设备文件,只生成存在设备的节点。然而它存

2021-11-11 10:18:59 717

转载 [Linux 基础] -- Linux问题分析与性能优化

排查顺序 整体情况:top/htop/atop 命令查看进程/线程、CPU、内存使用情况,CPU 使用情况; dstat 2 查看 CPU、磁盘IO、网络IO、换页、中断、切换、系统 I/O 状态; vmstat 2 查看内存使用情况,内存状态; iostat -d -x 2 查看所有磁盘的 IO 情况,系统 I/O 状态; iotop 查看 IO 靠前的进程,系统的 I/O 状态; perf top 查看占用 CPU 最多的函数,CPU 使用情况; perf record...

2021-11-04 14:19:03 119

转载 [Linux 基础] -- 驱动调试神器 printk 你掌握了吗?

导读 刚刚开始做Linux相关开发工作时,深感Linux内核代码庞大,要加些自己的驱动进内核代码树,常常深陷bug的泥沼难以自拔,今天来分享一下内核调试利器printk的使用心得。前面一段时间很忙,后期更文频率会渐渐回归正常频率,尽量会保证每周一到两更。感谢各位朋友的关注而没有弃我而去,我定不负厚爱,会持续输出些日常技术工作中的心得体会,如对朋友们有些许帮助,也烦请帮忙点个赞或者在看(这并不会对各位有何不利的影响哈~~~),这也是对我坚持持续输出的大大激励!prin...

2021-11-03 15:37:23 1155

转载 [Linux 基础] -- 深入理解 Linux 的 I/O 系统

传统的 System Call I/O 在 Linux 系统中,传统的访问方式使通过 write() 和 read() 两个系统调用实现的,通过 read() 函数读取文件到缓存区中,然后通过 write() 方法把缓存中的数据输出到网络端口。read(file_fd, tmp_buf, len);write(socket_fd, tmp_buf, len); 下图分别对应传统 I/O 操作的数据读写流程,整个过程涉及 2 次 CPU 拷贝、2 次 DMA 拷贝、...

2021-11-02 16:38:29 117

原创 [Android O] [RK3399] -- 调试 Audio 模块(ALC5651)

前言 本文介绍如何添加 Audio 模块到我们的系统中。在实际的项目中,我们使用的 Audio 模块是 ALC5651。一、硬件原理图 ALC5651 的硬件原理图如下: ALC5651 的接口解析:#HPO_L/#HPO_R:耳机孔的左右声道; MIC1P/MIC1N:mic 输入; I2C:音频控制接口; I2S:总共有5根线(这里不是指 i2s 标准接口):两根音频数据线(输入/输出)、三根时钟线 其中:...

2021-10-22 15:02:58 3692

转载 [Linux 基础] -- Linux 之 fstab 文件详解

前言 /etc/fstab 是用来存放文件系统的静态信息的文件。位于 /etc/ 目录下,可以用命令 less /etc/fstab 来查看,如果要修改的话,则用命令 vim /etc/fstab 来修改。 当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。文件示例 一个简单的 /etc/fstab,使用内核名称标识磁盘:字段定义 /e...

2021-10-14 15:28:10 4799

转载 [Android 基础] -- Android 添加系统属性

在 Android 系统中有一个 Property Service 服务,这个服务对外提供了两个接口:SystemProperties.get(String key, String def) 读取系统属性 SystemProperties.set(String key, String val) 设置系统属性 有两个命令行对这两个接口进行了封装,我们可以直接在 adb shell 中输入:getprop key 读取系统属性 setprop key val 设置系统...

2021-10-09 16:52:38 2446

原创 [Android O] [RK3399] -- 在 init 里添加一个系统服务并设置其 SEAndroid权限

前言: 在实际的项目中,使用到一个 GPS 模块,该模块需要在系统启动时启动,于是这里编写了 GPS 启动的程序,并添加到 init 里,进行开机自启动。具体实现下面进行详细介绍。一、GPS 启动 源码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(){ for(;;) { if(access("/...

2021-09-29 10:43:13 508

转载 [Android 基础] -- SELinux/SEAndroid 实例简述(三) 实例看 SELinux/SEAndroid

基础知识都已经学习完了,但是还不知道怎么样,下面从不同的场景,实现了几个例子,可以参考学习一下。 对于 /extern/sepolicy 的修改如下方法编译:1. mmm external/sepolicy2. make bootimg 不过对于 MTK 的 Android 系统,不建议修改 external/sepolicy,而是修改 device/mediatek/common/sepolicy,在 plicy 目录下,make relab...

2021-09-26 16:47:32 1841

转载 [Android 基础] -- SELinux For Android (Android O)

改为当意译自 Android 官方 《SELinux for Android 8.0》

2021-08-11 17:19:19 2903

转载 [Linux 基础] -- SELinux

一、概览1.1、什么是 SELinux:SELinux 是 Security Enhanced Linux 的缩写,字面意思是安全增强型 linux。1.2、设计目的:避免资源的误用SELinux 是由美国国家安全局 (NSA) 开发的,当初开发这玩意儿的目的是因为很多企业界发现, 通常系统出现问题的原因大部分都在於『内部员工的资源误用』所导致的,实际由外部发动的攻击反而没有这么严重。举例来说,如果有个不是很懂系统的系统管理员为了自己配置的方便,将网...

2021-08-03 16:38:47 388

转载 [Linux 基础] -- 一文彻底明白 Linux 中的 selinux 到底是什么

一、前言 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。 SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。 SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。 如果...

2021-08-02 16:50:25 804

转载 [Android 基础] -- Android 属性系统简介

一、简介 在 android 系统中,为同一管理系统的属性,设计了一个统一的属性系统。每个属性都有一个名字和值,他们都是字符串格式。属性被大量使用在 Android 系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以 get/set 属性。在编译的过程中会将各种系统参数汇总到 build.proc 以及 default.proc 这两个文件中,主要属性集中在 build.proc 中。系统在开机后将读取配置信息并构建共享缓冲区,加快查询速度。另外一个...

2021-07-28 15:25:04 1688

转载 [Linux 基础] -- V4L2框架 - videobuf2

本文介绍在 v4l2 框架之下的数据流交互的实现与使用,主要目的是实现一个能够进行用户空间与内核空间进行数据交互、数据流格式设置、数据流 buffer 申请与释放、数据流开启与关闭的 video 设备驱动。简介 videobuf2 用于连接 V4L2 驱动层与用户层,提供数据交流的通道,它可以分配并管理视频帧数据。videobuf 层实现了很多 ioctl 函数,包括 buffer 分配、入队、出队和数据流控制。为什么要有 vdieobuf2? 因为 vide...

2021-07-16 14:31:26 1280

转载 [Linux 基础] -- 详细讲解 Linux 启动流程及启动用到的配置文件及脚本

一、详解 Linux 启动流程及需要使用到的配置文件POST 加电自检 --> BIOS(Boot Sequence) -> MBR(bootloader) -> Kernel ->initrd ->rootfs(/sbin/init)下面对每个启动流程做详细解释:1.1、POST(加电自检)计算机本身不执行任何程序,所以系统必须要完成自举的过程,在 CPU 的控制下,将 RAM 芯片中的某个程序映射到 ROM 地址空间,并执行其中的指令完成系统硬件健康状况

2021-07-14 10:12:19 334

转载 [Android 基础] -- 修改设备访问权限

一、背景在硬件抽象层模块中,我们是调用 open 函数来打开对应的设备文件的。例如,在 2.3.2 小节中开发的硬件抽象层模块 freq 中,函数 freg_device_open 调用 open 函数来打开设备 /dev/freg。if((dev->fd = open(DEVICE_NAME, O_RDWR)) == -1){ LOGE("Failed to open device file /dev/freg -- %s.", strerror(errno)); fre

2021-04-27 11:06:47 555

转载 [Android 基础] -- 把 apk、so 等文件,打包到 system.img 的方法 —— PRODUCT_PACKAGES 与 PRODUCT_COPY_FILES

本文说的打包是指在 aosp 中用 make -j8 编译后,把自己需要的文件打包到 system.img 中。这里有两种情况,第一种是 apk、so 是第三方提供的,已经编译好了,只要打包到 system.img 即可;第二种是有 apk、so 的源码,并且需要放在 aosp 中编译。一、第一种情况 —— PRODUCT_COPY_FILES可以修改 device.mk 中的 PRODUCT_COPY_FILES,这里用 android4.0 中自带的 device/ti/panda 来修.

2021-04-26 16:20:08 4870

转载 [Android 基础] -- Android 定制:预置应用程序

一、引言我们在拿到一个新的 Android 设备的时候,第一次开机进入系统,我们会发现里面有好多预装的应用程序。这些应用程序有的可以删除,有的却没有删除权限。我们在定制系统的时候往往希望系统自带我们提供的应用程序,设置开机就运行我们的程序,比如安卓盒子,进入系统之后展示的不是 Android 的原生 Launcher 而是一个定制的 LanucherApp。二、描述我们需要在系统安装好之后首次启动系统就存在我们的应用程序,而不需要开机之后再次安装,这样就需要考虑进行预置 APP(应用),预置还有

2021-04-26 15:02:32 2220

转载 [Linux 基础] -- V4L2 实例分析 —— vivi.c 源码详解(深度好文)

本文介绍在 v4l2 框架之下的数据流交互的实现与使用,主要目的是实现一个能够进行用户空间与内核空间进行数据交互、数据流格式设置、数据流 buffer 申请与释放、数据流开启与关闭的 video 设备驱动。...

2021-04-19 11:22:12 3379 2

转载 [Linux 基础] -- v4l2 device

本文转自于:https://blog.csdn.net/u013904227/article/details/80782068本文为 V4L2 中比较容易理解的骨干结构进行介绍,涉及两个核心结构体:v4l2_device,v4l2_subdev。文章围绕这两个结构体以 Linux-4.4 内核的 omap3isp 代码为例进行相关的介绍,所谓介绍还是起到辅助作用,真真儿还是要靠 RTFSC、WTFSC。下面 [该例程] 均指的是 omap3isp 这个例程。一、V4L2 框架补充首..

2021-04-02 15:23:51 518

转载 [Android 基础] -- 理解 Android.bp

本文转自于:http://gityuan.com/2018/06/02/android-bp/介绍 Android 最新的编译系统一、简介早期的 Android 系统都是采用 Android.mk 的配置来编译源码,从 Android 7。0 开始引入 Android.bp。很明显 Android.bp 的出现就是为了替换掉 Android.mk。再来说一说跟着 Android 版本相应的发展演变过程:Android 7.0 引入 ninja 和 kati; Android 8.

2021-03-31 14:14:57 274

转载 [Linux 基础] -- Linux 内核中断系统(tasklet、工作队列、软中断、线程 irq)

本文转载于微信公众号:嵌入式软件开发交流;原文地址:https://mp.weixin.qq.com/s/vJCoUr8wHanF9Epvi1rKcw一、前言中断在驱动中是非常常用的,无论是外部的 GPIO 中断,还是 SPI,I2C 等发送或接收中断,都是必不可少的。所以今天来看看 Linux 中的中断处理。上面我们根据中断来源,屏蔽方式和中断入口对中断进行了简单的分类。二、中断控制器PIC:可编程中断控制器;GIC:Generic Interrupt Controller.

2021-03-30 11:54:11 550

转载 [Linux 基础] -- Linux 如何查询 OS、CPU、内存、硬盘信息?

本文转自于:https://www.cnblogs.com/renshengdezheli/p/13427865.html本文描述了 Linux 查询炒作系统信息,CPU 物理个数,CPU 核心数,逻辑 CPU 数,内存信息查询,硬盘信息查询。一、前言当我们接手了一台或者几台服务器的时候,首先我们有必要对服务器的基本配置有所认识,这样才可以对症下药,对以后的软件部署,系统运维会有事半功倍的效果。二、关于服务器基本配置查询服务器的基本配置一般查询操作系统,CPU,内存,硬盘,下面进行逐.

2021-03-29 18:10:58 896

转载 [Linux 基础] -- Linux TTY Framework(2)_软件架构

一、前言由 “Linux TTY Framework(1)_基本概念” 的介绍可知,在 Linux kernel 中,TTY 就是各类终端(Terminal)的简称。为了简化终端的使用,以及终端驱动程序的编写,Linux kernel 抽象出了 TTY framework;对上,向应用程序提供使用终端的统一接口;对下,提供编写终端驱动程序(如 serial driver)的统一框架。本文是 Linux Framework 分析的第二篇文章将从整体架构的角度,介绍 Linux TTY framewor

2021-03-29 14:35:41 363

转载 [Linux 基础] -- Linux TTY framework(1)_基本概念

一、前言由于串口的缘故,TTY 是 Linux 系统中最普遍的一类设备,稍微了解 Linux 系统的同学,对它都不陌生。尽管如此,相信很少有人能回答这样的问题:TTY 到底是什么东西?我们常常挂在嘴边的终端(terminal)、控制台(console)等概念,到底是什么意思?本文是 Linux TTY Framework 分析文章的第一篇,将带着上述疑问,介绍 TTY 有关的基本概念,为后续的 TTY 软件框架的分析,以及 Linux serial subsystem 的分析,打好基础。二、终端

2021-03-29 10:47:38 221

转载 [Uboot 基础] -- 第四课:u-boot 对设备树的支持

在线课堂:https://www.100ask.net/index(课程观看)论 坛:http://bbs.100ask.net/(学术答疑)开 发 板:https://100ask.taobao.com/ (淘宝)https://weidongshan.tmall.com/(天猫)交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)交流群二:QQ群:536785813(单片机-嵌入式)公 众 号:百问科技前言:本文转自韦东山老师的相关文章,原文链接:第四

2021-03-25 18:33:18 269

转载 [Linux 基础] -- 第三课:Linux 内核对设备树的处理

一、从源头分析 -- 内核 head.S 对 dtb 的简单处理现在我们开始第一节,我们要从源头分析,uboot 将一些参数,设备树文件传递给内核,那么内核如何处理这些设备树文件呢?我们需要从内核的一个执行文件 head.S 开始分析。1.1、r0,r1,r2 三个寄存器的设置BootLoader 启动内核时,会设置 r0,r1,r2 三个寄存器:r0 一般设置为 0; r1 一般设置为 machine id(在使用设备树时该参数没有被使用); r2 一般设置为 ATAGS 或 DTB

2021-03-25 17:49:31 856

空空如也

空空如也

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

TA关注的人

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