自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路西法的技术博客

一个怀揣梦想的程序猿,一个不太称职的奶爸

  • 博客(58)
  • 资源 (5)
  • 问答 (2)
  • 收藏
  • 关注

原创 进程模型5-0号进程

INIT_TASK 宏初始了 init_task 的进程描述符,当内核编译完成生成镜像,这个 init_task 就已经在数据段中占有自己的一席之地,init_task也决定了系统之后所有进程、线程的基因, 由它完成内核早期初始化后, 最终演变为0号进程idle, 永久运行在内核态。,最后将 sp 指针设置到 0号进程内核栈的 (&init_thread_union + THREAD_SIZE - 8) 位置,最后进入 start_kernel 中执行初始化和创建1, 2号进程。

2025-03-29 12:13:14 524

原创 进程模型4-系统调用

Linux 中将整个系统分为了用户空间和内核空间,内核拥有绝对的权限负责进行系统调度和硬件操作(USB、内存设备等),而用户空间无法直接访问到硬件,内核也不会直接将内核管理下的东西向应用层直接暴露。例如读取文件,看似在用户空间使用 read 很方便的就读取到了需要的数据,和普通函数调用没有什么区别,但是系统在真正执行时是完全不同的,调用耗时有几十倍差距(软中断方式)。用户空间和内核的交互必须通过系统调用的方式来进行,例如调用后通过。

2025-03-29 11:06:28 968

原创 进程模型3-进程的栈

程序运行的必要条件之一就是拥有栈空间,用来存放运行过程中的临时变量、函数参数、函数返回值等数据,,用于在内核态运行程序,而只有。

2025-03-08 13:26:53 1114

原创 进程模型2-进程优先级

下图来自 蜗窝科技 的《Linux调度器:进程优先级》

2025-03-08 13:21:43 631

原创 进程模型1-PID 管理

Linux 中其实没有线程的概念,线程也是进程的一种都是通过 vfork、fork、clone创建,只是线程会和线程组内的线程leader共享mm、fs、file等资源,已下介绍时“进程”仅指代进程,“线程”仅指代线程,“任务”指代线程和进程。

2025-02-22 16:01:17 680

原创 rust交叉编译问题记录

Rust 项目代码相对于C的代码体积膨胀约为 3倍左右,增加的代码主要是为rust 的内存安全、灵活和可用性提供保证,在非资源受限上,相对来说还是可以接受的。

2025-02-22 10:12:06 794 3

原创 rust 安全性

Rust 是 静态类型(statically typed) 语言, 也就是说在编译时就必须知道所有变量的类型, 这一点将贯穿整个章节。

2025-02-19 23:05:10 867

原创 FreeRTOS-rust 编译分析

FreeRTOS-rust 的整体框架分为三大块。负责对项目中所有 C语言代码的编译,包括 FreeRTOS-Kernel 内核源码,freertos C 适配层接口以及 freertos 各种钩子函数实现,内部利用cc crate以及build.rs文件中提供的信息,将C语言代码打包为静态库。中包括了 freertos 的C适配层接口和钩子函数实现,以及转换为 rust 语言的对外接口,应用开发使用的 rust freertos 接口均来自这里。

2025-02-19 22:46:08 665

原创 栈回溯方案

注:栈回溯无法很好的定位到未调优化的函数,需要编译前使用 -fno-optimize-sibling-calls 选项禁止尾调优化。

2025-02-18 23:34:39 980

原创 栈回溯基础

B 指令是最简单的跳转指令,跳转后不在返回。存储在跳转指令中的实际值是相对当前 PC 值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。BX 指令中跳转到寄存器所指定的目标地址, 目标地址处的指令既可以是ARM 指令,也可以是Thumb指令。跳转后不在返回,并且根据寄存器中地址的最低位是否为 1 决定使用 Thumb模式还是 arm 模式。

2025-02-18 23:31:21 1087

原创 FreeRTOS-rust食用指南

