自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 Linux 命令使用:cat与tac、more与less、head与tail

Linux系统中有许多命令提供查看文件内容的功能,无所谓哪个命令更好,在具体工作中,根据需求选择具有不同功能特点的命令。1. cat <file>查看文件内容;指定输入创建文件;连接或合并文件【1】查看一个或多个文件内容tmpuser:test/ $ lltotal 0tmpuser:test/ $ echo 'a' > t1.filetmpuser:test/ $ echo 'b' > t2.filetmpuser:test/ $ cat t1.file

2020-07-15 14:16:37 74

转载 轻松几步实现在STM32上运行FreeRTOS任务

之前文章做过一次调查,尽然有大部分人都没有接触过RTOS,希望本文能带领那部分朋友入门。1写在前面以前想要在STM32上跑FreeRTOS操作系统,还需要自己一步一步的移植FreeRTOS代码。现在使用STM32CubeMX工具,就不需要这么繁杂的移植工作,只需轻松几步就能让FreeRTOS跑起来。本文以STM32L412(NUCLEO-L412KB板卡)为例,其它STM32型号类似。同时,使用目前(2019.06)最新的MDK和STM32CubeMX工具。因此,需要提前下载安装工具和软

2020-05-20 10:49:41 81

转载 关于FreeRTOS移植到STM32F103上的步骤以及注意事项

因为最近比较有时间,而且发现自己对于STM上可以跑的操作系统相对陌生。所以选择几个操作系统进行移植和玩几个DEMO理解一下。虽然理解的不是很深入,但是如果项目需要的话,只是移植,进行多任务的操作。应付一下还是绰绰有余的。之前移植了uCosII.后续有需要会总结一下。这里先对FreeRTOS相关的问题进行总结。因为个人能力有限。有什么不对的地方请大家批评,写这个主要是为了记录一下自己的移植过程。1、第一步肯定是先到官网去下载关于FreeRTOS的源码下面的网址是官方最新源码的下载地址:ht...

2020-05-20 10:37:09 119

转载 FreeRTOS移植——基于stm32f1

准备在移植之前,我们首先要获取到FreeRTOS的官方的源码包。这里我们提供两个下载链接:一个是官网:http://www.freertos.org/另外一个是代码托管网站:https://sourceforge.net/projects/freertos/files/FreeRTOS/这里我们演示如何在代码托管网站里面下载。打开网站链接之后,我们选择FreeRTOS的最新版本V9.0.0(2016年),尽管现在FreeRTOS的版本已经更新到V10.0.1了,但是我们还是选择V9.0.0,因为

2020-05-20 10:35:01 69

转载 Android 9.0 Auto及m4 core倒车逻辑--基于imx8qm

