自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (家用)汽车充电桩项目总结分析

根据目前汽车充电桩线下状态更新不及时,以及充电桩位置充电桩自身设备闲置或损坏等情况,需要加装摄像头或者GPS,让电车使用者及时了解充电桩信息,汽车电量耗尽之前及时找到合适的汽车充电桩。(3)充电桩使用情况数据更新问题,包括充电桩是否损坏、充电桩车位是否被占用等问题,对于车辆电量严重欠缺的情况影响巨大。(5)电车车主检测周围充电桩环境和便捷性以及家用充电桩安装难易程度。(4)公共充电桩电费价格与家用充电桩电费价格的差别。(1)快充——直流充电(DC充电桩)(2)慢充——交流充电(AC充电桩)

2024-07-26 15:38:00 125

原创 第一阶段面试题总结

多个进程间内存空间独立,有各自的文本段、数据段、系统数据段、内核。进程是一个程序的运行实例,它包含了程序的代码、数据和状态。3. 通信能力和便捷性:进程 > 线程。线程是进程中的一个执行单元,一个进程可以包含多个线程。进程是一个程序动态执行的过程,包括创建、调度和消亡。1. 线程和进程的概念,区别、以及什么时候用线程什么时候用进程。进程是操作系统资源分配的最小单元。1. 安全性:进程 > 线程。2. 效率:线程 > 进程。线程是一个轻量级的进程。同一个进程中的所有线程。1.3 进程和线程的区别。

2024-07-16 22:39:16 226

原创 充电桩项目

1. 用链表将各个线程串联起来,各个线程内容使用结构体保存,使用队列保存各个线程间的数据,线程间共享数据,通过遍历链表名,或者线程id找到对应要发送数据的位置,使用队列,将数据入队到目的队列中,获取接收到的数据时,使用getpid或者线程名找到自己的结构体,找到自己的队列,出队数据。充电桩温度变化引起PT100阻值变换(测温电流衰减微弱,几乎恒定,电压随之变化),经过测温模块转化成电压的变化(内部是电流的变化),输出电压值,模拟电压值经过ADS1115转化成数字量的温度值。1. 先采集(随机生成)

2024-07-10 14:52:46 138

原创 【无标题】

1. UDP(丢包:乱序 帧头5A、A5、55)、TCP(modbus)(粘包)并发服务器、多进程、多线程、线程池、多路复用seletc、poll、epoll。1. 基于操作系统的相关驱动、字符设备驱动、platform总线。3. Lora(串口通信)(一对一、一对多):近距离组网。2. 显示设备显示采集的各项数据、显示数据是否异常。3. 网络层(网卡驱动、IPV4)4. 并行采集、串行采集(进线程)线程屏障或轮询。1. 采集水池温度、水池深度、水池含氧量、4. 数据显示模块(UI界面、用户交互界面)

2024-07-08 11:37:03 327

原创 嵌入式学习——硬件(Linux内核驱动编程platform、内核定时器、DS18B20)——day61

2. 内核定时器驱动——(3秒延时)1. platform驱动框架。1.1 设备device。1.2 驱动driver。

2024-07-06 15:58:41 167

原创 嵌入式学习——硬件(Linux内核驱动编程中断、队列、ADC)——day60

1.按键(中断处理)——混杂设备驱动。3. ADC中断队列——混杂设备驱动。2. 按键队列——混杂设备驱动。

2024-07-05 21:20:46 243

原创 嵌入式学习——硬件(Linux内核驱动编程LED、蜂鸣器、按键)——day59

3. LED标准字符设备驱动(省去在linux终端mknod的过程,直接insmod的即可运行程序)1. 编写LED驱动(初始化所有子设备号)2. 编写LED驱动(初始化一个子设备号)5. 按键(轮询查看按键)——混杂设备驱动。4. 蜂鸣器——混杂设备驱动。

2024-07-05 21:08:55 165

原创 嵌入式学习——硬件(Linux内核编程)——day58

Linux内核是开源的,意味着任何人都可以查看、修改和分发其源代码。在现代计算机系统中,ICACHE和DCACHE通常是处理器内部的一部分,它们通过缓存预取(cache prefetching)和替换策略(cache replacement policies)来优化缓存的命中率,以最大限度地提高系统的性能和响应速度。ICACHE(Instruction Cache)和DCACHE(Data Cache)是计算机体系结构中的两种缓存类型,它们分别用于存储指令和数据,旨在提高处理器访问存储器的效率。

