自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大帅的博客

记录工作学习中的成长

  • 博客(47)
  • 资源 (4)
  • 收藏
  • 关注

原创 驱动开发工作记录

工作记录

2022-02-25 16:48:41 312

原创 Keil工作笔记

keil工作笔记

2022-01-28 15:47:21 394

原创 keil自动化

keil自动化相关

2022-01-28 15:39:56 1674

原创 在windows中使用bat脚本获取linux服务器文件

在windows中使用bat脚本获取linux服务器文件

2022-01-28 15:21:54 2570

原创 USB Power Delivery study

1、sop*(start of packet) Communication1.1 IntroductionThe Start of Packet (or SOP) is used as an addressing scheme to identify whether the Communications were intendedfor one of the Port Partners (SOP Communication) or one of the Cable Plugs (SOP’/SOP’’

2021-06-21 11:30:23 1648

原创 Type-C CC Function Connection States(Charging part)

1.Connection State DiagramsThis section provides reference connection state diagrams for CC-based behaviors.

2021-06-18 20:14:42 644

原创 PD快充协议连接流程分析

1、DFP和UFP均会实时监控CC1和CC2引脚的电压,以此来评估DFP和UFP是否都已经在位。同时DFP可以根据电压确定自己所能提供的电流的大小。

2021-06-03 17:34:57 5546

原创 USB Type-C简介

1、术语下行端口(Downstream Facing Port, DFP):主机或者下行集线器端口。典型事例为传统的标准Type-A端口。上行端口(Upstream Facing Port, UFP):设备或者上行集线器端口。典型事例为传统的标准Type-B端口。双重角色端口(Dual-Role Port,DRP):连接事件之前,在DFP端口和UFP端口之间切换的端口。初始连接时间之后,DRP可以通过USB供电协议协商进行动态交换。基本的USB Type-C电流能力为默认USB(USB2.0

2021-06-03 17:06:16 1438

原创 Android & linux充电模块分析

核心模块是drivers/power/supply/power_supply_core.cdrivers/power/supply/power_supply_leds.cdrivers/power/supply/power_supply_fysfs.c模块入口函数在power_supply_core.c中subsys_initcall(power_supply_class_init);提前于驱动模块的加载。// drivers/power/supply/power_supply_core.

2021-05-26 16:13:23 2150 1

原创 Linux内核高精度定时器(hrtimer)

内核为高精度定时器重新设计了一套软件架构,它可以为我们提供纳秒级的定时精度,以满足对精确时间有迫切需求的应用程序或内核驱动。该套架构相关文件为kernel\time\hrtimer.c和include\linux\hrtimer.h。...

2021-05-10 20:02:45 4103

原创 Linux内核通知链(notifier chain)

1、概述Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notification chain)。通知链只能用在各个子系统之间,而不能在内核和用户空间进行事件的通知。组成内核的核心系统代码均位于kernel目录下,通知链表位于kernel/notifier.c中,对应的头文件为include/linux/notifier.h。事件通知链表是一个事件处理函数的列表,

2021-05-08 17:20:59 1603

原创 基于STM32 HAL库的SPI通信原理分析与调试

一、 SPI原理分析SPI是串行外设接口(Serial Peripheral Interface)的缩写。 Motorola 公司推出的一种同步串行接口技术,是一种高速的,同步的通信总线。四线(CS,CLK,MOSI和MISO)的SPI通信时全双工模式,三线(CS,CLK,MOMI)的SPI通信时半双工模式。省略cs虽然也是三线(当只有一个从机时,可以把从机的片选设置为有效电平,使其一致处于使能状态。这也造成可以最少使用2根线进行通信。),但是并不是完全意义上的三线。1、SPI优点支持全双工通信、通信

2021-04-05 21:06:40 2095

原创 linux开发版nfs加载根文件系统

1、设置windows、linux和arm能够相互ping通。1.1vmware中的ubuntu设置。1.1.1首先设置虚拟机,设置为桥接模式,然后选择PCIE相关选项。1.1.2设置ubuntu设置ubuntu的ip地址和子网掩码。ip地址和window的ip地址在一个地址段内。1.1.3设置好ubuntu中需要开发版使用的文件系统目录,然后启动nfs服务。sudo /etc/init.d/nfs-kernel-server restart1.2windows设置1.2.1右

2021-01-10 19:33:46 323

原创 linux内核休眠、唤醒流程分析之恢复(九)

// kernel\power\suspend.c /** * suspend_enter - Make the system enter the given sleep state. * @state: System sleep state to enter. * @wakeup: Returns information that the sleep state should not be re-entered. * * This function should be called aft.

2020-12-14 10:49:37 573

原创 linux内核休眠、唤醒流程分析之挂起:cpu(八)

从内核启动说起// init\main.casmlinkage __visible void __init start_kernel(void){ …… setup_arch(&command_line); ……// arch\arm64\kernel\setup.cvoid __init setup_arch(char **cmdline_p){ …… psci_dt_init(); ……// drivers\firmware\psci\psci.cstati

2020-12-11 21:42:13 550

原创 linux内核休眠、唤醒流程分析之挂起:pm.suspend_noirq(七)

// kernel\power\suspend.c /** * suspend_enter - Make the system enter the given sleep state. * @state: System sleep state to enter. * @wakeup: Returns information that the sleep state should not be re-entered. * * This function should be called aft.

2020-12-10 18:02:29 1525 2

原创 linux内核休眠、唤醒流程分析之挂起:pm.suspend_late(六)

// kernel\power\suspends.c/** * suspend_devices_and_enter - Suspend devices and enter system sleep state. * @state: System sleep state to enter. */int suspend_devices_and_enter(suspend_state_t state){ int error; bool wakeup = false; if (!sleep_s

2020-12-10 17:04:17 620

原创 linux内核休眠、唤醒流程分析之挂起:pm.prepare(四)

然后是进入函数// kernel\power\suspends.c/** * suspend_devices_and_enter - Suspend devices and enter system sleep state. * @state: System sleep state to enter. */int suspend_devices_and_enter(suspend_state_t state){ int error; bool wakeup = false; if (

2020-12-10 16:32:28 346

原创 linux内核休眠、唤醒流程分析之挂起:pm.suspend(五)

然后调用dpm_suspend实现挂起流程,即流程图中的过程4。// drivers\base\power\main.c/** * dpm_suspend - Execute "suspend" callbacks for all non-sysdev devices. * @state: PM transition of the system being carried out. */int dpm_suspend(pm_message_t state){ ktime_t startti

2020-12-10 16:06:54 851

原创 linux内核休眠、唤醒流程分析之挂起:Call Notifiers、Freeze任务(三)

linux内核休眠唤醒、流程分析之挂起:pm.prepare(3)入口函数为pm_suspend// kernel\power\suspend.c/** * pm_suspend - Externally visible function for suspending the system. * @state: System sleep state to enter. * * Check if the value of @state represents one of the support

2020-12-10 15:57:40 414 1

原创 linux内核休眠、唤醒流程分析之电源管理初始化(二)

linux内核休眠唤醒、流程分析之电源管理初始化(2)linux内核电源管理相关函数在kernel/power/main.c中。入口函数如下:// kernel\power\main.cstatic int __init pm_init(void){ int error = pm_start_workqueue(); if (error) return error; hibernate_image_size_init(); hibernate_reserved_size_init()

2020-12-10 15:49:01 307

原创 linux内核休眠、唤醒流程分析之挂起到RAM(一)

linux驱动之电源管理挂起到RAMLinux支持STANDBY、挂起到RAM、挂起到硬盘等形式的待机,如图所示。一般的嵌入式产品仅仅实现了挂起到RAM(s2ram/STR),即将系统的状态保存到内存中,并将SDRAM置于自刷新状态,待用户按键等操作后再重新恢复系统。少数嵌入式linux系统会实现挂起到硬盘(STD),它与挂起到RAM不同的是s2ram并不关机,STD则吧系统的状态保存于硬盘,然后关闭整个系统。...

2020-11-27 16:54:23 1016

原创 linux内核定时器的使用(基于kernel5.8.1)

linux内核定时器的使用1、timer的使用timer相关函数的定义在kernel\time\timer.c和include\linux\timer.h中。定时器的结构体为// include\linux\timer.hstruct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct hlist_node entry;

2020-10-20 19:54:53 1379 2

原创 Linux的LED子系统分析

Linux的LED子系统分析1、leds目录的创建led子系统的入口模块为drivers\leds\led-class.c// drivers\leds\led-class.cstatic int __init leds_init(void){ leds_class = class_create(THIS_MODULE, "leds"); if (IS_ERR(leds_class)) return PTR_ERR(leds_class); leds_class->pm = &a

2020-10-08 21:35:52 198

原创 sysfs设备节点创建分析

sysfs设备节点创建分析sysfs是一种基于ram的文件系统,它提供了一种用于向用户空间展现内核空间里的对象、属性和链接。1、使用流程1.1、使用DEVICE_ATTR设置设备属性。DEVICE_ATTR的定义如下#define DEVICE_ATTR(_name, _mode, _show, _store) \ struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)@_name:名称,也

2020-10-07 21:45:42 453

原创 linux内核中断详解

linux内核中断1、中断的硬件触发流程外设:如果外设有操作或者有数据可用,那么就会产生一个电信号,这个电信号发送给中断控制器。中断控制器:中断控制器接收到外设发来的电信号以后,进行进一步的处理,判断这个中断是否使能或者禁止,判断它的优先级等,如果需要发送给CPU一个信号,那么中断控制器就会给cup发送一个电信号。CPU:CPU接收到中断控制器发送过来的电信号以后,CPU就会无条件跳转到异常向量表的入口,后续CPU就处理对应的中断。2、中断处理程序编写时的注意事项1.中断处理函数不隶属于任何进程

2020-10-06 14:59:58 1802

原创 Linux GPIO子系统API

Linux GPIO子系统APIstatic inline bool gpio_is_valid(int number)该函数用来判断获取到的gpio号是否是有效的,只有有效的gpio号,才能向内核中进行申请使用,因此,当我们从设备树的设备节点获取到gpio号,可以使用该函数进行判断是否有效。int gpio_request(unsigned gpio, const char *label)该函数用于申请一个 GPIO管脚,在使用一个 GPIO之前一定要使用 gpio_request进行申请。

2020-10-05 13:38:28 2689

原创 linux设备树常用of操作函数

linux设备树常用of操作函数设备树描述了设备的详细信息,这些信息包括数字类型的、字符串类型的、数组类型的,这些信息一般通过of函数获取,这些of函数的原型大部分定义在include/linux/of.h文件中,其中GPIO相关的定义在include/inux/of_gpio.h中。1、 GPIO相关static inline int of_get_named_gpio(struct device_node *np, const char *propname, int index)@np: gp

2020-10-04 22:25:48 1475

原创 linux内核中的devm_kzalloc

linux内核中的内存分配1、devm_kzalloc & devm_kfree函数devm_kzalloc和kzalloc一样都是内核内存分配函数,但是devm_kzalloc是跟设备(装置)有关的,当设备(装置)被拆卸或者驱动(驱动程序)卸载(空载)时,内存会被自动释放。另外,当内存不在使用时,可以使用函数devm_kfree()释放。而kzalloc没有自动释放的功能,用的时候需要小心使用,如果忘记释放,会造成内存泄漏。函数原型为void * devm_kzalloc (struct

2020-10-04 10:48:01 9578

原创 linux内核i2c适配器功能

linux内核i2c适配器功能以kernel5.8.1为例,i2c适配器的功能定义在uapi/linux/i2c.h// i2c.h#define I2C_FUNC_I2C 0x00000001#define I2C_FUNC_10BIT_ADDR 0x00000002#define I2C_FUNC_PROTOCOL_MANGLING 0x00000004 /* I2C_M_IGNORE_NAK etc. */#define I2C_FUNC_SMBUS_PEC 0x00000008

2020-10-03 20:56:07 404

原创 linux内核模块加载顺序分析

linux内核模块加载顺序分析Linux内核中为了确定不同模块的加载顺序,通过一些宏定义了一些优先级,不同的模块通过不同的宏修饰,可以确定加载的先后顺序。以kernel5.8.1为例,在include\linux\module.h中定义了module_init。// module.h#define module_init(x) __initcall(x);其中__initcall的定义在include\linux\init.h中。// init.h#define __define_ini

2020-10-03 19:31:21 1099

原创 linux内核IIC架构分析(基于内核5.8.1)

linux内核IIC架构源码分析

2020-09-27 20:14:21 423

原创 Linux的input(输入)子系统详解(基于内核5.8.1)

Linux的input(输入)子系统详解该文章详细介绍了input子系统的内部流程架构和使用。分别从设备驱动层和事件处理层分析内核源码,最后介绍了从用户空间调用设备驱动和设备驱动的响应过程。

2020-09-26 20:57:53 572

原创 使用Ubuntu18.04编译android8.1

使用虚拟机中的Ubuntu18.04编译android8.11、软硬件要求1.1、硬件16G的内存;200G的存储盘。1.2、软件Ubuntu18.04这样的软硬件要求并非必须,但是经过测试这样的配置刚好能够正常编译android8.1。200G的存储盘,正常编译完成,加上虚拟机的大小总共占了190G左右。期间没有删除任何过程文件。2、确保Ubuntu的apt-get命令能够正常使用在开始工作时,首先要保证sudo apt-get update命令能够正常执行,即首先执行该命令保证a

2020-09-20 21:57:05 1491

转载 Python3 如何优雅地使用正则表达式(详解七)

常见问题正则表达式是一个非常强大的工具,但在有些时候它并不能直观地按照你的意愿来运行。本篇我们将指出一些最常见的错误。使用字符串方法有时使用 re 模块是个错误!如果你匹配一个固定的字符串或者单个字符类,并且你没有使用 re 的任何标志(像 IGNORECASE 标志),那么就没有必要使用正则表达式了。字符串有一些方法是对固定字符串进行操作的,并且它们通常比较快。因为它们都是独立优化的 C ...

2019-07-01 17:43:46 137

转载 Python3 如何优雅地使用正则表达式(详解六)

修改字符串我们已经介绍完如何对字符进行搜索,接下来我们讲讲正则表达式如何修改字符串。正则表达式使用以下方法修改字符串:方法 用途 split() 在正则表达式匹配的地方进行分割,并返回一个列表 sub() 找到所有匹配的子字符串,并替换为新的内容 subn() 跟 sub() 干一样的勾当,但返回新的字符串以及替换的数目 分割字符串正则表达式...

2019-07-01 17:43:02 150

转载 Python3 如何优雅地使用正则表达式(详解五)

非捕获组命名组精心设计的正则表达式可能会划分很多组,这些组不仅可以匹配相关的子串,还能够对正则表达式本身进行分组和结构化。在复杂的正则表达式中,由于有太多的组,因此通过组的序号来跟踪和使用会变得困难。有两个新的功能可以帮你解决这个问题——非捕获组和命名组——它们都使用了一个公共的正则表达式扩展语法。我们先来看看这个表达式扩展语法是什么。正则表达式的扩展语法众所周知,Perl 5 为标准的正则...

2019-07-01 17:42:15 166

转载 Python3 如何优雅地使用正则表达式(详解四)

更多强大的功能到目前为止,我们只是介绍了正则表达式的一部分功能。在这一篇中,我们会学习到一些新的元字符,然后再教大家如何使用组来获得被匹配的部分文本。更多元字符还有一些元字符我们没有讲到,接下来小甲鱼一一为大家讲解。有些元字符它们不匹配任何字符,只是简单地表示成功或失败,因此这些字符也称之为零宽断言。例如\b表示当前位置位于一个单词的边界,但\b并不能改变位置。因此,零宽断言不应该...

2019-07-01 17:41:34 122

转载 Python3 如何优雅地使用正则表达式(详解三)

模块级别的函数使用正则表达式也并非一定要创建模式对象,然后调用它的匹配方法。因为,re 模块同时还提供了一些全局函数,例如 match(),search(),findall(),sub() 等等。这些函数的第一个参数是正则表达式字符串,其他参数跟模式对象同名的方法采用一样的参数;返回值也一样,同样是返回 None 或者匹配对象。>>> print(re.match(r'...

2019-07-01 17:40:44 130

转载 Python3 如何优雅地使用正则表达式(详解二)

使用正则表达式现在我们开始来写一些简单的正则表达式吧。Python 通过 re 模块为正则表达式引擎提供一个接口,同时允许你将正则表达式编译成模式对象,并用它们来进行匹配。小甲鱼解释:re 模块是使用 C 语言编写,所以效率比你用普通的字符串方法要高得多;将正则表达式进行编译(compile)也是为了进一步提高效率;后边我们会经常提到“模式”,指的就是正则表达式被编译成的模式对象。编译正则表达...

2019-07-01 17:39:50 198

AT24C02资源

精品资源

2018-05-13

STM32F103ZET6很好的技术文档

STM32F103ZET6很好的技术文档

2018-05-13

AL422B英文手册

AL422B手册

2018-05-13

AT91SAM9260 Preliminary Complete

AT91SAM9260 手册

2018-05-12

空空如也

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

TA关注的人

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