OneOS
文章平均质量分 75
gitee地址:https://gitee.com/cmcc-oneos/OneOS
蓁蓁啊
笨蛋一个!
展开
-
环境变量env(envget,envput,envset)
环境变量在操作系统中扮演着重要的角色,它提供了一种机制来存储和传递关于系统环境的关键信息。简化程序配置环境变量允许程序在运行时访问必要的配置信息,而无需将这些信息硬编码到程序代码中。通过环境变量,可以轻松地更改配置而不必重新编译程序。资源定位环境变量可以帮助程序找到所需的文件或资源的位置,比如配置文件、库文件或数据文件。例如,PATH环境变量告诉系统去哪里查找可执行文件。提高可移植性环境变量使得程序可以在不同的环境中使用相同的配置逻辑,而不需要修改程序本身。原创 2024-08-20 10:33:41 · 503 阅读 · 0 评论 -
oneos虚拟文件系统vfs源码分析
【代码】oneos虚拟文件系统vfs源码分析。原创 2024-07-19 15:08:41 · 210 阅读 · 0 评论 -
oneos虚拟文件系统VFS学习
我需要在今天一天把oneos-lite fs框架搞懂,时不待我。但其实就那么点东西。记住:oneos是单核,没有mmu,mpu也没用到!!!比如,stm32h743这块板子,它的cpu是工作频率高达480 MHz的Arm® Cortex®-M7内核,也就是单核咯。原创 2024-07-18 16:10:22 · 378 阅读 · 0 评论 -
sd卡上移植filex
其中包括了各种数据类型(16位无符号整数、32位无符号整数、64位无符号整数)的读写函数,内存拷贝和设置函数,逻辑扇区的缓存读写和刷新函数,FAT表项的读写和刷新函数以及字符串长度获取函数。这些函数是FileX目录组件的一部分,提供了对文件目录的各种操作,包括读取和设置目录属性、创建和删除目录、获取和设置默认目录、读取目录项、查找目录项、重命名目录、获取目录信息、处理本地路径等。包含了系统组件的常量和全局变量,以及filex文件系统的初始化、设置和获取系统日期和时间、系统计时器等。:获取媒体上可用的空间。原创 2024-07-16 15:01:05 · 399 阅读 · 0 评论 -
为什么fat32的Boot Record和MBR不一样
MBR的结构遵循了DOS磁盘引导记录的约定,而FAT32的BR则包含了FAT32文件系统的特定信息,如引导程序和文件系统标签。FAT32的启动记录(Boot Record,简称BR)和主引导记录(Master Boot Record,简称MBR)是两个不同的概念,它们分别用于不同的目的,并且结构上也有所不同。总结来说,FAT32的BR和MBR是两个不同的概念,它们位于不同的位置,具有不同的功能和结构,但它们共同工作,确保系统能够正确地引导和加载文件系统。原创 2024-07-15 09:47:40 · 189 阅读 · 0 评论 -
filex容错模块(掉电安全)
容错模块会为数据分配扇区以供写入新数据,然后删除包含要覆盖的数据的扇区,从而更新相关 FAT 条目以将新扇区链接到链中。在需要修改群集中部分数据的情况下,FileX 会始终分配新群集,将包含更新的数据的旧群集中的所有数据写入新群集,然后释放旧群集。应用程序需要注意,在 FileX 容错保护下,更新文件中的数据需要介质具有足够的可用空间,以便在释放包含旧数据的扇区之前容纳新数据。不过,如果找到日志条目,则 FileX 需要完成以前的文件操作,或还原已应用于文件系统的更改,从而有效地撤消更改。原创 2024-07-11 15:36:39 · 475 阅读 · 0 评论 -
filex用户手册中文版解读
先看看概述吧,filex是threadx的工业级文件系统解决方案,格式为microsoft FAT格式,专为深度嵌入式实时IoT应用程序而设计。容错和磨损均衡技术则是借助levelx。filex过了很多安全认证,主打一个安全。filex数据类型:这些数据类型都放在tx_port.h或者fx_port.h。目的是,确保不同编译器之间的可移植性。容错支持:其实也就是掉电安全,文件一致性。原创 2024-07-11 14:53:42 · 1093 阅读 · 0 评论 -
threadx下的filex文件系统移植注意
因此,知道了要做的是什么?而后的开发工作就应该着重于:filex_io.c&&vfs_filex.c。但在这期间,我们也应了解filex的代码基本实现,因此,下一步查看filex的doc文件,以及filex的代码,需要进行,学习才能进步。因为使用的是oneos操作系统,实际上bsp和sd卡驱动程序,在rtos中已经得到了支持。注意:在最新版本的filex,已经删除了对exfat的代码支持。最重要的关注是什么?原创 2024-07-03 16:55:29 · 434 阅读 · 0 评论 -
filex文件系统功能预研
ThreadX 几乎是小型 RTOS 的巅峰之作,62亿电子设备采用,是其它 RTOS 无法逾越的高山。ThreadX 的产品涵盖了各种领域,包括 NASA 的多个太空探测项目,飞机自动驾驶仪系统,火星侦察轨道器等。ThreadX 及其所有中间件的安全认证等级,至今没有一款小型 RTOS 可以与其匹敌。这么多安全认证,公司要入大量财力,人力和物力才可以完成,早前 Micrium 的一篇文章还谈过这个问题,投入了太多资金和人力了,还与风河的 VxWorks 做了简单对比。原创 2024-07-03 15:35:11 · 1180 阅读 · 0 评论 -
KVM系统虚拟化性能测试过程总结
目录结构config:配置文件dl:下载的软件包output:输出文件package:软件包版本,编译配置信息配置界面:Target options:用于为构建目标选择特性和配置参数Toolchain:该选项用于配置工具链和编译器特性System configuration:该选项用于配置生成的文件系统的配置文件和启动特性Target packages:该选项用于选择和配置所需要的软件包和软件环境。原创 2024-01-10 18:31:00 · 1174 阅读 · 0 评论 -
arm-2d头文件概述
Arm-2d 作为一个开源项目,为不同目的和背景的用户提供服务。一般来说,arm-2d 的设计考虑了两类用户:arm-2d库的使用者,在他们的应用程序中使用 arm-2d 公共 API专业用户,他们将arm-2d集成到GUI栈中,可以使用2D硬件加速加速arm-2d,可以基于arm-2d编写新的GUI或者2D游戏引擎对于arm-2d库的使用者,公共头文件提供了使用 arm-2d 服务所需的所有信息。对于专业用户,私人头文件中提供了其他信息,以帮助其设计。原创 2022-08-25 16:54:00 · 419 阅读 · 0 评论 -
arm-2d库详细介绍
本文档解释了 ARM-2D 的基本概念。在我们开始体验Arm-2D时,你可能会有很多问题,比如:Arm-2D 是什么?它能解决什么问题?目标受众是谁?Arm-2D 由什么组成?发展环境如何?接下来的内容,将一一作答。如果您想在 Linux 中设计 GUI 应用程序,则不必直接面对硬件。Linux 生态系统为您提供了所有必要的软件组件,包括 GPU 驱动程序、 GUI 栈和许多方便的参考设计。不幸的是,如果您是使用 Cortex-M 设备的嵌入式开发人员,则必须直接面对各种显示硬件。原创 2022-08-25 16:59:59 · 2494 阅读 · 0 评论 -
文件系统的文件类型、状态和参数
这段C语言代码实际上是定义了一个枚举类型,用于表示Unix/Linux文件系统的不同文件类型。这些宏常在处理文件系统、遍历目录或进行文件操作的函数中使用,帮助开发者方便地判断和处理不同类型的文件。很有兴趣,它本身比较简单,但麻雀虽小五脏俱全,该有的框架得有,很利于学习。但是,文件和文件夹本身的层次关系啥的,还得是底层文件系统。为什么同样都是表示文件类型,非要用两套表示呢,麻烦得很哟。这些都是文件的打开模式!,对虚拟文件系统有了更多的了解。就是为了readdir提供的!而文件的权限,在创建时也是需要的。原创 2024-06-26 09:22:06 · 874 阅读 · 0 评论 -
C标准库中的接口如strlen被优化现象分析
在C语言中,有些函数是作为编译器内置的,这意味着编译器会直接将它们替换为相应的机器代码,而不是生成函数调用的代码。这里就得说说库的链接顺序,但我们的musl库是和内核一起编译的,因此肯定会先链接我们自己的musl库,而后如果musl库里面没有该接口,才回去gcc内置库里面去寻找。编译器知道内置函数的实现并将其替换为机器代码,是因为这些函数的实现是编译器的一部分,而不是从外部库中链接进来的。函数,但在某些情况下,编译器可能会执行一种称为常量折叠的优化,尤其是在它能够确定字符串的长度在编译时是已知的情况下。原创 2024-06-19 10:00:50 · 626 阅读 · 0 评论 -
掉电安全文件系统分析
在嵌入式系统中,掉电安全的文件系统同样重要,因为它们可能会在不可预测的环境下运行,容易受到电源中断的影响。文件系统的“掉电安全”指的是在系统掉电或发生其他意外导致操作中断时,文件系统能够保持数据的一致性和完整性,防止数据丢失或损坏。通过这种方式,YAFFS确保了即使在掉电的情况下,文件系统的数据仍然是一致的,不会因为未完成的写操作而丢失或损坏。通过这些机制,F2FS确保了即使在掉电的情况下,文件系统的数据仍然是一致的,不会因为未完成的写操作而丢失或损坏。现在掉电安全文件系统需要的是什么?原创 2024-06-19 10:33:50 · 1364 阅读 · 0 评论 -
littlefs性能分析终极完整版
sysio(系统I/O)系统I/O通常指的是直接使用操作系统提供的系统调用来进行文件I/O操作。它提供了对文件描述符(file descriptors)的操作,这是Unix-like系统中的核心概念。系统I/O函数,如openreadwriteclose等,是底层I/O操作的基础,它们直接与内核交互。系统I/O通常比标准I/O更快,因为它减少了中间层,但它也要求程序员处理更多的细节,如错误处理和缓冲管理。stdio(标准I/O)标准I/O是C语言标准库提供的一组高级I/O函数,如fopen。原创 2024-06-18 16:09:13 · 1069 阅读 · 0 评论 -
littlefs性能分析提升
总的来说,LFS提供了丰富的文件管理功能,但这些功能在提供便利的同时也带来了额外的性能开销。对于需要极高读写性能的应用,直接操作存储设备驱动接口可能会更高效,但这通常需要更复杂的错误处理和设备管理逻辑。:如果数据既不在预缓存也不在读缓存中,且满足一定条件(如:大小大于等于缓存提示值并且读取位置对齐),则跳过缓存,直接从存储介质读取数据到用户缓冲区。:如果上述条件不满足,将数据加载到读缓存中,确保读取位置对齐,并读取尽可能多的数据,但不超过缓存大小和块大小。擦除接口,他会执行擦除操作,把所有的位都置1。原创 2024-06-11 10:56:27 · 969 阅读 · 0 评论 -
掉电安全文件系统littlefs移植
lfs.clfs.hlfs_util.clfs_util.hdfs_lfs.clfs_config.h(和lfs_util.h差不多)lfs_crc.c(和lfs_util.c差不多)然后再对比其源码,发现,littlefs的源码完全没有更改,更改的只有是适配层,因此,接下来重点看看适配层到底改了什么!如果定义了LFS_CONFIG,要自己做好配置中的结构体成员要初始化好vfs对接层要做好,这是每一个底层文件系统到vfs层必须要做的。原创 2024-06-11 09:30:30 · 562 阅读 · 0 评论 -
物联网JS前端框架开发-类VUE框架介绍
一部分作为JS语言的引擎一部分则是VUE.js前端框架用以支撑前端开发。原创 2023-04-06 17:38:56 · 1344 阅读 · 0 评论 -
物联网 JS 前端框架开发 - 执行 js 程序
此篇文章主要讲解如何在物联网操作系统OneOS上运行高级语言JS脚本程序。想想还是有点意思的,毕竟在IOT设备上,我们的固有想法是,他们性能很羸弱,可能就跑跑一些简单的C应用程序,没想到已经可以运行高级语言JS脚本程序了哇哈哈。原创 2023-04-07 10:03:08 · 884 阅读 · 0 评论 -
物联网 JS 前端框架开发 - 执行 VUE 程序
但随着前端页面的复杂度的增加,渐渐数据驱动和mvvm的思想开始形成,有了backbone,angular等先驱。再之后随着AST,Bable,webpack等技术的兴起,一个逐渐晚上的前端框架体系也随之建立了起来,如今最入门的就是vue和react了。这里使用的是脚手架,但首先,我们得先安装好开发环境,这里指的是node.js安装,版本大于v13。所以,他们就是框架啊,purejs,就是不用框架直接写js代码啊!第三步,应用运行,在板子的应用列表界面,点击运行应用即可。两分天下,也才用了不到十年的光景。原创 2023-04-07 10:57:09 · 562 阅读 · 1 评论 -
ozone配合gcc+jlink可视化调试
Ozone 是 SEGGER公司开发的一个调试工具,用于J-Link和J-Trace的跨平台调试器和性能分析器,具有所有常见的视图(源代码、内存、控制台/终端、寄存器、反汇编、调用堆栈等等。独立图形调试器调试任何工具链和IDE的输出C / C ++源代码级调试和汇编指令调试用于任何目的的调试信息窗口:反汇编,内存,全局和本地,(实时)监视,CPU和外围设备寄存器源代码编辑器可立即修复错误将应用程序高速编程到目标中。原创 2023-07-06 16:28:24 · 1195 阅读 · 1 评论 -
基于虚拟化的物联网沙盒操作系统
为了解决硬件性能和过剩和软件冲突,**「硬件虚拟化」**的普及就很自然而然的出现。对于 Guest OS 和上面的应用程序来说,这台虚拟机和普通物理计算机是完全一样没有任何区别的——除了性能可能差一点。全球第一人气的 VMware Workstation 就是这么一个软件,Oracle 的 VirtualBox 以及 Microsoft 的 Virtual PC 都是。这类软件英语有一个专用的单词是 Hypervisor(虚拟机管理程序)。可以把资源分配到不同的虚拟机,达到硬件资源的最大化利用;原创 2023-06-13 15:17:18 · 1467 阅读 · 0 评论 -
gcc 工具链:collect2.exe: fatal error: CreateProcess: No such file or directory
其实本质上就是:在Windows上,传递给CreateProcess()的字符串(包括所有参数)的最大长度为32768个字符,看起来最终的链接器命令超过了这个限制。因此,我们计算字符串长度的时候需要把它给展开,这一下就大了哟!当然,还有各种有意思的改发,比如让代码的目录放在盘符根目录,其实也是规避的一种,因为这样有效减小了。的路径,变相的减小了传递给CreateProcess()的字符串,也算是曲线救国了。其实不是这样的,因为有大量的需要链接的。这里改的方式就是使用了第三种方案,简单高效。原创 2023-02-07 15:41:29 · 1624 阅读 · 1 评论 -
arm-2d是个啥?初体验!
本篇文章,属于学习性质,一边学习,一边记录所得。随着越来越多的智能物联网边缘设备被引入到我们的日常生活中,那些习惯了智能手机一样的图形用户界面(GUI)的人们想要拥有类似的现代化用户体验,即使是在使用基于微控制器的产品时也是如此。Arm 的生态合作伙伴长期以来一直观察和理解这一趋势。因此,许多硬件厂商将专用的硬件加速器引入到他们的微控制器产品中,以帮助进行2D 图像处理。与此同时,GUI 服务提供商还更新了他们的产品线,以针对基于微控制器的 GUI 应用程序。原创 2022-08-25 11:44:47 · 2967 阅读 · 1 评论 -
arm-2d移植到OneOS上的使用
作为图形组件,在OneOS开源组件里面已经有了LVGL。LVGL是一种轻量级的通用图形库。用C编写以获得最大的兼容性,在微控制器下,提供占用小内存的图形界面。它提供了创建嵌入式GUI所需的组成部分,具有易于使用的图形元素,以及精美的视觉效果。但它也有着一定的限制,比如最小资源占用64 kB Flash,16 kB RAM,所以就想着能不能有一款比LVGL占用更小的呢?有,Arm-2D!原创 2022-09-23 17:28:33 · 1379 阅读 · 4 评论 -
浏览器edge插件的安全与个人隐私
如果说,我们在电脑上使用频率最高的是什么,我肯定是浏览器。如果说什么浏览器最好用,以前是chrome,现在肯定是edge!它有chrome没有的同步功能,也有强大的插件商城!但,浏览器插件真的安全吗?肯定不是的,反而,我认为它是不安全的。那我们平时应该如何注意呢?反正是没有安装在别的地方的,就是在Edge目录下。原创 2022-09-10 13:41:47 · 3220 阅读 · 0 评论 -
好用的 edge 插件有哪些?
浏览器可以说是日常工作中频繁接触的工具,借助浏览器这个平台,让插件触手可及,使用更加方便。而插件则大大提高浏览器的效率,扩展浏览器功能。其次,插件普遍在几十KB或者上百KB,对比于动辄几十上百MB的桌面应用要轻量很多,安装非常方便!为了浏览器的安全,个人的隐私,非常建议在edge官方的插件商城进行下载安装,并且选择使用下载人数多的,不用的时候记得关掉该插件。有句话是这么说的:没有插件的浏览器无异于没有灵魂!我想,插件就是浏览器的翅膀吧!说说自己喜欢的edge插件有哪些吧!原创 2022-09-10 13:00:02 · 10884 阅读 · 0 评论 -
好嗨哟!OneOS 图形组件显示自己喜欢的图片
一直对图形心心念念,还能想到以前使用QT的日子,而后接触到了资源比较受限的MCU,发现QT便没有什么优势了,更多的则是:GUIX、ucGUI、storyboard,LVGL等,没有一家独大,而是百花争鸣。其中,OneOS联合LVGL,组成OneOS下的图形组件,也让OneOS的图形功能得到了很好的扩展和延伸。此篇文章,主要使用其图形组件,结合LVGL的图片在线转换工具,简单体验一下图片显示的感觉。在LVGL中,图片显示有几种方式呢?我能想到的有两种,其一是在文件系统的支撑下,把图片直接放入sd卡或者其它文件原创 2022-07-11 15:10:56 · 495 阅读 · 0 评论 -
OneOS下的图形组件配置学习
不积跬步无以至千里,不积小流无以成江海。此篇文章,主要对自己使用下的一个图形组件,对于配置的一些感受,欢迎指正。轻量级框架基于移植开发,针对图形化开发工具的设计,以模块化的方式,解决物联网操作系统在微控制器下图形界面资源占用过大、源码不可见、图形界面库不统一、使用难度较大的痛点。主要功能如下:此份说明文档主要阐明如何高效使用对轻量级框架进行快速使用和配置。和是的输入输出设备,选中即可使能,目前支持的版本为和。以上是适配支持的主要配置。从上到下一一解释。的单绘制缓冲区的行数默认显示刷新周期,将在此期原创 2022-07-08 15:28:57 · 425 阅读 · 0 评论 -
OneOS 下的 GUI 框架测试
最近在学习,发现国产竟然已经发展得这么蓬勃了,之前一直喜欢用,但现在更多得国产物联网操作系统更让我值得期待和尝试了。此次,主要是体验下中国移动旗下得一块轻量级,通过配置组件,使能GUI模块,顺便跑了下,发现惊喜连连,棒棒哒!是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持、、等主流CPU架构,兼容、等标准接口,支持语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。轻量级GUI框架是基于,是一个C语言编写的原创 2022-06-28 17:21:49 · 669 阅读 · 0 评论 -
手工计算 Unicode 转换为 UTF-8
1.前言今天因为想把一个Unicode值转换为UTF-8值,在网络上搜了半天,结果均没有收获,大部分都是获取字符的Unicode值或者UTF-8值。基于此,想着,如果一个Unicode值和UTF-8值都代表同一个字符,那么我可不可以直接把一个Unicode值转换为UTF-8值?它们之前是否存在一定的规律呢?答案是:肯定的。2.ASCII码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。转载 2022-05-23 15:20:23 · 546 阅读 · 0 评论 -
常见的图标库有哪些?
链接:http://www.iconfont.cn/Iconfont 是阿里提供了一个图标库,你可以想象成是一个售卖图标的超市,挑选你需要的图标放入购物车,然后 Iconfont 会为你打包你购物车里的图标,自动生成一种新的字体,你可以选择下载到本地,在你的项目中引入这种字体,这样即便没有网络的情况也可以使用图标。这种模式的一大优点就是只挑选出需要的图标,不会像其他图标库那样直接下载一整个图标库的内容,尽管你可能只会使用一两个图标。有的项目打包上线对大小是有严格要求的,比如微信小程序打包之后的代码大小就要控原创 2022-05-23 09:33:44 · 12355 阅读 · 0 评论 -
超好用的图标库在 LVGL 上的转换与支持
1.前言上一篇文章,写了常用的图标库有哪些,本文章就以阿里图标库Iconfont为例,写写图标库到底是个啥!以及,如何使用在LVGL之中。2.图标其实是一种字体首先,我们注册iconfont,然后把自己心仪的图标加入购物车,最后进入购物车,选择下载源代码即可。举个栗子,下图就是我下载下来的图标内容:第一次看到这几个文件时,不知道有什么用,可能会直接删除,但万万不可,打开 iconfont.css 文件可以在 @font-face 中都有引用这几个文件。查询资料后得知:虽然现代浏览器支持自定义字体样原创 2022-05-23 09:21:43 · 1113 阅读 · 0 评论 -
LVGL 字体转换与支持
1.前言在LVGL中,自带了中英文字体,英文字体倒是挺全的,字号从8到48都有。而中文字体呢,则只有16号字体的lv_font_simsun_16,更严重的是,包含的汉字还不全。。。本文章主要讲两个方面。一是如何使用LVGL自带的字体二是当自带字体不满足需求时,如何定制自己想要的字体2.使用LVGL自带字体对于使用LVGL自带的字体,很简单。主要两个步骤,一是把LVGL自带的字体文件加入编译系统中去,二是使用它。在OneOS-Lite中,我们通过配置的方式,使能指定字体。如此,我们可以原创 2022-05-20 14:49:40 · 1494 阅读 · 0 评论 -
OneOS-Lite 上提升 LVGL 帧率的方法
1.前言LVGL的移植是第一步,这使得OneOS-Lite上拥有了图形界面的能力。下一步,则是如何提升LVGL帧率问题。总结了一下,大概有以下几个方面。帧率FPS:FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。通常,要避免动作不流畅的最低是30。硬件本身性能OneOS-Lite系统影响LVGL2.硬件本身性能通常,要使得FPS更高,硬件选型是第一步,至关重要的一步。原创 2022-05-13 11:18:03 · 1174 阅读 · 0 评论 -
基于OneOS-Lite适配LVGL8.2
1.前言LVGL7.9很早就已经在OneOS-Lite适配支持了,随着LVGL的版本迭代,LVGL8.2配合squareline可视化开发工具成了更好的选择。因此,OneOS-Lite也一并支持了LVGL8.2版本。此篇文章,则是讲讲基于OneOS-Lite适配LVGL8.2的过程,以供分享。2.LVGL目录结构由上图可见,摒弃杂乱,最有用的也就是:demos:可用于演示LVGL的图形效果,比如LVGL官网的demo就是它examples:可用于学习时,作为示例使用。更重要的是里面的por原创 2022-05-12 15:52:00 · 376 阅读 · 0 评论 -
目前有哪些嵌入式GUI?
1.简介最近对嵌入式下的GUI挺感兴趣的,MCU性能虽小,但仍能运行流畅的图形界面,在可穿戴设备上,或者一些小屏设备上,大有可一展身手之处。不了解不要紧,一了解吓一跳。原来嵌入式GUI已经发展得如此蓬勃,生命力旺盛,让人兴奋。有大厂的介入,也有新兴公司的崛起,还有开源创作者的热爱,每一份GUI都如璀璨的明珠,或大或小,闪闪发光。以下统计了一些,我力所能知道的一些GUI项目,仅供参考:LVGL 开源https://lvgl.io/QT for MCU 闭源https://www.qt.i原创 2022-05-12 11:10:03 · 2081 阅读 · 0 评论 -
安全函数之缓冲区溢出
公司的大佬说之前某大厂为了安全函数的替换耗资10亿美金。可想安全很重要,安全函数很重要,对于我们做系统软件的来说很重要。为什么要替换成安全函数,这里面就涉及到了一种漏洞攻击,缓冲区溢出攻击。缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区,又被称为**“堆栈”**,在各个.原创 2022-01-18 15:04:54 · 2518 阅读 · 0 评论 -
那些和编译优化相关的事儿
前言优化是一个神奇的事情,可化腐朽为神奇,此点金手为编译器,我常认为她是很好的人工智能,可把人类语言化为机器语言。什么时候会用到优化?发行的版本release一般都是二级优化的,因为优化能使可执行文件更小,执行效率更高。什么时候不会用优化?调试的版本debug,因为为了保证源代码和二进制代码一一对应。优化是否会出问题?会的,有时候不加优化,程序可以正常运行。加了优化以后,程序不可以正常运行。出了问题怎么办?部分代码取消优化这种情况可最小范围的取消部分优化。我们知道,优化是通过编译参数原创 2022-01-18 10:03:05 · 366 阅读 · 0 评论