FreeRTOS-rust 是一个开源项目,旨在简化在嵌入式应用中使用 Rust 语言与 FreeRTOS 实时操作系统(RTOS)的集成。该项目基于 FreeRTOS 的原始 C 代码,并提供了 Rust 语言的接口。方便用户在嵌入式设备上使用 FreeRTOS 操作系统并使用 Rust 语言开发程序。├── .cargo # 对 cargo 本身的配置 │ └── config.toml。

2025-02-15 23:57:49 1237 3

原创 Rust包管理

是 rust 是rust 的工具链管理器,主要用于安装和管理rust工具链和相关的组件。可以安装和管理与工具链相关的组件,比如 rustfmt(格式化工具),clippy (Lint静态分析工具), rust-docs (文当管理工具),llvm-tools-preview(编译工具)。这些组件是构建和开发 rust 项目时可能需要的工具。

2025-02-15 23:56:17 325

原创 论软件评估方法

本人于2023年1月参与我司开发的“虚拟电厂”项目,主要负责整体架构设计和中间件选型。该项目为新型电力存储、电力调配、能源交易提供一套整体的软件系统。

2025-02-14 22:31:11 1059

原创 论面向服务的架构设计

本人在2023年1月参加我司主持的“虚拟电厂”项目,项目中我主要负责总体架构评估和中间件选型,本项目为设备控制、用电量预测、电力削峰填谷提供一整套软件系统。本文将以“虚拟电厂”主要讨论面向服务的架构设计进行介绍在项目中应用,主要包括服务提供者、注册中心和服务请求者,其中服务提供者主要完成服务的构建、描述和发布;注册中心是服务的集散地,所有服务在此进行登记,服务与服务请求者;

2025-02-14 22:29:41 528

原创 论可靠性设计

本人于2023年1月参与我司开发的“虚拟电厂”项目,主要负责整体架构设计和中间件选型。该项目为新型电力存储、电力调配、能源交易提供一套整体的软件系统。本文以虚拟电厂项目为例主要讨论可靠性设计方案在本项目中的具体应用,主要包括如下,为了满足客户要求的7*24小时系统运行的可用性,我们采用了双机双工的方式进行系统部署,保证业务的连续性和可靠性;程序中物模型转换引擎和智能预测服务是使用频率较高的功能模块,我们对这些关键程序采样用了N版本程序设计的方案;

2025-02-08 22:54:56 947

原创 论软件架构风格论文

本人于2023年1月参与广东省某公司委托我司开发的“虚拟电厂”项目,主要负责系统整体架构设计和中间件选型。该项目为新型电力存储、电力调配、能源交易提供一套整体的软件系统。本文以虚拟电厂项目为例,主要讨论架构风格在本项目中的具体应用,主要包括如下,底层架构风格中采用了虚拟机风格中的解释器,由于接入的负载和储能设备类型多、各家厂商的物模型字段差异性大,使用解释器可以更好解决物模型字段不统一的问题。

2025-02-08 22:36:57 996

原创 基于构件的软件开发方法

本人在2023年1月参与广东某公司委托我司开发的“虚拟电厂”项目,主要负责整体架构设计和中间件的选型,该项目为新型电力存储、电力调度、能源交易提供一整套的软件系统,包括设备接入、负载预测、邀约竞价、用户设备调控等功能。

2025-02-03 16:54:26 695

原创 软考论文万能模板

对于嵌入式软件开发人员来说,工作中能接触到的前后端知识并不多,在三个月的复习过程中最担心的就是论文,对于论文有种莫名的恐惧,不知道如何选题,不知道如何写框架,担心写的内容是否正确,也不知道2个小时能不能写完2500字,但是通过集中练习和总结,发现论文起始应该是三门考试中最简单的,2024年上半年考试选择的论文题目是《论大数据lamada架构》,最终51分低分飘过,在练习的过程中发现网上的很多十大论文范围所选的项目都比较老,在目前已经不在适用,论点描述个人也觉得优点驴头不对马嘴,希望自己的总结帮助到更多萌新