新板子car版本android系统收不到m4发送的资源释放消息,屏不亮,先分析一下逻辑关系。上图就是car版本AP核和M41核之间的倒车逻辑。阶段1 系统启动完毕mek_8q.mk 63: $(IMX_DEVICE_PATH)/init_car_m4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.car_additional.rc 68: $(IMX_DEVICE_PATH)/init_car_no_m4.rc:$(TARGET_COPY_O.

2020-05-08 18:25:52 130

转载 Ubuntu 如何更换内核

作者最近在装OAI,需要频繁更换内核。网上更换内核的方法参差不齐,在经历了各种失败和尝试后,分享以下两种方式。第一种synaptic属于图形化一键更换,第二种改grub属于绝对可行方法。建议初次尝试顺序是 1 -> 2。因为1不会出任何问题,2虽然保证能完成任务,但是一定要细心才行。不过我现在更换内核都是直接用2,比较直接有效和方便。注:我不是IT专业的,所以不会手动编译内核,有需求可以参考...

2020-02-22 18:52:36 232

转载 Linux内核中的软中断、tasklet和工作队列详解

本文基于Linux2.6.32内核版本。引言软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。介绍这三种下半部实现之前,有必要说一下上半部与下半部的区别。上半部指的是中断处理程序,下半部则指的是一些...

2019-12-16 11:03:51 50

原创 request_firmware函数的使用

request_firmware函数主要是用来在kermnel 里给外围设备更新固件的时候,获得固件文件的。调用此函数后,编译进系统的固件文件,就被调用内存。当调用request_firmware 函数时,它会自动在几个固定的文件夹下搜索,查找和文件名字相同的文件,然后打开读到内存。1.调用方法: const struct firmware *cfg; int re...

2019-11-19 11:10:40 133

转载 快速解决Android中的selinux权限问题

比如,内核打印这个提示type=1400 audit(32.939:25): avc: denied { open } for pid=2592 comm="chmod" path="/dev/block/mmcblk0p25" dev="tmpfs" ino=6494 scontext=u:r:init_shell:s0 tcontext=u:object_r:block_device:s0...

2019-10-11 15:05:23 269

转载 selinux在 android 上的实现

1. 在init.c main函数里面初始化int main(int argc, char **argv){..........union selinux_callback cb;cb.func_log = log_callback;selinux_set_callback(SELINUX_CB_LOG, cb);cb.func_audit = audit_callback;sel...

2019-09-27 18:32:03 244

转载 LVDS接口分类,时序,输出格式

1.1.1LVDS接口分类1.1.1.1单路6bit LVDS这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bitLVDS接口。此,也称18位或18bit LVDS接口。1.1.1.2双路6bit LVDS这种接口电路中,采用...

2019-09-12 15:54:48 119

转载 Android网络安全:Netfilter与iptables

Android 4.4.41、Netfilter与iptables关系Netfilter: http://www.netfilter.org/: Netfilter is a framework provided by the Linux kernel that allows various networking-related operations to be im...

2019-05-31 17:09:19 241

转载 Android Network - 架构

文章参考的是Android 7.1 的源码如下图所示,主要分为三个部分:1. WiFi,Telephony,Ethernet 链路以WiFi为例,WifiStateMachine作为WiFi driver 和用户层之间通信的桥梁,处理用户下发的指令(如连接/断开连接/更改配置信息等)以及driver返回到framework的消息。当WiFi链路状态发生改变时,它将及时地告知CS,以便...

2019-05-29 14:06:27 346

转载 Android系统网络架构

引言:这篇文章以WiFi举例,介绍了Android系统网络架构。其内容包含:网络链路的连接和注册、网络有效性检测和网络优选、Android系统网络防火墙和几种场景下的网络策略等,文章的最后也列举了几种常见的无法上网原因供大家参考。一. 基本结构1.1 类图1.2 WifiServiceWifiManager中公开API的具体实现,提供了WiFi打开与关闭、配置和扫描、连接和断开...

2019-05-29 14:04:41 722

转载 串口下查看单个应用消耗内存的方法

以com.skyworth.sky_app_home为例:1.先用top查看该应用的PID查到该应用的PID是2372;2.进入到目录:/proc/2372,然后cat status,得到该进程的详细状态,包括内存消耗,截图如下:该截图的解释:Name 应用程序或命令的名字State 任务的状态,运行/睡眠/僵死/SleepAVG 任务的平均等待时间(以na...

2019-05-24 17:13:37 122

转载 一次spinlock死锁故障的定位(太经典,收藏!)

本文讲述一次spinlock死锁故障的定位过程,目的不在于问题本身,而在于展现一个内核bug的分析过程,提供一种分析思路,供大家参考。一、问题现象内核出现panic,kdump搜集到了vmcore。vmcore中直接导致panic的log信息为(包含相应CPU上的堆栈):点击(此处)折叠或打开Kernel panic-notsyncing:Watchdog detect...

2019-05-20 19:58:30 785

转载 hash函数应用(整理)

评估hash函数优劣的基准主要有以下两个指标:(1)散列分布性即桶的使用率backet_usage = (已使用桶数) / (总的桶数),这个比例越高,说明分布性良好,是好的hash设计。(2) 平均桶长即avg_backet_len,所有已使用桶的平均长度。理想状态下这个值应该=1,越小说明冲突发生地越少,是好的hash设计。hash函数计算一般都非常简洁,因此在耗费计算时...

2019-05-17 15:10:55 1133

转载 【Linux】grep 匹配多个关键字

grep 命令非常常用,经常用于匹配文本字符。一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢?下面看几种情况:1、 grep ‘字符串’这是最普通的使用方式:匹配文件中包含 MANPATH 的那一行:cat manpath.config | grep 'MANPATH'2、 grep -v ‘字符串’与上例子相反,反向匹配匹配文件中不包含 ...

2019-05-09 10:20:26 6123

转载 Linux编程-让进程或线程运行在指定的CPU上

By:Ailson JackDate:2016.03.18个人博客:www.only2fire.com本文在我博客的地址是:http://www.only2fire.com/archives/55.html,排版更好,便于学习。为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU上,这样可以减少调度的开销和保...

2019-05-07 11:08:23 188 1

转载 linux下指定进程运行的CPU

如果你觉得比内核的进程调度器更了解你的进程,不想过多的占用CPU0,更高的缓存命中,那么可以设置进程运行在某个或某些CPU上。redis是单进程模型,为了充分利用多核服务器性能,可以指定不同的redis实例运行在不同CPU上,这样也可以减少进程上下文切换。方法有两种:一、使用命令taskset 在RedHat系linux中,可以sudo yum p...

2019-05-07 11:06:17 653

转载 c语言设置cpu affinity (设置程序需要使用的cpu内核) cpu mask

最近打算写个小程序, 需要控制使用的是哪个 cpu 内核,所以做了一些调查, 整理一下分享给大家。主要参考:http://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html/http://stackoverflow.com/questions/7296963/gnu-source-and-use-gnuhtt...

2019-05-07 10:53:31 311

转载 OpenJDK6,7,8,9,10,11下载链接

OpenJDK6http://download.java.net/openjdk/jdk6/promoted/b27/openjdk-6-src-b27-26_oct_2012.tar.gzhttps://codeload.github.com/shchiu/openjdk/zip/masterOpenJDK6官方编译帮助文档OpenJDK7https://codeload.github...

2019-05-05 18:38:07 1129

转载 《Linux操作系统-系统移植》第3章 U-boot移植(IMX283+U-boot2015.04)

##3.1准备编译 复制源码包到开发主机中将下载的“u-boot 源码”复制到 Linux 开发主机的“~/imx283/source”。这一步自己采取相应的方式完成。源码下载链接:ftp://ftp.denx.de/pub/u-boot/【方法】共享目录将源码文件移到共享目录下(共享文件名为“share”)$cp u-boot-2015.04.tar.bz2 ~/imx283...

2019-05-05 17:10:03 144

转载 Linux操作系统在ARM上 的移植过程及分析

一. 前言 面向A R M 微处理器构架的嵌入式操作系统的使用量将在今后五年持续增长,在各种嵌入式操作系统中,Linux是获得支持最多的第三大力量。 目前,ARMLinux 支持包括A R M 6 1 0 、A R M 7 1 0、A R M 7 2 0 Tcores、ARM920T cores、StrongARM110、StrongARM 1100、XScale 等系列...

2019-04-30 17:07:31 2303

转载 OMAP开发板的启动过程

OMAP的启动过程参考文档:http://www.omappedia.org/wiki/Bootloader_Project#u-boot_overviewOMAP平台的启动初始化过程(bootloaders)分为了几个不同的阶段.下图指示了启动的顺序为:ROM代码,x-loader,u-boot, kernel,每一个阶段都完成足够的配置以加载和执行下一阶段。这个引导程序项...

2019-04-30 15:58:44 248

转载 Bootloader 设计蓝图 和 ARM 的启动流程

UBoot源代码的查看Bootloader对于嵌入式系统就像BIOS相对于Windows操作系统一样,负责启动操作系统。如下图所示:在对Bootloader学习中,可以参考U-Boot代码U-Boot是用于多种嵌入式CPU( MIPS、x86、ARM等)的bootloader程序,U-Boot不仅支持嵌入式Linux系统的引导,还支持VxWorks, QNX等多种嵌入式操作系统。...

2019-04-30 15:35:36 133

转载 bootloader系列一——Arm处理器启动流程解析

转载自:http://http://www.cnblogs.com/wrjvszq/芯片手册下载地址:链接:https://pan.baidu.com/s/1F0WGwZDSg92EjwLd377tsw密码:bmebArm启动流程解析谈到arm的启动流程不得不说的是bootloader,但是我这篇文章主要来谈谈arm启动流程的,所以bootloader只是跟大家简介一下就o...

2019-04-30 15:32:50 395

转载 QEMU 简单几步搭建一个虚拟的ARM开发板

1.安装QEMU先在Ubuntu中安装QEMUsudo apt-get install qemu1安装几个QEMU需要的软件包:sudo apt-get install zlib1g-devsudo apt-get install libglib2.0-0sudo apt-get install libglib2.0-dev123安装完后在shell输入 qemu 按t...

2019-04-30 11:50:41 1120

转载 Linux Interrupt

转载之:http://kernel.meizu.com/linux-interrupt.html02 September 2016在面试的时候我们常常被问及一个问题:几种中断下半部机制 softirq、tasklet、workqueue 有什么区别?Linux 为什么要设计这几种机制?真正能够回答清楚的人还是少数的。下面我们就详细分析一下这其中的区别。本文的代码分析基于 Linux...

2019-04-28 11:40:12 316

转载 Linux Workqueue

转载之:http://kernel.meizu.com/linux-workqueue.html21 August 2016Workqueue 是内核里面很重要的一个机制,特别是内核驱动,一般的小型任务 (work) 都不会自己起一个线程来处理,而是扔到 Workqueue 中处理。Workqueue 的主要工作就是用进程上下文来处理内核中大量的小任务。所以 Workqueue 的主...

2019-04-28 11:34:16 268

转载 Linux 死锁检测模块 Lockdep 简介——转自魅族内核团队,对死锁检测认识上升到新高度

Linux 死锁检测模块 Lockdep 简介原文地址http://kernel.meizu.com/linux-dead-lock-detect-lockdep.html25 July 2016死锁概念死锁是指多个进程(线程)因为长久等待已被其他进程占有的的资源而陷入阻塞的一种状态。当等待的资源一直得不到释放,死锁会一直持续下去。死锁一旦发生,程序本身是解决不...

2019-04-28 11:06:38 133

转载 Linux 的死锁检测

死锁死锁:就是多个进程(≥2)因为争夺资源而相互等待的一种现象,若无外力推动,将无法继续运行下去。注意,只有在多进程或者多线程之间或者他们与中断之间相互通讯或者共享资源才有可能发生死锁,单线程或者进程之间没有联系的话,一般不会发生死锁。锁的种类比较多,这里主要说自旋锁和信号量。两者的差别就在于前者获得不到资源时的动作是不断的资源(即忙转浪费 cpu 的 cycles)而后者则表现为睡眠等待...

2019-04-26 16:45:36 212

转载 Linux内核中的per-cpu变量

per CPU变量per-CPU变量从字面上即可猜出它大概的含义,这种类型的变量实际上每个CPU都分配了一个该变量的副本。对于per-CPU的访问几乎不需要锁定,因为每个CPU都工作在自己的副本上,另外per CPU变量还可以保存在CPU自己的缓存上,这样就最大的优化访问速度和减少竞争。静态定义和访问#define DEFINE_PER_CPU(type, name) ...

2019-04-25 16:22:49 160

转载 Linux内核同步机制之(二):Per-CPU变量

转自:http://www.wowotech.net/linux_kenrel/per-cpu.html一、源由:为何引入Per-CPU变量?1、lock bus带来的性能问题在ARM平台上,ARMv6之前,SWP和SWPB指令被用来支持对shared memory的访问:SWP <Rt>, <Rt2>, [<Rn>]Rn中保存了SWP指...

2019-04-25 15:26:15 101

转载 Linux内存管理(最透彻的一篇)

摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市...

2019-04-24 18:18:34 76

转载 CPU私有变量(per-CPU变量)

一、简介2.6内核上一个新的特性就是per-CPU变量。顾名思义,就是每个处理器上有此变量的一个副本。per-CPU的最大优点就是,对它的访问几乎不需要锁,因为每个CPU都在自己的副本上工作。tasklet、timer_list等机制都使用了per-CPU技术。二、API使用注意,2.6内核是抢占式的。所以在访问per-CPU变量时,应使用特定的API来避免抢占,即避免它被切换到另一个CPU上被处...

2019-04-24 17:58:37 90

转载 GCC在C语言中内嵌汇编 asm __volatile__

在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例: __asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编,"asm"是"...

2019-04-24 16:24:33 82

转载 ARM 中R0-R15寄存器在函数调用中的作用

根据“ARM-thumb 过程调用标准”:r0-r3用作传入函数参数,传出函数返回值。在子程序调用之间,可以将 r0-r3 用于任何用途。 被调用函数在返回之前不必恢复 r0-r3。如果调用函数需要再次使用 r0-r3 的内容,则它必须保留这些内容。r4-r11 被用来存放函数的局部变量。如果被调用函数使用了这些寄存器,它在返回之前必须恢复这些寄存器的值...

2019-04-24 15:40:06 535

转载 ARM寄存器解析说明

要介绍arm寄存器之前我们要先了解一下arm处理器的工作模式:Arm处理器有七种工作模式,为的是形成不同的使用级别,以防造成对系统的破坏。不同模式可以访问的寄存器不同,可以运行的指令不同。(1)usr(10000):普通应用程序运行的模式(应用程序)(2)FIQ(10001):快速中断模式,以处理快速情况,高速数据传输(3)IRQ(10010):外部中断模式,普通中断处理(4)...

2019-04-24 15:34:12 153

转载 android 使用命令模拟点击 滑动

adb shell getevent -p出现上述截图的就是屏幕触摸输入设备带上 -ladb shell getevent -p-l。EV_ABSABS_MT_TRACKING_ID00000b21EV_ABSABS_MT_PRESSURE0000007fEV_ABSABS_MT_TOUCH_MAJOR0...

2019-03-01 17:51:25 396

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