9 Eric_Xi_BJ

尚未进行身份认证

热爱嵌入式

等级
TA的排名 9w+

RK3399 Android7.1系统 自定义号码CMEI信息写入vendor_storage

https://blog.csdn.net/kris_fei/article/details/79580845以上朋友写了基本概念,我们讨论下具体使用存储SN,MAC,LAN,BT等data,主要特性是不会丢失以及系统启动各个阶段都可以访问,包括uboot,kernel,linux用户空间以及pc端通过调用vendor_storage_write_sn()函数将CMEI信...

2019-07-12 16:02:07

RK3399 Android7.1系统APP有问题时弹出 没有响应 关系应用 等待

一、问题描述android系统运行不正常的时候会弹出以下框框,需要手动选择。如果想取消弹框,直接关机运行不正常的应用,后台我们自己做守护程序。方法如下本质是ANR对话框是类classAppNotRespondingDialog在处理二、问题定位点位弹框类在以下路径base/services/core/java/com/android/server/am/App...

2019-07-09 11:22:29

使用mkfs.ext4工具制作 ext4 镜像

//create  ext4filemkdirsystemmkdiroemddif=/dev/zeroof=oem.ext4bs=1Mcount=32mkfs.ext4oem.ext4sudomkdirtmpfssudomount-text4oem.ext4../system/-oloopcpyourfileorapp to.....

2018-12-29 11:11:56

uboot 中的spl 简单认识

SPL ARMSoC的启动过程:RomBoot-->SPL-->u-boot-->Linuxkernel-->filesystem-->startapplication(RomBoot是固化在SoC内部的。)spl的产生:因为芯片厂商固化的ROM支持从nandflash,SDCARD等外部介质启动,所以RomBoo...

2018-10-10 10:14:54

secureCRT 日志保存并记录每条记录的时间

对于嵌入式工程师来说,和设备交互是工作中必不可少的事。在同事中串口工具一般都是使用secureCRT和Xshel ,具体那个好在此不做讨论。我觉得都很好,看个人喜好。对于嵌入式系统工程师来说,系统的启动时间是个重要指标。因此能够准确测量系统每个模块所用时间尤其重要。下面介绍一下在使用secureCRT过程中一个很好用的技巧,保存每条记录并打印记录的时间先

2017-06-22 13:30:18

Linux 内核中的并发--信号量与互斥体

信号量(down操作->临界区->up操作)信号量的使用方式和自旋锁类似,进程只有得到信号量才能执行临界区代码但与自旋锁不同的是,当进程获取不到信号量时并不是原地打转而是睡眠等待中断服务函数不能进行睡眠,因此信号量不能用于中断当中,如果中断函数一定要用信号量可以使用尝试上锁(down_trylock)进行操作,不能获取锁就立刻返回,以避免阻塞,通过返回值判读可执行与否

2017-06-01 18:16:53

Linux 内核中的并发--自旋锁

自旋锁(获取自旋锁->临界区->释放自旋锁)自旋锁的名称源于它的工作原理:尝试获取一个自旋锁,如果锁空闲就获取该自旋锁并继续向下执行;如果锁已被占用就循环检测该锁是否被释放(原地打转直到锁被释放)只有在占用锁的时间极短的情况下使用;不能递归使用一个自旋锁(形成死锁);占用锁时不能使用可能引起进程调度的函数,如copy_xx_user()、kmalloc()、msleep()…自旋锁主要

2017-06-01 18:02:41

Linux 内核中的并发--中断屏蔽

中断屏蔽(进入临界区之前屏蔽中断,退出临界区之后开启中断):由于进程调度依赖中断实现,因此进程抢占产生的竞态也得以避免;保证中断服务函数不访问临界区;关中断是一种很谨慎的操作,而且长时间屏蔽中断很危险,要细心使用。在SMP多处理器下,该方式就失效了,因为开关中断都是对本cpu的操作中断屏蔽相关函数:local_irq_disable();//屏蔽所有中断.

2017-06-01 17:32:19

Linux 内核中的并发--概念

基本概念:并发指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态。当多个进程、线程或中断同时访问同一个资源,可能导致错误.进程上下文:应用程序陷入内核运行时所处的内核环境中断上下文:中断服务程序执行时所处的内核环境抢占式内核:用户程序在执行系统调用期间可以被高优先级进程抢占非抢占式内

2017-06-01 17:22:32

Linux内核定时器--timer_list

定时器:linux操作系统提供了一个内核定时器内核定时器可在未来的某个特定时间点调度执行某个函数,完成指定任务linux内核定时器提供了一种异步处理的机制用户通过设置将来某一时刻的滴答值来实现定时功能假设HZ的值为200,Linux定时器最短定时时间为5ms,小于该时间的定时可直接通过硬件定时器完成定时器使用过程:定时器接口函数介绍:

2017-06-01 16:54:07

Linux 内核延时

linux的时间概念:Linux系统定时器是可编程的频率中断处理器,此频率为每秒的定时器节拍数,对应内核变量HZHZ是一个与体系结构相关的常数:Linux为大多数平台提供HZ值范围为50-1200x86PC平台默认为1000,我们的内核为200内核中有一个非常重要的全局变量:jiffies它是一个无符号32位整数,用来记录自内核启动以来的时钟滴答总数(即每

2017-06-01 16:43:08

Linux内核异步数据处理--kfifo

引题:在驱动编程中,经常会遇到异步数据处理的情况,比如采用中断或定时器处理数据输入输出等情况此时数据的采集与处理往往不同步,于是驱动编程中数据采集方需要将采集的数据暂时放到一个缓冲区中,使用方在需要处理数据时从缓冲区中将数据读出驱动编程中常采用队列这种数据结构来实现整个过程,我们可以选择自己编写一个队列,也可以利用内核中现有队列kfifo来实现kfi

2017-06-01 16:29:23

Linux内核中断底半部--概述

基本概念:在大多数真实的系统中,当中断来临时,要完成的工作往往不能立即完成,而是需要大量的耗时处理。中断处理通常分两个部分:顶半部:一个急切抢占并与硬件交互的顶半部底半部:完成重大工作负载,执行过程中所有中断都是使能的,可被打断。中断的底半部实现机制:软中断(softirq):基本的底半部机制,现在很少使用微线程(tasklet):微

2017-06-01 16:06:45

Linux内核中断底半部处理--工作队列

工作队列的使用过程:工作队列相关函数介绍:#include/*头文件包含*/1.工作队列的创建及销毁:定义一个工作队列结构体指针staticstructworkqueue_struct*key_workqueue;创建工作队列structworkque

2017-06-01 16:05:12

Linux内核中断底半部处理--内核微线程

内核微线程使用过程:内核微线程相关函数介绍:#include//头文件包含微线程创建:方法一(采用宏):DECLARE_TASKLET(name,func,data);参数:微线程名称、任务处理函数、任务处理函数的参数/*无需提前定义,直接写上na

2017-06-01 15:35:16

Linux内核中断处理

基本概念: Linux操作系统下同裸机程序一样,需要利用中断机制来处理硬件的异步事件但用户态不允许中断事件,因此中断必须由设备驱动程序来接收与处理如果CPU接收到一个中断,它会停止一切工作,调用中断处理函数,因为进程调度依赖中断,此时进程调度也会停止所以就要求我们的中断处理一定要快中断处理程序运行在中断上下文中断处理程序运行在中断上下文中:上下文:内核运

2017-06-01 14:58:36

Linux内核信号

内核信号的概念:信号是UNIX进程间通信的一种标准方式,在最早期的UNIX系统中已经存在。我们在系统编程中了解过,信号可以作为进程间通信的一种方式同样我们编写的驱动也可以使用信号通知应用层及其它进程特定事件的发生内核信号的使用:#include//内核信号接口函数头文件#include//current创建一个信号结构体:

2017-06-01 14:16:05

Linux 内核 线程

内核线程的概念:内核线程类似于用户进程,通常用于并发处理些工作,它是一种在内核空间实现后台任务的方式,并且可以参与时间片轮转调度内核线程可以进行繁忙的异步事件处理,也可以睡眠等待某事件的发生,内核线程可以访问内核函数和数据结构很多设备驱动程序都是用了内核线程来完成辅助任务,例如:USB设备驱动程序中的khubd内核线程用来监控USB集线器,并在USB被热插拔的时候配置USB设备内核

2017-06-01 14:08:10

Linux kernel 中的的等待队列(阻塞式)

等待队列在Linux内核中用来阻塞或唤醒一个进程,也可以用来同步对系统资源的访问,还可以实现延迟功能等待队列接口函数介绍:#include//头文件包含1.定义、初始化等待队列(指向等待队列链表)定义一个等待队列头wait_queue_head_tmy_queue;初始一个等待队列头

2017-06-01 12:25:27

Linux kernel轮询与等待队列

根据不同需求,linux内核有不同I/O操作模型:非阻塞:进程在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以进行操作为止阻塞:指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作条件后再进行各项操作等待队列:用来阻塞或唤醒一个进程,实现阻塞I/O访问轮询操作:非阻塞I/O访问的应用程序通常使用select()和poll()系统调

2017-06-01 12:09:45

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!