- 博客(61)
- 资源 (1)
- 收藏
- 关注
原创 OS虚拟内存管理
虚拟内存管理是操作系统设计的核心,涉及分页机制、安全性、内核态/用户态隔离和页表设计等关键点。通过x86的二级分页机制,每个任务有独立的页目录,内核空间映射到高地址(如0xC0000000 ~ 0xFFFFFFFF),并设置U/S=0,确保用户进程无法访问内核内存。用户空间(0x00000000 ~ 0xBFFFFFFF)由各进程的私有页表定义,实现虚拟内存上的隔离保护。进程切换时,通过CR3寄存器切换页表,确保每个进程拥有独立的地址空间。这种设计不仅提高了安全性,还为多任务调度和用户态支持奠定了基础。
2025-05-22 17:13:04
487
原创 OS进程调度
在进程同步方面,我实现了可重入互斥锁和标准的计数信号量,所有操作都支持阻塞/唤醒机制,并结合调度器完成进程切换。在具体实现中,我使用了链表管理等待队列,利用关闭中断保护临界区,确保在多任务切换下保持一致性。在 TTY 缓冲区、磁盘读写等模块中广泛应用,保证了多进程访问资源的正确性。
2025-05-21 21:11:01
509
原创 【无标题】
本项目是一个基于x86架构的类Linux操作系统内核,完全使用C语言与x86汇编语言开发,支持32位保护模式。系统具备基础的内核功能,包括任务调度、内存分页管理、中断处理、系统调用、文件系统、设备驱动、终端交互以及用户程序加载执行。目标是从裸机启动到运行用户shell的最小但功能完整的操作系统环境。系统模块架构清晰,包括启动与内核初始化、中断与异常机制、内存管理、进程管理与调度、文件系统、设备驱动框架、系统调用机制、用户态接口以及工具与通用模块。系统初始化流程详细,系统调用路径示意明确。项目适合教学、自研系
2025-05-19 21:22:44
538
原创 【操作系统面经】持续更新ing
本文摘要介绍了操作系统内核设计与实现的面试问题及回答思路,涵盖整体架构设计、Bootloader与保护模式切换、中断与异常处理、进程管理与调度四个模块。在整体架构设计中,强调了动机与目标、模块划分与解耦、调试工具与技巧。Bootloader部分讨论了实模式到保护模式的切换、GDT设计、A20地址线开启等问题。中断与异常处理部分详细介绍了IDT初始化、上下文保存与恢复、缺页异常处理等内容。进程管理与调度部分则涉及PCB设计、调度算法、进程切换、同步与互斥等核心问题。文章通过具体示例展示了如何回答面试中的技术细
2025-05-19 20:05:00
1170
原创 【FPGADefender: Malicious Self-Oscillator Scanning for Xilinx UltraScale+ FPGAs论文笔记】
共享配置位流而不是网表是保护IP或共享IP而无需更长的CAD工具处理时间的非常理想的功能。此外,越来越多的系统可以从在同一FPGA上为多个用户提供服务中获益匪浅,例如,用于云基础设施中的资源池。本文从硬件安全的角度研究了恶意应用程序在多租户场景下对基于FPGA的系统造成的威胁。特别是,本文系统地评估了通过短路和自振荡电路进行FPGA功率冲击的风险,这些电路可能会对系统造成危害。这种风险包括实施、调整和评估从文献中已知的所有FPGA自振荡器,但也包括开发大量以前从未考虑过的新功率锤击设计。
2023-01-15 00:59:52
657
1
原创 Voltage Drop-based Fault Attacks on FPGAs using Valid Bitstreams论文笔记
背景+现有存在问题由于FPGA在许多关键应用领域的广泛应用,其安全性备受关注。在最近的系统中,例如云端FPGA或Systemson芯片(SoC),用户甚至可以远程访问可重新配置的结构以实现定制加速器。这种访问可以通过恶意使用FPGA结构在整个系统中暴露新的安全漏洞。在过去,对电源级别的攻击需要本地访问硬件。**现有存在问题+我们的工作(创新点):**在本文中,我们揭示了FPGA中的一个安全漏洞,该漏洞允许有效配置产生严重的电压波动,从而在几微秒内使FPGA崩溃。
2023-01-14 12:09:36
825
1
原创 【Denial-of-Service on FPGA-based Cloud Infrastructures论文笔记】
本文介绍了通过功率锤击在电气级别针对A WS F1实例的FPGA的攻击演示了通过F1实例上实现的所有AWS安全围栏的不同的强力锤击攻击,包括FPGA供应商DRC最重要的是,我们提供了一个FPGA病毒扫描框架,该框架经过改进,以支持大型数据中心FPGA来防止此类攻击,包括几乎所有当前的侧通道攻击。我们的实验表明,A WS F1实例通过启动要求369W的FPGA设计而立即崩溃。通过使用FPGA指纹,我们发现崩溃的实例不可用时间在在大约一到200小时。
2023-01-09 13:13:07
655
原创 【Mitigating Voltage Attacks in Multi-Tenant FPGAs 论文笔记】
恶意的云FPGA用户可以精心设计故意浪费电力的电路,并将其部署以导致拒绝服务和故障注入攻击。FPGA云服务使用的主要防御策略包括检查用户提交的已知的严重消耗电力的电路结构设计,但是时长会有新的点库结构出现。评估了通常不会被FPGA云计算供应商强加的设计规则检查所标记的电路功耗技术识别定位基于功率浪费器的电压攻击源,在导致板重置之前阻止攻击。
2022-12-19 16:29:19
979
1
原创 蓝桥杯单片机 让超声波测量距离更长!
5555今天才知道,原来延时14us可以使蓝桥杯单片机的超声波测距更广,反正可以大于80cm下面附上代码,大家可以直接测试
2022-06-15 00:29:26
1005
1
原创 【蓝桥杯单片机 国赛 第十一届】
好久没碰蓝桥杯了,终于开始准备国赛了…,之后每刷一套题都来写一篇经验博客,感觉只要模块是对的,就能写出来,大家加油还是首先花大概10多分钟看一下题目,然后画出题目想让我们完成的功能,就如上图所示然后一次将每个模块测试没有问题就开始写界面界面采用的思路自顶向下的想法最后就看led想怎么亮我一般是在其他地方判断led到底亮不亮,然后最后再来总了判断哪亮哪不亮。有关我是想下面这么写的count_flag2反正就起一个技术,一旦亮暗发生变化,count= 0,重新计数的这样的想法,来判断led的亮灭题目到
2022-06-07 22:48:44
356
1
原创 TINYML入门资料
基础资料神经网络入门电子森林的这篇文章中提到了TinyML压缩主要是压缩卷积神经网络模型,而关于这个模型在下面那篇,人脸监测算法相关基础理论中有提到(第二章)。电子森林TinyML技术概述人脸监测算法相关基础理论见本论文第二章实现神经网络压缩压缩方法主要参考本篇综述文章的第二章深度学习模型压缩与加速综述下面这篇主要讲了用量化的方法压缩模型,还有模型的加速,参考第3章嵌入式深度神经网络的模型压缩与前向加速技术研究 丁杰它还提到了,之前我们看到的压缩方式,也就是量化,剪枝,霍夫曼编码并用.
2022-05-06 20:14:16
2350
原创 【蓝桥杯单片机国赛 第九届】
蓝桥杯国赛模块讲解蓝桥杯国赛第九届 题目做题思路首先写上要做的模块,界面,按键细节一页纸就能让你不用看pdf即可写出整套题简单示范:突然就觉得很简单了对不对,笼统看就写几个模块,外加几个界面~下面,我就参照我是如何思考以及我的写题策略来讲解第九届的国赛题啦首先smg测试void smg(){ P2 = (P2&0x1f)|0xc0; P0 = T_COM[smg_i]; P2 = (P2&0x1f); P2 = (P2&0x1f)|0xe0; P0
2022-04-07 00:15:30
5260
8
原创 蓝桥杯单片机 第十二届 国赛
总体感受蓝桥杯第十二届,模块都比较常规,感觉都和省赛差不多,主要是麻烦在数据处理上,而我们处理的数据又要在界面中显示出来。总体框图对比之前的第十届,其实题目差不多,并且少了串口收发这一比较难的模块。但是多了max,min,avg三个超声波数据的处理。所以按道理时间方面应该是花的差不多。做题顺序先是smg,再是按键,再是led检测按键是否写对,然后写DS1302顺便将它的smg界面写了,然后AD/DA模块,先数码管显示光敏数值,检测此模块是否写对,最后超声波&界面(检测超声波模块是否写对)
2022-04-03 14:50:14
3512
3
原创 【蓝桥杯单片机国赛 第十届】
蓝桥杯国赛模块讲解做题思路首先smg长短矩阵按键串口收发问题首先附上标准代码DS18B20超声波AT24c02最后串口的问题做题思路首先写上要做的模块,界面,晓得细节一页纸就能让你不用看pdf即可写出整套题这种简单示范:首先smgvoid smg(){ P2 = (P2&0x1f)|0xc0; P0 = T_COM[smg_i]; P2 = (P2&0x1f); P2 = (P2&0x1f)|0xe0; P0 = ~table[smg_i]; P2 = (P2&a
2022-03-21 01:15:43
11766
10
原创 2021-08-03
电赛材料清单GY25降压模块TB6612OLED舵机TD8120(180)转向杆实现转弯功能霍尔编码器测速不精准直流减速电机msp430f5529轮胎蓝牙WIFI
2021-08-03 14:48:41
416
原创 超声波的一点bug
#include<stc15f2k60s2.h>#include "intrins.h"typedef unsigned char u8;typedef unsigned int u16;#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}u8 code T_duan[]={ //标准字库//
2021-06-04 15:19:06
328
原创 管脚占用随笔
我的车轮在一套程序里 左轮和右轮都是可以使用的而另一套(写有TFTLCD)就不能使用了由于某次左边轮胎只动了一个,我碰了一下他的线,发现两个左轮均可以使用了。此时的我还以为是线路问题,搞得我恨崩溃,因为在两套程序里,封装的同样的车轮运动代码(car_go(),car_back(),car_left())之类,效果却不一样。其实到这就应该得出是因为管脚占用,所以轮胎动不起来。经过多番尝试,我发现控制左轮的两个引脚输出的电平不听从我的代码使唤。使用示波器测试其波形,发现左轮的波形输出PWM,而右.
2021-05-11 13:40:39
133
原创 基于opencv的车道检测(附源码&注释)
def threshold(src, thresh, maxval, type, dst=None):"""设置固定级别的阈值应用于多通道矩阵 例如,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点;Argument: src: 原图像 dst: 目标图像 thresh: 阈值 type: 指定阈值类型;下面会列出具体类型; maxval: 当type指定为THRESH_BINARY或THRESH_BINARY_INV时,需要设置该值;"""
2021-04-14 16:06:22
888
原创 第十一届蓝桥杯单片机省赛题(源码)(可读性极强)
第十一届蓝桥杯省赛题思路main.ciic.ciic.honewire.conewire.h思路首先还是国际惯例先整理一下题目的思路,再开始写。做题步骤:点击:超详细的模块化例程切记,第一步完成后才能完成接下来的1.实现smg&定时器&初始化 模块, 用smg检测smg&中断是否无误。2.按键&led模块 用led检测按键是否无误3.二大界面 设置界面转化&参数转化标志位&结合按键4.按键的细节完善5.写好led命令&p
2021-04-08 22:17:50
1434
1
原创 opencv入门 读取视频&保存视频
flip翻转详细说明flip详细解释把围绕X轴翻转的图像存进img_flip_along_x = cv2.flip(img, 0) #把围绕Y轴翻转的图像存进img_flip_along_y = cv2.flip(img, 1) 同时围绕XY翻转图像(顺时针180˚旋转)img_flip_along_xy = cv2.flip(img, -1)cv2.VideoWriter()用法VideoWriter(filename, fourcc, fps, frameSize[,
2021-04-06 18:48:51
177
原创 图像分割&合成 cv2.imread&cv2.split用法
bgr imge 是原图bule 是我用split 分割原图提取的蓝色通道gbr imge2 是我将之前提取的单通道图层数值赋值给绿色通道img = cv2.imread('12345.png')b,g,r = cv2.split(img)zeros = numpy.zeros(r.shape, numpy.uint8)img2 = cv2.merge([zeros,r,zeros])# plt.subplot(121);plt.imshow(img) # expects distorted
2021-04-05 17:12:48
1295
1
原创 stm32单片机基础(三)
定时器讲解总括定时器中断输入捕获总括大家可以先去观看正电原子通用定时器基本原理再来使用这篇文章定时器中断定时器中断了解arr自动重装载的三种方式,一般我们选择向上计数定时器中断原理:首先我们知道定时器主频为72MHZ经过psc预分频后,主频变为 72MHZ/psc(预分频系数)然后进行定时器计数模式配置——》arr(自动重装载值)当arr计数满了,就会发生溢出,进入中断。输入捕获...
2021-03-28 15:20:45
497
原创 基于HAL库的STM32超声波测距模块(白话文)
STM32超声波测距模块非输入捕获教程定时器的配置串口printf准备工作生成代码后main.c的工作us级定时输入捕获教程非输入捕获教程定时器的配置同样的操作你们试试TIM3每1us,CNT++;CNT加到65535就会溢出,产生中断。所以可以将PSC ARR当作两次时钟分频,两次分频乘积/72MHZ 就是每隔这么多时间定时器就中断一次但arr中设置的count可以检测出来。因此,我们就将预分频系数设为72-1,此时为1us一个时钟周期,再设置arr为65535,这样我们最多可以计数
2021-03-28 11:06:21
5174
3
原创 STM32 逻辑分析仪使用方法
步骤请按顺序来哟~~~想了解其他仿真的功能,请看STM32软件仿真由于我使能了GPIOB——PIN1,所以输入PORTB.1表示显示 PB1的波形按下回车:如果你显示 unkown signal请回到第二步,仔细看看你按我的要求填了么~?(重新康康图二!,若显示正确请略过此图)然后就出现了正确的波形啦...
2021-03-27 16:13:07
2185
原创 stm32基于HAL库 串口全讲解
首先关于cubmx配置:链接: 串口配置.基础操作上位机发送数据给单片机,单片机收到数据后,又发送给上位机。这整个通信过程在串口助手中体现出来:while (1) { /* USER CODE END WHILE */ if( HAL_UART_Receive(&huart1,RecBuf,5,100) == HAL_OK ) { HAL_UART_Transmit (&huart1 ,RecBuf,5,100); //把接收到的字符原样返回 }
2021-03-26 13:36:21
2116
原创 GS90 cubemx hal库教程 封装角度(保证正确!)
cubemax配置有关分频的设置,因为计数器的频率为72MHZ,那么预分频7199后,时钟频率就为 72000000/7200 = 10000HZ ,arr自动重装载值199,也就是说它每计数200后溢出一次,计数器+1,相当于再次分频时间,最后得出 频率为 10000/200 = 50hz 即0.02s = 20ms由上图得TIM2 CH1对应的管脚PA0,我们要初始化一下GPIO口到此为止,有关舵机的环境配置就已经完成了__HAL_TIM_SET_COMPARE(&ht
2021-03-24 14:25:33
454
1
原创 简易温度采集系统(蓝桥杯单片机)十分稳定
简易温度采集系统做题流程代码做题流程阅读完全文后,我首先会有一个大概的框架,分别为三个方面1.要用的模块2.界面的显示3.细节部分(按键&led之类)首先我粘贴stcisp 的范例程序的定时器和smg,自己再稍加修改,完成smg管模块的初始化{显示1234567)保证smg模块不出错。然后我会开始写按键程序,无论是三行代码还是状态机程序,我都会再每个按键后面写一个led(0x0i),来检验按键程序是否正确。到这一步我已经确保两个模块的正确性啦。再然后,开始写任务要求的其他模块(读温
2021-03-23 17:38:40
456
原创 串口通信(SBUF&代码&原理详解)
这里写目录标题基本概念读取数据手册三级目录基本概念前言:时钟对于单片机来说是非常重要的,它能为单片机提供一个稳定的机器周期从而使系统能够正常工作。它就像我们人类的心脏一样重要,一但有了问题那么系统就会崩溃。我们在使用单片机的时候,常常会使用默认的时钟频率,然而在一些特殊的场合(例如串口通讯或者实时时钟),则需要特殊的时钟频率,这时芯片自带的振荡器就无法满足我们的需求。这个时候,就可以选择外部晶振作为时钟源。波特代表每秒的调制数,它是对符号传输速率的一种度量,n波特即指每秒传输n个符号(传符号率)人
2021-03-14 11:23:29
19688
1
原创 蓝桥杯iic之AT24C02(教你如何依据数据手册写代码)
AT24C02目的:存储数据原理写入读出三级目录目的:存储数据做一件事,首先了解他的目的,我们室友AT24C03是为了存储数据在eeprom中,达到断电仍可保存的目的。于是我们就需要弄清如何将数据写入 以及 如何读出写入的数据。我将以最简单的方式教你依据数据手册 写出 存储数据的程序。原理写入从上图可以发现,却认为的SDA为低电平~,我们有官方给的驱动里可以找到这么一个函数void IIC_SendAck(bit ackbit){ SCL = 0; SDA = ackbi
2021-03-04 22:09:17
4282
11
原创 蓝桥杯单片机之超声波
超声波原理模块发送脉冲接受脉冲计算代码原理准备工作:跳线帽接好原理:P10为高电平表示准备发送脉冲,一共8个脉冲,一个一次100个nop。我们发送8个脉冲的原因是为了增大脉冲发送的成功率,避免发送脉冲失败 引起 接收不到回来的脉冲。(ps:一个somenop里有10个_nop()_)RX = 0表示接收到信号。利用发送脉冲后接收到脉冲的时间差*空气中的速度/2得出距离值。模块发送脉冲接受脉冲计算由于设置单片机频率为12MHZ, 那么他的时钟周期为 1/12MHZ , 如
2021-03-02 22:09:15
4091
原创 教你如何写ADC代码,输出电压,读取光敏值。
ADC数据手册数据手册第一个字节第二个发送的字节若为DA转化(数模转化):即写出电压值,由单片机输出,可以由万用表(红表笔接板子最右边的D/A管脚,黑表笔接GND)测的输出电压。然后我们由下图来了解如何写DA转化代码:s: 即startADDRESS: 即器件地址(0表示为写)A:表示等待回应CONTROL BYTE: 表示控制字(第二个发送的字节)A:表示等待回应DATE BYTE: 表示写入的电压值(注意如果写入255,其实结果是5v,以此来换算)A:表示等待回应s:
2021-03-02 18:52:41
3054
2
原创 蓝桥杯单片机之定时器
这里写目录标题定时计数器定义中断函数相关寄存器TCON 控制寄存器,作用是控制定时器的启、停,标志定时器溢出和中断情况。TMOD 定时器/计数器模式控制寄存器IE 中断允许寄存器中断函数示例定时计数器定义外部中断:由于外部操作触发中断(按键,电平变化之类)内部中断:单片机内部达到某种情况就触发中断(定时)中断函数首先是一个平时我们写的函数名再加上一个中断号 void Timer0() interrupt 1中断号0 2 4…表示外部中断中断号1 3 5…表示定时器/计数中断01表示定时计
2021-03-01 22:28:24
2396
2
原创 蓝桥杯单片机 第九届 彩灯控制器
蓝桥杯单片机 第九届 彩灯控制器main.ciic.ciic.hmain.c#include<STC15F2K60S2.H>#include<iic.h>#define u8 unsigned char#define u16 unsigned int#define keypress P3 sbit pwm = P0^0;sbit buzzer = P0^6;sbit relay = P0^4;bit smg_flag, keyflag, LED_flag = 0
2021-01-25 19:42:18
927
原创 蓝桥杯单片机 第十届 测频代码
蓝桥杯单片机 第十届 测频代码main.ciic.ciic.hmain.c#include<STC15F2K60S2.H>#include<iic.h>#define keypress P3#define u8 unsigned char#define u16 unsigned intu16 volt;u16 voltled;sbit buzzer = P0^6; bit flag500ms, flag1s, key_flag;u8 smg_count, k
2021-01-25 19:39:17
369
2
原创 蓝桥杯单片机第十一届模拟题 智能门锁(附源码)
第十一届模拟题 智能门锁main.ciic.ciic.hmain.c#include<STC15F2K60S2.H>#include<iic.h>//typedef unsigned char u8;//typedef unsigned int u16;sbit h1 = P3^0;sbit h2 = P3^1;sbit h3 = P3^2;sbit h4 = P3^3;sbit l1 = P4^4;sbit l2 = P4^2;sbit l3 = P3^5
2021-01-25 19:36:53
2430
2
原创 计算机文化(20版)答案
计算机文化ALU 算术逻辑单元2 .url简单说就是网址**URL:**统一资源定位符URL是Uniform Resource Location的缩写,译为“统一资源定位符”。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。U...
2021-01-23 02:03:09
1940
原创 STM32串口通信 (缓冲区 发送不出数据&接收不到数据)
STM32串口通信流程附上代码注意事项一点心得:流程(简单的发送数据)GPIO时钟使能串口时钟使能串口的GPIO配置写初始化串口函数,配置串口USART_Init(USART1,&USART_InitStruct);开启(使能)串口USART_Cmd(USART1, ENABLE);附上代码void NVIC_Config_USART(){ NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChan
2020-11-24 22:12:29
14656
2
原创 蓝桥杯一些血的教训
第四届蓝桥杯省赛 智能灌溉系统首先,新建一个keil工程一定记得main.c,iic.c要添加到文件夹中…!图一否则文件将无法执行。(ps: 有时候是单片机板子的问题,如下图,当时的情况是led灯全亮了,smg不亮)(我有什么办法,俺只能挨个排查呀!!)(排查现有模块。发现中断√ smg√ 初始化√)(只有添加一些绝对正确的特征判断程序的执行情况,就比如让特定的LED灯亮)后面发现LED灯也不亮(只有两种可能:1.程序未执行到这里(不可能!!!!) 2.板子坏了)然后再继续判断····
2020-10-07 00:59:08
3456
3
原创 stm32单片机Pwm输出对频率,定时器的理解
Pwm输出原理介绍流程展示原理介绍32单片机外接了一个8M的晶振,经过9倍的倍频后,PLL锁相环输出72Mhz的频率。这即系统的主频。定时器中 TIM3_Init(u16 arr,u16 psc)这个初试函数中,arr是自动重装载值,psc是可编程预分频器。(他们共同设置什么时候该溢出)比如arr = 899, psc = 0;就表示没有分频,此时定时器的时钟频率仍为72MHz,表示每个周期定时器经过900个脉冲,周期 = 1/72 us *900PWM 的频率就是 72000 000/90
2020-09-20 15:14:22
4221
原创 stm32单片机基础(二)
stm32单片机基础(二)外部中断二级目录错误外部中断二级目录错误1.h文件中报错 unterminated conditional directive的原因末尾没有加#endif
2020-09-08 21:21:49
3813
第五届蓝桥杯: 简易温度采集与控制装置
2020-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人