2024-07-04 08:42:49 715

原创 嵌入式学习——硬件(Linux系统在2440上的启动)——day57

bootloader的本质是一个裸机程序,bootlood专门是为了能够正确地启动linux操作系。统,在系统初上电时需要对系统做一些硬件的初始化操作。(kernel)加载到ram中,并引导系统去执行linux代码,完成linux的启动。13. 能够复制linux内核程序到指定的内存空间,并引导系统运行。11. 提供一个类似于linux那样的终端,方便与操作人员互动;10. 初始化网卡并集成一些必要的协议,如tcp,tftp等;:广泛应用于嵌入式系统中的引导加载程序,具有丰富的硬件支持和配置选项。

2024-07-02 22:57:30 261

原创 嵌入式学习——硬件(IIC、ADC)——day56

IIC总线规定,设备在空闲时,两根总线都处于高电平状态。作为一种通信方式,IIC总线在某一时刻,总线只允许有一个设备处于发送状态,所发出的数据被总线上所有的设备所接收。IIC通信协议包含有设备地址,只有发送方携带的地址与某个接收方的地址相同时,接收方才真正执行相关的指令。上图所示是IIC的总线的使用场景,所有挂载在IIC总线上的设备都有两根信号线,一根是数据线SDA,另一根是时钟线SCL。这两个信号线都是双向的。2. IIC总线上两根线都给高电平,如何保证两根总线上为高电平,给两根总线上都加上拉电阻。

2024-07-01 22:04:25 1379

原创 嵌入式学习——硬件(UART)——day55

1. TCON 2 定时器输出变相开关 0刚开始低电平、 1刚开始低电平。1. 计数器监视寄存器查看计数器从开始减到目前的数字,查看当前的数字减到了多少。3. 传一个字节,8位+1位起始位+1位停止位,传输一个字节即传输十个比特。i++(会开辟临时变量保存i++) printf打印i为3,i++为2。++i printf打印i和++i都是2+1=3。5. i++和++i(++i效率高)电平:数据收发过程中产生中断。脉冲:数据收发完产生中断。串行:一次收发一个比特。7. CRC校验算法。

2024-06-30 16:09:05 333

原创 嵌入式学习——硬件(s3c2440外部中断、定时器中断)——day54

2. CPU查询中断是否被运行、以及中断是否被屏蔽。3. CPU考察中断优先级。2. 外部中断是带有sub寄存器的子请求源。1. 中断源发出中断请求。MPLL:给主板倍频(不要修改MPLL)5. 执行中断服务函数。4. CPU保护现场。pend 给1是0 给0是1。3. 对pend寄存器写1是清零。PLL锁相环:倍频,使频率升高。分频器:分频,将频率升高。UPLL:给USB倍频。

2024-06-27 21:37:04 324

原创 嵌入式学习——硬件(s3c2440流水灯和按键)——day53

【代码】嵌入式学习——硬件(s3c2440流水灯和按键)——day53。

2024-06-26 21:16:51 188

原创 嵌入式学习——硬件(ARM内核汇编指令)——day52

3. 长整型unsigned long long(八个字节)arm为四个字节。b指令只能跳转、bl指令跳转完会保存跳转前下一条指令的地址、bx。1. lar、str、bic(置零) orr(置一)4. 跳转指令(b 标签foo、类似于goto)rd目标寄存器、rn操作数寄存器、6. c语言会自动保护现场恢复现场。cmp 比较大小(影响NACV)^spsr恢复成cpsr。入栈保护:stmfd。

2024-06-25 23:26:06 229

原创 嵌入式学习——硬件(ARM体系架构)——day51

(1)RISC的全称是“精简指令集计算”(Reduced Instruction Set Computing)i.cache:指令缓存(Instruction Cache)(1)冯·诺依曼结构(Von Neumann Architecture)***************重点部分***************(1)ram——(随机存储器、掉电丢失数据、存储临时程序和数据)(2)rom——(只读存储器、掉电不丢失、存储固定数据和程序)(2)哈佛结构(Harvard Architecture)

2024-06-25 08:58:34 1204

原创 嵌入式学习——数据结构(哈希、排序)——day50