2025-02-03 16:47:53 1042

原创 Cmake+内置变量

寻找编译工具# 设置编译工具# 以下部分是自定义的变量,不是cmake的内置变量。

2024-12-04 17:06:42 648

原创 Cmake+基础命令

为编译目标或者所有目标增加宏定义# 为当前路径的所有源文件和target增加编译定义# 方式1# 方式2# 为指定的target指定宏定义参数target:宏定义所属的目标,可以有 add_executable() 或 add_library() 定义definition:指定的宏定义,不需要带 -D例子。

2024-12-04 17:05:11 1236

原创 LWIP v2.1.0内存管理之内存池管理(memp.c/memp.h)

二)、LWIP内存管理之内存池管理(memp.c/memp.h):1、内存池相关的几个重要数据结构内存池的管理主要是在 memp.c 文件中实现的,从v2.0.0之后内存池的实现比较之前版本有了一些变化,但是主要的思想还是不变的(就像马克思主义,毛泽东思想一样,一直没有改变。。。。)。内存池的种类:内存池的种类很多,主要动定义在了 memp_std.h 这个文件中,有RAW_PCB、U...

2019-10-12 19:10:22 580 1

转载 分析signal函数的原型声明void (*signal(int sig,void (*func)(int)))(int)

在ANSI标准中,signal()的声明如下: void (*signal(int sig,void (*func)(int)))(int),此函数是linux中信号处理函数的原型,由于语法晦涩,很荣幸的也出现在了《C陷阱与缺陷中》,理解的难点在于void ( *signal(xxx) )(int),这里与我们平常看到的void ( *p )(int) 函数指针的写法有差异,关键点在于要...

2019-06-05 11:40:32 1878

原创 LWIP v2.1.0内存管理之内存堆管理(mem.c/mem.h)

1、内存堆相关的几个重要数据结构MIN_SIZE 是12个字节:这谁能给我说说这个最新内存字节为什么是12,想破脑袋了也布吉岛啊。内存池的链表头:LWIP中内存堆的管理的链表头中使用的 next 和 prev 是地址偏移量而不是指针,这么做的原因是在堆大小满足条件 MEM_SIZE <= 64000L 时可以起到节省内存的效果,不要问为什么,因为指针啊。。。。内存堆大小:内存...

2018-10-15 23:47:15 2688 2

原创 LWIP v2.1.0内存管理之相关宏之间的关系

一)、LWIP内存管理之相关宏之间的关系:工作比较忙,经常加班搬砖,所以自己写东西的时间就比较少了,而且由于自己是边学边写,自己看源码内容加上消化要一周,然后由于想把文档写好点,所以写东西也要一周,真是太慢了,不过慢不要紧,只要不停下,总有一天能把他写完。那谁不是说时间就像乳沟,挤挤总是有的(我是一个瘦瘦的男生,他么的怎么挤也没有啊)。。。。总的来说, LWIP 的动态内存管理机制可以有以...

2018-10-15 23:22:43 1134 1

原创 LWIP v1.4.1和v2.1.0的对比

一直想写点什么,又不知道要写什么,总是感觉学的很多,用的很少,学的很慢,忘得很快,但是学还是要学的,以前在学FreeRTOS的时候就学一点然后用文档记录一点,整理了点东西,当时没发出来,这会再去发出来还要重新往博客上整理,感觉比较麻烦,等到以后LWIP移植FreeRTOS的时候在一并发出来吧。所以这次学习LWIP就直接记录发出来好了,也能告诫下自己的进度,希望能坚持写下去,刚刚接触LWIP,相关介...

2018-10-06 22:43:49 13736 2

原创 zigbee协议学习之端设备关联过程抓包

