自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单条shell命令输出gdb coredump的函数调用栈信息

单条指令即可输出coredump文件的函数调用栈信息并退出gdb命令行。

2022-07-04 19:56:17 333

原创 Git跟踪新的仓库、提交并保留原始提交记录的方法

将工程上传至新的git仓库,并保存原始的git提交记录的方法# 跟踪新的仓库,并查看是否正确跟踪了:git remote rm origin;git remote add origin [url];git remote -v# 将工程上传至新的git仓库,并保存原始的git提交记录git checkout -b new_branch;git add -A;git commit -am "[PRJ][ADD]xxx";git branch -D master;git branch -m master

2021-02-02 19:39:31 278

原创 OpenNetworkLinux:i2c-gpio.c源码学习笔记

OpenNetworkLinux:i2c-gpio.c源码学习笔记i2c-gpio驱动init和exiti2c驱动需要首先在平台驱动上进行注册,方可提供自身的总线供适配器进行注册,注册流程类似于一个内核模块的注册流程;而平台驱动 - 总线驱动 - 适配器 - 设备的关系类似于树状结构,关系上层层递进;·i2c_gpio_init函数代码:static int __init i2c_gpio_init(void){ int ret; ret = platform_driver_regis

2021-01-25 20:12:59 388

原创 Linux驱动开发-第九章-I2C核心、总线、设备驱动、数据传输

I2C核心、总线、设备驱动、数据传输I2C 总线特征• 只要求两条总线线路: 一条串行数据线 SDA/一条串行时钟线 SCL。 SDA 和 SCL 都是双向线路, 当总线空闲时这两条线路都是高电平都通过一个电流源或上拉电阻连接到正的电源电压• 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机、从机关系软件设定地址 主机可以作为主机发送器或主机接收器•它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏• 串行的 8 位双向数据传输位速率

2021-01-23 16:12:44 344

原创 Linux驱动开发-第六章-Linux阻塞与非阻塞IO、轮询与异步通知编程

Linux阻塞与非阻塞IO、轮询与异步通知编程阻塞与非阻塞IO阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入睡眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞操作的进程在不能进行设备操作时,并不挂起,它要么放弃,要么不停地查询,直至可以进行操作为止。等待队列的Linux驱动代码示例:static ssize_t xxx_write(struct file *file, const char *buffer, size

2021-01-22 14:23:16 117

原创 Linux驱动开发-第五章-Linux设备驱动中的并发控制

Linux设备驱动中的并发控制并发与竞态并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(Race Conditions)1、对称多处理器(SMP)的多个CPUSMP是一种紧耦合、共享存储的系统模型,其体系结构如图所示,它的特点是多个CPU使用共同的系统总线,因此可访问共同的外设和储存器。在SMP的情况下,两个核(CPU0和CPU1)的竞态可能发生于CPU0的进程与CPU1的进程

2021-01-21 09:20:35 172

原创 Linux驱动开发-第四章-Linux字符设备驱动

Linux字符设备驱动字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等。在UNIX系统中,字符设备以特别文件方式在文件目录树中占据位置并拥有相应的结点。字符设备可以使用与普通文件相同的文件操作命令对字符设备文件进行操作,例如打开、关闭、读、写等。当一台字符型设备在硬件上与主机相连之后,必须为这台设备创建字符特别文件。操作系统的mknod命令被用来建立设备特别文件。例如为一台终端创建名为/dev/tty03的命令如下(设主设备号为2,次设备为13,字符型类型标记c

2021-01-21 09:16:57 121

原创 Linux驱动开发-第三章-Linux内核模块概述

Linux内核模块Linux内核模块简介模块本身不被编译入内核镜像,从而控制了内核的大小;模块一旦被加载,就和内核中的其他模块一样;简单的内核模块代码示例:/* * a simple kernel module: hello * * Copyright (C) 2014 Barry Song ([email protected]) * * Licensed under GPLv2 or later. */#include <linux/init.h>#includ

2021-01-19 10:52:45 67

原创 Linux驱动开发-第二章-Linux内核和内核编程

Linux内核和内核编程内核的组成Linux内核主要由进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)5个子系统组成:1、进程调度进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中“微观串行,宏观并行”地执行。进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。如下图所示,Linux的进程在几个状态间进行切换。在设备驱动编程中,当请求的资源不能得到满足时,驱动一般会调度其他

2021-01-19 10:04:00 280

原创 Linux驱动开发-第一章-硬件基础

硬件基础处理器1、通用处理器(GPP)目前主流的通用处理器(GPP)多采用SoC(片上系统)的芯片设计方法,集成了各种功能模块,每一种功能都是由硬件描述语言设计程序,然后在SoC内由电路实现的。中央处理器的体系架构:冯·诺依曼结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。哈佛结构,将程序指令和数据分开存储,指令和数据可以有不同的数据宽度。此外,哈佛结构还采用了独

2021-01-18 10:47:12 559

原创 C基础复习纪要

C基础复习纪要基本概念程序编译、链接过程:编译器 -> 将各个源代码.c文件生成各个.o文件链接器 -> 将各个.o文件进行链接,生成可执行文件;执行:程序载入内存 -> rom:运行时堆栈:保存函数的局部变量和返回地址静态内存:保存程序整个运行过程中的静态(static)变量static关键字:修饰链接属性为external的变量,改变其链接属性为internal;但是对属性不是external的变量无效extern关键字:修饰链接属性为none

2021-01-10 17:25:41 79

原创 Git学习笔记

第一章版本控制定义版本控制(Version Control System)是一种记录一个或多个文件内容变化,以便未来查阅特定版本的修订情况的系统;VCS可以将文件、项目回溯到之前的状态,并且可以根据比较文件的变化细节(提交、修改记录等),查出问题所在;本地版本控制系统(RCS)是记录文件前后内容变化,并将其记录为特定的文件补(patch),以便未来进行回退。集中化版本控制系统(Centralized Version Control Systems,例如SVN)是近年来版本控制系

2020-07-09 16:50:57 114 1

原创 UNIX环境编程_进程控制

进程标识:每个进程都有一个非负整型表示的唯一进程ID,而进程ID是可以复用的,Unix系统通过延迟复用算法,使得赋予新建进程的进程ID不同于最近终止进程所使用的进程ID。进程ID = 0 :swapper(交换进程);进程ID = 1 :init(系统中孤儿进程的父进程)进程ID = 2 :page daemon(页守护进程,支持虚拟存储器的系统的分页操作);相关函数函数get*:1、getpid: 返回调用进程的进程ID;2、getppid:返回调用进程的父进程ID;3

2020-06-22 17:50:21 104

原创 UNIX环境编程_文件IO

文件描述符:使用文件描述符访问文件,文件描述符是一个非负整数,当打开或创建一个文件时,内核向进程传递一个文件描述符,依照惯例,文件描述符取值通常为0、1、2(stdin,stdout,stderr)。相关函数函数open、openat:1、open:*path(文件路径)、oflag(打开方式[只读、只写、读写打开]);2、openat:*path(文件路径)、oflag(打开方式[只读、只写、读写打开])、fdfd参数作用于path为相对路径名时,指出了相对路径名在文件系统中的

2020-06-20 16:44:20 103

原创 Redis NOSQL(非关系型数据库)

一. Redis简介(key-value)键值存储型数据库:使用hash表,表内特定的键和一个特点指针指向特定的数据特点:数据模型简单;灵活性要求高;不需要高度的数据一致性;优点:高并发读写;数据的可扩展性和高可用性;模式:主从模式:读写分离:主节点负责读写;子节点只读哨兵模式:各个几点负责不同的端口,当主节点宕机后,从节点进行“选举”出新的主节点...

2019-06-08 21:35:46 158

原创 Linux学习笔记

一. Linux的安装准备与配置:准备好VMware工具;下载相应的系统镜像:(centOS)在进入VMware后创建新的linux系统:创建新的虚拟机;配置相关属性: 1. 内存大小默认为1G 2. 键盘输入设定添加美国/英语 3. 网络配置中打开自动连接网络,和自动配置IP(打开DHCP选项); 4. 设定用户名及密码新建完成的虚拟...

2019-06-07 22:28:33 82

原创 Log4j:日志记录工具

一. Log4j的配置:1.日志记录器(Logger)的行为等级:分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL七个等级,级别从高到低;Log4j也支持自己设置自定义行为并分配等级;Log4j建议只使用四个级别: ERROR、WARN、INFO、DEBUG。通过定义输出级别可以控制一些级别不被输出日志。例如倘若定义了INFO级别, 则应用程序...

2019-06-05 23:46:41 276

原创 Hibernate学习笔记

一. Hibernate的定义:符合Java习惯的关系型数据库持久化1.对象关系映射型框架(ORM Object Realtion Mapping)Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。即Hibernate封装了简单java对象(pojo plain ordinary...

2019-06-04 10:26:31 145

原创 Maven学习笔记

一. Maven的搭建1.Eclipse默认内嵌Maven2.集成外置的MavenMaven -> Installations -> Add :导入外置Maven的文件夹3.运行原理本地仓库:存放本地jar包的本计算机上的文件夹;中央仓库:互联网上存放jar包的仓库,国内镜像为阿里巴巴仓库(传输速度较快);其他外部仓库:如公司仓库,存放一些不公开的项目ja...

2019-06-04 10:24:27 84

原创 SpringMVC学习笔记

一. 使用方法简介1.基本组件:1 DispatcherServlet : 前端控制器,接收所有请求(如果配置/不包含 jsp);2 HandlerMapping: 解析请求格式的.判断希望要执行哪个具体的方法;3 HandlerAdapter: 负责调用具体的方法;4 ViewResovler: 视图解析器.解析结果,准备跳转到具体的物理视图。2.需要jar包...

2019-06-04 10:23:29 81

原创 Spring框架学习笔记

#Spring框架学习笔记#一. 环境搭建* 1.导入Spring的必须jar包1.其中logging为日志包,其他为_必需包_* 2.编写配置文件,命名为applicationContext.xml(Spring框架最大的容器同名)编写原则如图:在beans标签后添加约束文件名二. IoC Inversion of Context(Spring框架的控制反转,创建对象过...

2019-05-16 22:17:57 115

原创 1.MyBatis框架学习笔记

1.MyBatis框架学习笔记一. 环境搭建1.导入myBatis官方jar包,若需要访问源码需导入相应的file路径;2.xml配置文件的编写(1).导入DTD编写规范文件:window -->preferences -->xml–>xml cataog -->fileSystem–>本地文件 -->myBatis相关的DTD约束文件;...

2019-05-05 22:45:33 199

空空如也

空空如也

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

TA关注的人

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