相同数据的相对位置在排序前后的前后相对位置不发生变化。5.5 低储存(空间复杂度)空间复杂度越低,存储空间越少。5.4 高效率(时间复杂度)时间复杂度越低,效率越高,2. 时间复杂度——(o(nlogn)2. 时间复杂度——(o(n^2))2. 时间复杂度——(o(n^2))1. 查找二叉树、搜索二叉树、平衡二叉树。2. 哈希表——人的身份证——哈希函数。3. 稳定性——稳定。3. 稳定性:不稳定。5.2 可读性(高内聚、低耦合)3. 哈希冲突、哈希矛盾。

2024-06-23 18:10:28 371

原创 嵌入式学习——数据结构(队列、二叉树)——day49

高速设备和低速设备利用缓冲区进行协调匹配。8. 树——一对多(与线性一对一不同)(二叉树的思想是递归)8.4 完全二叉树(从满二叉树中从左至右、从前置后插入)3. 串口数据的通信利用队列进行协调。2. 缓冲区——先进先出的队列。节点的度:该节点后继节点的个数。8.1 深度和(广)度(数的度(广度))7. 队列和栈的区别——队列应用更广泛。4. 顺序队列——循环队列(非重点)8.3 满二叉树(树都是饱满的)8.2 二叉树((广)度为2)1. 满二叉树第k层节点个数。叶子节点:没有后继节点。

2024-06-21 09:18:53 235

原创 嵌入式学习——数据结构(双向无头有环链表、内核链表、栈)——day48

先进后出 first in last out。增:栈顶指针向内存高地址移动(0x1000低地址 ——0x2000高地址)快指针每走一步,判断是否为空或者是否与慢指针相遇。只允许从一端进行插入和删除的数据结构称为栈。利用快慢指针判断是否相遇。2. 函数的形参、返回值。浏览器返回上一层操作。满、空栈:栈顶所在位置是否存有数据。减:栈顶指针向内存低地址移动。1. 判断单向链表是否有环。

2024-06-21 09:18:49 419

原创 嵌入式学习——数据结构(双向无头无环链表)——day47

【代码】嵌入式学习——数据结构(双向无头链表)——day47。

2024-06-18 19:30:42 296

原创 嵌入式学习——数据结构(单向无头链表)——day46

它不仅包括数据元素的存储方式,还包括数据元素之间的关系,以及对数据进行操作的方法和算法。数据结构的选择和设计直接影响算法的效率和程序的性能,是计算机科学与编程中非常重要的基础。它衡量的是算法的执行时间随输入规模的变化情况,通常用大O记号表示,如O(n)、O(log n)等。3. 散列存储(哈希存储)将数据元素的存储位置与关键码之间建立确定对应关系从而实现查找的存储方式。顺序表、链式表、顺序栈、链式栈、顺序队列、链式队列、二叉树、哈希表。1. 线性结构(一对一)表、数组、链表、队列、栈。

2024-06-17 10:41:47 206

原创 嵌入式学习——Linux高级编程复习(HTML编程)——day45

title>中文测试。这里是测试body测试内容。1.格式 dreamwave。

2024-06-17 09:13:03 131

原创 嵌入式学习——Linux高级编程复习(TCP编程)——day44

type:SOCK_STREAM 流式套接字 tcp传输协议。线程编译gcc要加后缀 -lpthread。成功返回与发送端建立的新文件描述符(通信套接字)addrlen:想要接收地址大小变量空间首地址。addr:存放链接对方地址信息空间首地址。将本地字节序(小端)转换为网络字节序(大端)addrlen:接收方地址的大小。addr:接收方地址空间首地址。1.序列号:发送字节内容在缓存区中的编号(要发送字节的编号)2.确认号:收到字节内容的编号(只有ACK为1时才有确认号)

2024-06-15 16:47:38 976

原创 嵌入式学习——Linux高级编程复习(UDP编程)——day43

* port in network byte order */(端口号、小端存储要改成大端存储)sa_family_t sin_family;/* address family: AF_INET */(协议族)struct in_addr sin_addr;type:SOCK_STREAM 流式套接字 tcp传输协议。addrlen:想要接收发送端地址大小的变量空间首地址。src_addr:存放发送端地址信息空间首地址。

2024-06-15 16:21:13 1013

原创 嵌入式学习——Linux高级编程复习(网络编程)——day42

每个层次都有明确的功能,提供特定的服务,并通过相邻层的接口与其交互。OSI模型为网络通信提供了一个逻辑分层的框架,便于理解、设计和故障排查,但它更多地作为一个理论模型存在,并未直接转化为实际的网络实现。TCP/IP是一个实际使用的、更为实际的网络通信协议集合,它最初由美国国防部研发,用于互联网的通信。通信双方约定的一套标准称为协议。2. OSI参考模型。

2024-06-12 09:52:17 566

原创 嵌入式学习——数据库(SQL语句和sqlite编程)——day35

sqlite> select 学生信息.姓名 as 学生, 学生成绩.课程编号 as 课程, 学生成绩.课程成绩 as 成绩。sqlite> select 学生信息.姓名 as 学生, 课程信息.课程名 as 课程, 学生成绩.课程成绩 as 成绩。select 学生信息.姓名,课程信息.课程名 from 学生信息 cross join 课程信息;...> from 学生信息 inner join 学生成绩 on 学生信息.学号 = 学生成绩.学号;sqlite3*:打开数据库时获得的句柄。

2024-06-11 09:04:52 977

原创 嵌入式学习——Linux高级编程复习(互斥锁、信号量、管道、信号)——day41

原子操作(Atomic Operation)是指在计算机科学中,那些不可中断的操作序列,这些操作要么全部完成要么完全不执行,不存在执行到一半的状态。管道主要用于进程间通信,特别是具有血缘关系的进程,而信号则是进程间的异步通信方式。匿名管道是半双工的,数据只能单向流动,且主要用于进程间通信。互斥锁可以理解为是一种资源,一旦互斥锁被加锁,另外的线程任务无法继续加锁,必须等待互斥锁被解锁,另外的任务才能加锁。简而言之,同步强调操作的顺序执行和相互等待,而异步则允许操作并发执行,无需等待其他操作的完成。

2024-06-10 12:57:16 1186

原创 嵌入式学习——Linux高级编程复习(线程)——day40

线程被包含在进程之中,一个进程可以包含一个或多个线程,每个线程代表进程中的一个执行路径,能够并发或并行执行不同的任务。3.1 引用互斥锁的原因:利用全局变量能够实现两个线程任务通信,线程任务通信操作全局变量可能会引发资源竞争,为避免资源竞争,引入互斥锁机制。互斥锁可以理解为是一种资源,一旦互斥锁被加锁,另外的线程任务无法继续加锁,必须等待互斥锁被解锁,另外的任务才能加锁。2.多线程都在同一进程空间内部,一个线程异常结束,导致进程异常结束,1.多进程各自独立,一个进程异常结束,不会影响其余进程。

2024-06-09 20:48:58 850

原创 嵌入式学习——Linux高级编程复习(进程)——day39

进程控制块(PCB,Process Control Block)是操作系统中用于描述和控制进程状态和属性的一个重要数据结构。每个活动的进程在操作系统中都有一个对应的PCB,它是进程存在的唯一标识。进程是计算机科学中的一个核心概念,它是操作系统进行资源分配和调度的基本单位,代表了一个正在执行中的程序实例。2. 进程的创建(创建了一片虚拟内存空间、多个进程共用同一片虚拟内存空间,进程空间在实际的物理地址是独立的)用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),