关联过程:关联过程抓包分析:Beacon Request帧展开:Beacon帧展开:父节点广播的设备申明:通过关联方式加入一个网络:       加入一个设备,是两个设备的事,即子设备和待定父设备      对于子设备,首先子设备调用NLME-NETWORK-DISCOVERY.request 原语,设定待扫描的信道,以及每个信道扫描的时间,网络层收...

2018-06-07 21:27:22 2193

转载 运放参数详解

转载出处:http://blog.youkuaiyun.com/augusdi/article/details/17491579一、单位增益带宽GB        单位增益带宽定义为:运放的闭环增益为1倍条件下,将一个恒幅正弦小信号输入到运放的输入端,从运放的输出端测得闭环电压增益下降3db(或是相当于运放输入信号的0.707)所对应的信号频率。单位增益带宽是一个很重要的指标,对于正弦小信号放大时

2018-01-15 11:18:08 33684 2

转载 关于AD前面的电压跟随器

从优快云论坛上看到一个对于AD前面电压跟随器电路的分析,获益匪浅。原址:http://bbs.youkuaiyun.com/topics/390284933R25的作用是消反射的,运放的5、6角理论上是电压相同的,且输入阻抗是无穷大!那么输入信号的电流主要是通过R28流入地,也就是输入点的电压在WK-in点形成,理论上不会有电流流入R25,如果没有R25那么信号就会100%反射到WK

2018-01-15 09:40:18 18037 2

转载 浅谈MOSFET驱动电路

MOSFET因导通内阻低、开关速度快等优点被广泛应用于开关电源中。MOSFET的驱动常根据电源IC和MOSFET的参数选择合适的电路。下面一起探讨MOSFET用于开关电源的驱动电路。 在使用MOSFET设计开关电源时,大部分人都会考虑MOSFET的导通电阻、最大电压、最大电流。但很多时候也仅仅考虑了这些因素,这样的电路也许可以正常工作,但并不是一个好的设计方案。更细致的,MOSFE

2017-12-14 16:35:06 8899

转载 stm32的存储器结构

首先,先看一下stm32的存储器结构。​Flash,SRAM寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。FLASH存储下载的程序,FLASH是ROM的一种。SRAM是存储运行程序中的数据,SRAM是RAM的一种。所以,只要你不外扩存储器,写完的程序中的所有东西也就会出现在这两个存储器中。

2017-11-28 19:38:59 8188

原创 PID调节之积分(D)调节

小D的作用:展望未来。微分算法: Dout=Dk*KdDk当前误差和上一次误差的差Dout微分调节输出是误差 Dk是当前误差和上一次误差的差值,这个差值表征了系统的发展趋势,这就是所谓的预判,当Dk>0时说明误差变大了,同样认为他在下一段时间也有这样的趋势,Dk时说明误差变小了,未来误差也会变小,当Dk=0时认为系统误差在未来是稳定的,通过对未来的预判,从而对系统的输出值进

2017-08-01 22:55:19 5675 1

原创 PID调节之积分(I)调节

小I的作用:回望过去。积分算法:  Iout=Sk*KiSk是某个时间段内的历史误差累计和Iout是积分调节输出是误差Sk是从系统开启的某个时刻到当前时刻这段时间里传感器返回的实际值与目标值的误差累加和,这是对过去时间中误差的累加(误差是有正有负的所以不会累加到无穷大),之所以要累加这个误差是要去判断从系统开启到现在时刻总的趋势是低于目标值还是高与目标值,如果S

2017-06-27 11:00:54 12073

原创 PID调节之比例(P)调节

把PID调节逐步分解,希望自己了解的同时,也能帮到和我一样迷茫的同学,我也是小白一个,解释的不到位还请大神拍砖,也希望和大家讨论比例算法:Err=Mk-Pk ,Pout=Err*KpErr误差值Mk目标温度Pk传感器采集的实际温度Pout比例调节输出值Kp比例系数    其中Err是目标值减去实际值得到的误差值,Pout是这个误差Err乘以一个比例系数K

2017-06-22 16:20:01 16017

