中断处理

Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解)

狂风中的少年 提交于 2020-03-15 11:39:12
Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解) 1 u-boot.lds 首先了解uboot的链接脚本board/my2410/u-boot.lds,它定义了目标程序各部分的链接顺序。 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*指定输出可执行文件为ELF格式,32为,ARM小端*/ OUTPUT_ARCH(arm)/*指定输出可执行文件为ARM平台*/ ENTRY(_start)/*起始代码段为 _start*/ SECTIONS { /* 指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置*、 . = 0x00000000;从 0x0位置开始 . = ALIGN(4); 4字节对齐 .text : { cpu/arm920t/start.o (.text) board/my2440/lowlevel_init.o (.text) *(.text) } . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } . = ALIGN(4); .data : { *(.data) } /* 只读数据段

Java多线程 - 中断线程

为君一笑 提交于 2020-03-14 11:18:22
● 中断线程的三种方式 1,定于循环结束标记 因为线程运行代码一般都是循环,只要控制循环即可, 任务中都会有循环结构,只要控制住循环就可以结束任务。 控制循环通常就用定义标记来完成。 2,run方法结束 3,使用Interrupt(中断)方法 该方法是结束线程的冻结状态,使线程回到运行状态来。 方法将线程从冻结状态强制恢复到运行状态来,让线程具备cup的执行资格 当强制动作会发生时会抛InterruptException异常,记得要处理 一、中断线程 - interrupt   线程的 thread.interrupt() 方法是中断线程,将会设置该线程的中断状态位,即设置为 true,中断的结果线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序本身。线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断标示值是否为 true )。它并不像 stop 方法那样会中断一个正在运行的线程。 判断线程是否被中断   判断某个线程是否已被发送过中断请求,请使用Thread.currentThread().isInterrupted()方法(因为它将线程中断标示位设置为true后,不会立刻清除中断标示位,即不会将中断标设置为false),而不要使用thread.interrupted()(该方法调用后会将中断标示位清除,即重新设置为false)方法来判断

linux网络体系架构

旧巷老猫 提交于 2020-03-13 09:25:51
原创kylin_zeng: http://blog.csdn.net/kylin_fire_zeng 本文参考国嵌视频教程,再此感谢国嵌教育。 一、协议栈层次对比: 1)网络接口层把数据链路层和物理层合并在了一起,提供访问物理设备的驱动程序,对应的网络协议主要是以太网协议。 2)网络层协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。重要的网络层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)和IP协议(网际协议)等 3)传输层的功能包括:格式化信息流、提供可靠传输。传输层包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议),它们是传输层中最主要的协议 4)应用层位于协议栈的顶端,它的主要任务是服务于应用,如利用FTP(文件传输协议)传输一个文件。常见的应用层协议有:HTTP,FTP,Telnet等。应用层是Linux网络设定很关键的一层,Linux服务器的配置文档主要针对应用层中的协议 二、linux网络子系统 1) 2)Linux 网络子系统的顶部是系统调用接口层。它为用户空间的应用程序提供了一种访问内核网络子系 统的方法。位于其下面的是一个协议无关层

FutureTask源码完整解读

谁都会走 提交于 2020-03-13 03:06:14
1 简介 上一篇博客“ 异步任务服务简介 ”对FutureTask做过简要介绍与分析,这里再次对FutureTask做一次深入的分析(基于JDK1.8)。 FutureTask同时实现了Future 、Runnable接口,因此它可以交给执行器Executor去执行这个任务,也可以由调用线程直接执行run方法。 根据FutureTask.run方法的执行状态,可将其分为以下3种状态 ①未启动: run方法还未被执行,FutureTask处于未启动状态。 ②已启动: run方法在执行过程中,FutureTask处于已启动状态 ③已完成:run方法正常完成返回或被取消或执行过程中因异常抛出而非正常结束,FutureTask处于已完成状态。 当FutureTask处于未启动或已启动状态时,执行FutureTask.get()方法将导致调用线程阻塞;当FutureTask处于已完成状态时,执行FutureTask.get()方法将导致调用线程立即返回结果或抛出异常。 当FutureTask处于未启动状态时,执行FutureTask.cancel()方法将导致此任务永远不会被执行;当FutureTask处于已启动状态时,执行FutureTask.cancel(true)方法将以中断执行此任务线程的方式来试图停止任务;当FutureTask处于已启动状态时,执行 FutureTask

搞懂这些面试知识点,吊打面试官

孤者浪人 提交于 2020-03-12 22:33:16
一丶设计模式与使用场景 建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 使用场景比如最常见的 AlertDialog,拿我们开发过程中举例,比如 Camera 开发过 程中,可能需要设置一个初始化的相机配置,设置摄像头方向,闪光灯开闭,成 像质量等等,这种场景下就可以使用建造者模式 装饰者模式: 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模 式比生成子类更为灵活。装饰者模式可以在不改变原有类结构的情况下曾强类的 功能,比如 Java 中的 BufferedInputStream 包装 FileInputStream ,举个开发中的 例子,比如在我们现有网络框架上需要增加新的功能,那么再包装一层即可,装 饰者模式解决了继承存在的一些问题,比如多层继承代码的臃肿,使代码逻辑更 清晰 还有等等.......观察者模式, 代理模式,门面模式,单例模式,生产者消费者模式。 二丶java 中的线程创建方式,线程池的工作原理 java 中有三种创建线程的方式,或者说四种 1.继承 Thread 类实现多线程 2.实现 Runnable 接口 3.实现 Callable 接口 4.通过线程池 线程池的工作原理: 线程池可以减少创建和销毁线程的次数,从而减少系统资源 的消耗,当一个任务提交到线程池时 a. 首先判断核心线程池中的线程是否已经满了

stm32F103之ADC模数转换

偶尔善良 提交于 2020-03-12 13:58:26
一、ADC简介   通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是把经过与标准量比较处理后的模拟量转换成以二进制数值表示的离散信号的转换器。      12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。 二、ADC功能框图 掌握了ADC 的功能框图,就可以对ADC 有一个整体的把握,在编程的时候可以做到了然如胸,不会一知半解。框图讲解采用从左到右的方式,跟ADC 采集数据,转换数据,传输数据的方向大概一致。 三、ADC功能描述 1、电压输入范围   ADC 输入范围为:VREF- ≤ VIN ≤ VREF+。由VREF-、VREF+ 、VDDA 、VSSA、这四个外部引脚决定。   设计原理图的时候一般把VSSA和VREF-接地,把VREF+和VDDA 接3V3,得到ADC的输入电压范围为:0~3.3V。 2、输入通道   我们确定好ADC 输入电压之后,那么电压怎么输入到ADC?这里我们引入通道的概念,STM32 的ADC 多达18 个通道,其中外部的16 个通道就是框图中的ADCx_IN0、ADCx_IN1...ADCx_IN5

基于STM32之UART串口通信协议(三)接收

蹲街弑〆低调 提交于 2020-03-12 02:00:20
一、前言 1、简介   回顾上一篇 UART发送 当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作。 2、UART简介   嵌入式开发中,UART串口通信协议是我们常用的通信协议之一,全称叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。 3、准备工作   在 UART详解 中已经有了详细的说明,按照里面的说明即可。 注:   建议每次编写好一个相关功能且测试功能成功使用后,保存备份并压缩成一份Demo例程,方便日后有需要的时候可以直接使用。   例如: 二、CubeMx配置及函数说明 说明:   如果有看过我写的 UART发送 的兄弟姐妹们应该会知道,在 UART发送 和 UART详解 中的CubeMx配置都是一样的。   但这一次不同,会在原本配置CubeMx的基础上,添加一些UART的中断配置来实现中断接收操作。 1、CubeMx配置 1)按照 UART详解 配置UART(若配置过,可以继续使用) 2)使能串口中断 3)设置中断优先级(如果没开启其他中断,那就默认即可,直接跳过) 4)代码生成(点击前最好把原本的工程关掉,不然有可能会有问题) 2、函数说明 1)CubeMx生成的UART初始化(在usart.c中) 说明:   会与上一篇 UART发送

2020-03-11

泪湿孤枕 提交于 2020-03-11 13:21:35
1 中断方式不同:内部中断是一个算法指令,是由软中断指令启动的中断。外部中断是单片机实时地处理外部事件的一种内部机制。如果在某一时刻需要响应一个外部事件(比如有按键按下),这时就会用到外部中断。 2、中断的主动性不同:外部中断时,当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。在一定条件下由CPU自身启动的中断。 3、中断的实现方法不同:外部中断依靠电平触发方式和跳沿触发方式。电平触发方式适合于外部中断以低电平输入而且中断服务程序能清除外部中断请求源的情况。外部中断若定义为跳沿触发方式,外部中断申请触发器能锁存外部中断输入线上的负跳变。内部中断由一条指令INT n产生中断类型码或者由指令规定。##外部中断和内部中断 List item 来源: CSDN 作者: XINdongpai 链接: https://blog.csdn.net/xindongpai/article/details/104793691

11.11异常捕获概要

随声附和 提交于 2020-03-10 09:32:19
异常是导致程序中断运行的一种指令流,当异常发生时,如果没有进行良好的处理,则程序将会中断执行。 异常处理可以使用try…catch结构进行处理,也可以使用try… catch…finally结构进行处理,在try语句中捕捉异常,之后在catch中处理异常,finally作为异常的统一出口,不管是否发生异常都要执行此段代码。 异常的最大父类Throwable,其中分为两个子类:Exception和Error。Exception表示程序处理的异常,而Error表示JVM错误,一般不由程序开发人员处理。 发生异常之后,JVM会自动产生一个异常类的实例化对象,并匹配相应的catch语句中的异常类型,也可以利用对象的向上转型关系,直接捕获Exception。 throws用在方法声明处,表示本方法不处理异常。 throw表示在方法中手动抛出一个异常。 自定义异常类的时候,只需继承Exception 或RuntimeException类即可。 断言(assert)可以用来检测程序的执行结果,但开发中并不提倡使用断言进行检测。 来源: CSDN 作者: ll_j_21 链接: https://blog.csdn.net/ll_j_21/article/details/104755878

JVM—GC垃圾回收器总结

本小妞迷上赌 提交于 2020-03-08 23:11:12
收集算法(标记-清理、复制、标记-整理、分代收集)是内存回收的方法论,垃圾收集器就是内存回收的具体实现。 主要有7个gc器,如下图。 1 Serial收集器 1.1 介绍 Serial收集器是单线程的收集器。 单线程 :1.不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,2.且在垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。 Stop the world :是VM在后台自动发起和自动完成的,在用户不可见情况下把用户正常工作的线程全部停掉。 1.2 缺点: 由于Stop The World,给用户带来不良体验,比如,计算机每运行一段时间就会暂停响应几分钟来处理垃圾收集。 1.3 优点 1)简单而高效(与其他收集器的单线程比); 2)对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。 1.4 应用场景 1)VM运行在 Client 模式下的默认新生代收集器; 2)在用户的桌面应用场景中,停顿时间完全可以控制在几十毫秒最多一百多毫秒以内,不频繁发生,是可接受的 1.5 Serial/Serial Old收集器运行示意图 2 ParNew收集器 2.1 介绍 ParNew收集器是Serial收集器多线程版本(是GC线程的多线程,并行)。 • 并行 :Parallel指多条垃圾收集线程并行工作