2024-06-09 19:37:52 626

原创 嵌入式学习——Linux高级编程复习(MiniShell)——文件IO、标准IO、目录IO、软硬链接、makefile

【代码】嵌入式学习——Linux高级编程复习(MiniShell)——文件IO、标准IO、目录IO、软硬链接、makefile。

2024-06-09 09:59:38 149

原创 嵌入式学习——Linux高级编程复习(目录IO、软硬连接、makefile)——day38

在Unix/Linux系统和类似系统中,目录被视为特殊的文件,可以对其进行打开、读取、写入(修改)和关闭等操作。= 前面没有给变量赋值,则给变量赋等号后的值。通过文件在虚拟文件系统(VFS)中的inode节点链接。2.make执行对应目录下的makefile文件。要生成的文件:所有依赖的文件(中间以空格隔开)5.1 在文件夹下编写一个名为makefile的脚本文件。4.查找所有依赖的文件是否都存在。ln 被链接文件 链接文件名。$^:所有依赖的文件。$<:第一个依赖的文件。

2024-06-08 22:06:32 845

原创 嵌入式学习——Linux高级编程复习(文件IO)——day37

文件IO是指文件输入/输出,是计算机程序中用于读取和写入文件的操作。通过文件IO,程序可以从文件中读取数据到内存中,或者将内存中的数据写入文件中,文件可以是磁盘上的普通文件、设备文件(如打印机、磁盘驱动器)、管道、套接字等。文件IO是与外部存储介质(如硬盘、固态硬盘、闪存驱动器等)交互的主要方式,它允许程序与文件系统进行通信,实现数据的持久化存储和读取。文件描述符是操作系统中用于标识一个文件或者其他I/O资源的整数。在Unix-like系统中,每个打开的文件、套接字、管道等都会分配一个唯一的文件描述符。