原创 C语言动态封装库的建立和使用

函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。这里讲下如何使用DEV c++来建立动态封装库,步骤贴图方便理解。1、简历动态封装库2、编辑自己的封装函数,项目里自带一个参考函数3、新健的hell

2017-06-01 20:28:44 6892

原创 JFlash ARM对stm32程序的读取和烧录

本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了!在我们装了JLINK驱动后再根目录下找到JFlash ARM ,运行。读取Flash程序:第一步:Option-->Project Settings-->CPU下选择  Device 在下拉菜单中找到自己的芯片型号后点击确定。第二步:Tar

2017-05-06 23:07:00 39920 2

转载 Arduino IED for EDP8266编写的相关函数

原文出处:http://www.yfrobot.com/thread-11798-1-1.html直接使用arduino IDE 编译 ESP8266程序非常方便!本文将介绍其相关语法,在http://esp8266.github.io/Arduino/versions/2.1.0/ 可以找到相关文档。数字I/O口 Digital IOArduino 引脚号直接对应ESP8

2017-05-05 21:17:15 3175

原创 ESP8266接线接线说明

esp8266系列的便准供电是3.3V电压,但是可以超过一点,但是绝对不能是5V奥!!!!!!1、esp8266-01正常启动接线:CH-PD接VCC,GPIO0接VCC;烧录程序或者固件升级的接线CH-PD接VCC,GPIO0接GND;资料链接:https://wenku.baidu.com/view/1dd4347df12d2af90242e69b.html2、esp826

2017-04-28 13:30:14 79133 6

原创 ESP8266-03模块的瑕疵吐槽

1、尺寸不对那就更不要说模块的焊盘大小和间距了,在网上尽然都没有一个完整的东西,拿到实际的模块测量后实际尺寸长是17.05MM宽是12.76MM,焊盘焊盘间距2.0MM,差别还不小,丫的要知道在PCB上这零点几毫米也是很大的好不啦。2、接线没有说明,网上资料也不多,或许大家都在用ESP-01,ESP-12,ESP32了吧,反正安信可淘宝上这款片子不属于爆款系列,丫的选错了片子怪谁去呢,以前用过

2017-03-02 17:36:36 3762 3

转载 51单片机的IO口驱动能力、灌电流、拉电流、上拉电阻的选择

http://bbs.elecfans.com/jishu_403213_1_1.html(出处: 中国电子技术论坛)单片机的引脚,可以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。但是程序控制不了单片机的输出电流。单片机的输出电流,很大程度上是取决于引脚上的外接器件。单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌

2017-02-04 18:03:45 3298

转载 Arduino IDE 烧录 ESP8266教程

Arduino IDE for ESP8266教程原出处:http://www.windworkshop.cn/?p=758ESP8266是现在性价比不错的Wifi模块,用了一块ESP8266-01之后感觉还行,用在数据采集器上表现还是不错的,后来看到官方出了SDK,可以用SDK修改模块的相关功能,还可以控制IO脚,在尝试了官方SDK后感觉上手略困难,没有文字教学(只有视频教学,习

2017-01-02 08:49:05 38827 1

Quectel-EC200G-CN-蓝牙应用指导

Quectel_EC200G-CN_蓝牙应用指导

2025-04-02

广和通 L610-CN00 最新标准固件

广和通 L610 CN00 最新标准固件

2025-04-02

多个TM75温度连续转换程序

多个TMP75温度连续转换实验源码

2017-06-30

Nokia 5110 PCB底板

Nokia 5110 PCB底板,使用AD打开的奥

2017-06-12

AD ESP8266-12原理图和封装库文件

提供ESP8266-12原理图和封装库文件,可以使用AD打开,封装支持3D文件

2017-05-23

山外K60参考代码V5.3(支持FX、FN和DNZ)

山外K60参考代码V5.3(支持FX、FN和DNZ),自己用的很好推荐个大家。。。

2016-01-15

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

TA关注的人

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