2024-06-08 21:11:45 1021

原创 嵌入式学习——Linux高级编程复习(标准IO)——day36

流指针的主要作用是跟踪文件的位置,这样在进行文件读写操作时就知道从哪里开始读取或者写入数据。在文件读取时,流指针会自动向前移动,以便指向下一个要读取的数据;你声明一个FILE *fp ,并把fopen(某个文件)返回的值赋予fp这两个动作就相当于建立了一个水龙头,当你用getc(fp)之类的输入函数读取文件字符时就相当于拧开了水龙头,每读取一个字符,这个文件就像水一样的流动一下,fp所指的地址自然就向后移动了一位。"a" 追加只写打开 文件存在追加只写打开,文件不存在创建文件。

2024-06-08 18:11:52 974

原创 嵌入式学习——网络编程(HTTP)——day32

1. HTTP。

2024-06-07 11:09:53 123

原创 嵌入式学习——网络编程——day33基于网络爬虫技术的天气数据查询

我们都知道,天气数据不但影响着我们的各行各业,而且也和我们个人息息相关,能够快速的获取所需要的天气数据能够为我们的日常工作和生活提供非常大的便利。目前天气数据都会通过各种网站进行发布,虽然我们可以通过这些网站进行数据的浏览,但是通常这些数据都是零散的,不同网站的数据格式也是多种多样的,我们很难直接快速按照特定格式获取特定时间段的天气数据列表。该系统将基于目前比较流行的网络爬虫技术,对网站上的天气数据进行查询分析,最终使客户能够通过简单的操作,快速,准确的获取目标天气数据。2.3 本周天气数据查询。

2024-06-07 11:09:29 137

原创 嵌入式学习——网络编程(IO多路复用、IO模型)——day34

1.效率高,当有IO事件发生时,内核会向应用层发送SIGIO信号,此时可以操作IO事件。4.1 select——谁产生事件了,谁留在文件描述符集合中,没产生的踢出去(用户层)1.效率低,当没有IO事件时,CPU一直轮询判断是否有IO事件发生。创建一个用来监听事件的内核事件表。2.只能操作一个文件描述符,多个文件描述符无法区分。1.效率高,当没有IO事件时,任务被挂起,不占用CPU资源。size:事件表中事件个数。maxevents:最多存放事件的个数。events:存放产生事件的数组。

2024-06-07 11:06:26 550

原创 嵌入式学习——网络编程(TCP)——day31

成功返回与发送端建立的新文件描述符(通信套接字)addrlen:想要接收地址大小变量空间首地址。addr:存放链接对方地址信息空间首地址。将本地字节序(小端)转换为网络字节序(大端)将网络字节序(大端)转换为本地字节序(小端)addrlen:接收方地址的大小。addr:接收方地址空间首地址。flags:属性 默认为0。buf:存放数据空间首地址。flags:属性 默认为0。buf:存放数据空间首地址。sockfd:文件描述符。sockfd:文件描述符。sockfd:文件描述符。sockfd:文件描述符。

2024-06-03 23:02:42 1138

原创 嵌入式学习——网络编程(UDP)——day30

* address family: AF_INET */(协议族)(1)IP:192.168.0.189 —— 网络位(192.198.0) 主机位(189)/* internet address */(IP地址)(0 - 65535)(不要使用10000以内的,10000以内的是系统的)广播号:网络位不变,主机位全为1的IP地址——192.168.0.255。

2024-06-03 09:06:19 753

原创 嵌入式学习——信号通信——day29

1. 信号。

2024-05-29 10:14:23 114

原创 嵌入式学习——管道通信——day28

1。

2024-05-29 09:09:26 92

原创 嵌入式学习——进线程(互斥锁和同步)——day27

1. 两个线程进行售票处理,售票一百张。2. 对资源的获取和释放。

2024-05-27 18:03:03 314

空空如也

空空如也

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

TA关注的人

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