- 博客(478)
- 资源 (11)
- 收藏
- 关注
原创 什么是计算机体系结构
计算机体系结构通常用指令系统手册和结构框图来表示, 结构框图中的方块表示计算机的功能模块, 线条和箭头表示指令和数据在功能模块中的流动, 结构框图可以不断分解一直到门级或晶体管级。用硬件描述语言 (如 Verilog)描述的体系结构可以通过电子设计自动化 (Electronic Design Automation, 简称 EDA) 工具进行功能验证和性能分析, 转换成门级及晶体管级网表, 并通过布局布线最终转换成版图, 用于芯片制造。冯·诺依曼结构的存储程序和指令驱动执行原理是现代计算机体系结构的基础。
2025-04-02 14:59:32
756
原创 深入解析libffi:跨语言函数调用的底层引擎
抽象与封装:隐藏不同平台的调用约定差异动态性:运行时决定函数签名可扩展性:支持自定义类型和ABI支持更多新兴架构(如RISC-V)优化WebAssembly环境下的性能增强类型系统的表达能力无论是构建多语言集成的复杂系统,还是开发高性能的脚本语言扩展,理解libffi的工作原理都将为开发者带来显著优势。它的设计理念和实现技巧,也值得所有对系统编程感兴趣的开发者深入研究。
2025-04-02 10:19:47
624
原创 深入解析libreadline:命令行交互的强大引擎
if (!// 初始化// 在main中设置:实现效果:输入"st"后按Tab,会补全"start"/“stop”/“status”libreadline作为命令行交互的黄金标准,其强大功能可以极大提升应用的易用性。媲美Bash的编辑体验智能补全功能跨会话历史记录高度可定制的交互界面无论是开发自定义Shell、数据库客户端还是其他CLI工具,libreadline都是值得信赖的选择。
2025-03-31 14:19:35
300
原创 深入解析libcurl:跨平台网络传输的瑞士军刀
libcurl诞生于1997年,由Daniel Stenberg创建,最初是作为命令行工具curl的底层库发展而来。经过20余年演进,现已成为支持最广泛网络协议的开源传输库,被Apple、Google、Microsoft等巨头深度集成到操作系统和开发工具链中。作为跨平台、多协议、线程安全的网络传输引擎,libcurl解决了三大核心痛点:四层抽象模型:多接口模式:Easy接口:同步阻塞式(适合简单场景)Multi接口:异步非阻塞(支持多路复用)Share接口:跨句柄资源共享2.3 独特优势
2025-03-31 12:15:30
773
原创 深入探索 libarchive
通过本文的深度解析,开发者可以全面掌握libarchive的核心能力。无论是构建新一代包管理工具,还是开发安全的数据处理服务,这个历经20年淬炼的开源库都将是您值得信赖的基石。其优雅的API设计和强大的格式支持,让归档处理从未如此简单高效。
2025-03-28 18:47:31
788
原创 深入解析libsafec:C语言安全编程的守护者
libsafec是一个C语言库,专注于提供安全的函数替代标准C库中容易引发安全问题的函数。防止缓冲区溢出:通过显式指定缓冲区大小,避免越界访问。增强输入验证:提供安全的输入处理函数,防止注入攻击。提高代码可移植性:兼容多种操作系统和编译器。libsafec通过提供一系列安全的函数替代标准C库中的危险函数,帮助开发者编写更健壮、更安全的代码。防止缓冲区溢出:通过显式指定缓冲区大小,避免越界访问。增强输入验证:提供安全的输入处理函数,防止注入攻击。提高代码可移植性:兼容多种操作系统和编译器。
2025-03-24 09:45:27
331
原创 深入解析libsunrpc:构建分布式系统的核心RPC库
RPC是一种通过网络从远程计算机请求服务的协议,其核心思想是让远程调用像本地函数调用一样简单。开发者无需关注底层网络通信细节,只需定义接口即可实现跨进程或跨机器的交互。通信模型:基于客户端-服务器模式,客户端发起调用请求,服务器执行并返回结果。协议分层:跨越OSI模型的传输层和应用层,依赖TCP/UDP作为传输协议。libsunrpc作为经典的RPC实现,为分布式系统提供了可靠的基础设施。跨平台能力:通过XDR和标准化接口支持异构系统。灵活的服务管理:动态端口映射简化了服务部署。可扩展性。
2025-03-24 09:34:18
430
原创 OpenSSH详解:构建安全远程管理的核心技术
在数字化时代,远程管理服务器和数据传输的安全性至关重要。OpenSSH(Open Secure Shell)作为SSH协议的开源实现,通过加密通信、身份验证和数据完整性保护,彻底解决了传统工具(如Telnet、FTP)的明文传输风险。本文将从核心原理、配置实践到高级功能,全面解析OpenSSH的技术细节与应用场景。
2025-03-24 09:22:33
757
原创 探索Mbed TLS:嵌入式系统中的加密与安全通信
Mbed TLS 是一个开源的加密库,旨在为嵌入式系统和资源受限的设备提供安全通信和加密功能。它支持多种加密算法(如AES、RSA、ECC)、哈希函数(如SHA-256)、随机数生成器以及SSL/TLS协议的实现。Mbed TLS 的设计目标是模块化、可移植和易于集成,使其成为嵌入式开发者的首选加密库。Mbed TLS 的模块化设计允许你根据需要启用或禁用特定功能。通过修改config.h文件,你可以自定义库的功能集,以减少资源占用。
2025-03-24 09:16:16
786
原创 探索Google Test(gtest):C++单元测试的强大工具
在软件开发过程中,单元测试是确保代码质量和可靠性的重要手段。Google Test(简称gtest)是Google开发的一个C++单元测试框架,广泛应用于各种C++项目中。它提供了丰富的断言、测试固件、参数化测试等功能,使得编写和维护单元测试变得更加简单和高效。本文将详细介绍gtest的基本用法和高级特性,帮助你快速上手并充分利用这个强大的工具。
2025-03-24 09:08:40
488
原创 使用 glog 实现高效的日志记录
glog高性能:基于异步日志记录,减少对主线程的影响。灵活的日志级别:支持多种日志级别(如 INFO、WARNING、ERROR、FATAL)。日志文件管理:自动按日期或大小分割日志文件。线程安全:支持多线程环境下的日志记录。跨平台:支持 Linux、macOS 和 Windows 等操作系统。glog广泛应用于 Google 的开源项目(如 gRPC、TensorFlow)以及其他许多 C++ 项目中。glog});glog是一个功能强大且高效的日志库,适用于各种 C++ 项目。
2025-03-18 16:17:20
889
原创 使用 libmodbus 实现 Modbus 通信
libmodbusModbus RTU:基于串行通信(如 RS-232、RS-485)。Modbus TCP:基于以太网通信(TCP/IP)。:基于 ASCII 编码的串行通信。主站和从站功能:支持 Modbus 主站(Master)和从站(Slave)的实现。libmodbus跨平台:支持 Linux、Windows、macOS 等操作系统。易用性:提供了简洁的 API,方便开发者快速上手。高性能:基于事件驱动模型,支持高并发通信。libmodbus。
2025-03-18 15:38:25
624
原创 使用 OpenSSL 构建安全的网络应用
对称加密:如 AES、DES。非对称加密:如 RSA、ECC。哈希算法:如 SHA-256、MD5。SSL/TLS 协议:用于安全的网络通信。证书管理:X.509 证书的生成、签名和验证。OpenSSL 广泛应用于 Web 服务器(如 Apache、Nginx)、邮件服务器、VPN 以及其他需要安全通信的场景。OpenSSL 是一个功能强大且灵活的开源库,适用于各种加密和安全通信场景。通过它,开发者可以轻松实现数据加密、SSL/TLS 通信以及证书管理。
2025-03-18 14:41:40
801
原创 使用 libevent 构建高性能网络应用
libevent是一个用 C 语言编写的事件驱动库,旨在提供一种高效的方式来处理 I/O 事件、定时器和信号。跨平台:支持 Linux、macOS、Windows 等多种操作系统。高性能:基于操作系统提供的高效 I/O 多路复用机制(如epollkqueueIOCP等)。易用性:提供了简洁的 API,方便开发者快速上手。可扩展性:支持多种事件类型(如 I/O 事件、定时器事件、信号事件)。libevent被广泛应用于许多知名项目,如 Memcached、Tor 和 Chromium。
2025-03-18 14:03:46
728
原创 使用 gflags 轻松解析命令行参数
gflags是 Google 提供的一个用于解析命令行参数的 C++ 库。简单易用:通过宏定义参数,无需手动解析argc和argv。类型安全:支持多种类型的参数(如字符串、整数、布尔值等)。灵活性:支持默认值、参数描述、验证函数等。跨平台:支持 Linux、macOS 和 Windows 等操作系统。gflags广泛应用于 Google 的开源项目(如 gRPC、TensorFlow)以及其他许多 C++ 项目中。gflags使用宏来定义命令行参数。:定义字符串类型参数。
2025-03-18 11:52:44
1082
原创 【嵌入式英语教程--20】实时操作系统中的内存管理
实时操作系统 (RTOS) 中的内存管理对于确保任务拥有必要的资源以高效执行至关重要。在 RTOS 中,内存通常是动态分配的,这意味着系统会根据需要将内存块分配给任务。这种灵活性允许系统处理不同的工作负载,但也需要谨慎管理,以避免碎片化和内存泄漏。RTOS 使用内存管理器来分配和释放内存。当任务完成时,它使用的内存被归还到池中,使其可供其他任务使用。此外,RTOS 通常采用内存分区等技术,以确保关键任务始终能够访问所需的内存。因此,开发人员必须设计他们的系统,以优化内存使用并防止错误。
2024-08-16 09:50:53
1433
原创 【嵌入式英语教程--19】实时操作系统中的中断
在实时操作系统(RTOS)中,中断对于响应实时事件至关重要。中断是一种信号,它会暂时停止CPU的当前操作以执行特定任务。中断确保系统可以在没有延迟的情况下处理关键事件,例如输入/输出操作、传感器读取或与其他设备的通信。当发生中断时,CPU会保存其当前状态并执行中断服务程序(ISR)。ISR 是一个处理中断的小型预定义程序。有效管理中断对于保持系统的实时性能至关重要。中断延迟是指CPU响应中断所需的时间。在RTOS中,低中断延迟非常重要,因为即使是很小的延迟也可能影响系统满足截止时间的能力。
2024-08-16 09:35:23
767
原创 【嵌入式英语教程--18】实时操作系统信号量
实时操作系统 (RTOS) 中的信号量是一种用于管理资源访问的同步工具。它控制任务如何与共享资源交互,防止冲突。信号量可以是二进制的或计数的。二进制信号量仅允许一个任务在同一时间访问资源。计数信号量允许多个任务访问资源,直到达到定义的上限。当任务完成时,它会释放信号量。通过这种信号传递,确保资源在多任务环境中得到高效、安全的使用。表示一次仅允许一个任务访问资源。是复合名词,表示多任务处理环境。是动名词短语,表示防止冲突。表示任务继续之前的条件。表示任务与资源的交互,表示信号量变为可用,
2024-08-15 09:55:10
1073
原创 【嵌入式英语教程--17】实时操作系统调度特点
实时操作系统 (RTOS) 基于任务的优先级来管理任务。如果有更高优先级的任务准备就绪,系统可以抢占正在运行的任务。总体而言,RTOS 调度设计用于在时间敏感的环境中提供可预测的行为。引导条件从句,表示当高优先级任务准备就绪时,系统可以抢占正在运行的任务。是不定式结构,用来表目的,意指确定任务执行的顺序。表示高优先级任务在低优先级任务之前执行,是被动语态,强调任务被执行的顺序。是时间状语短语,意指任务按时完成,这里指的是需要及时完成的重要任务。是复合名词,表示时间敏感的环境。是副词,表示总体上,
2024-08-15 09:45:41
763
原创 【嵌入式英语教程--16】实时操作系统的线程间通信
在实时操作系统 (RTOS) 中,线程间通信对于协调任务是必不可少的。线程通常需要共享数据或同步其动作。常见的线程间通信方法包括消息队列、信号量和互斥量。消息队列允许线程以结构化的方式发送和接收数据。信号量帮助控制对共享资源的访问,防止冲突。互斥量(或互斥锁)确保一次只有一个线程访问代码的关键部分。有效的线程间通信对于实现实时性能和确保系统稳定至关重要。
2024-08-14 09:47:59
1221
原创 【嵌入式英语教程--15】实时操作系统的线程
在实时操作系统 (RTOS) 中,线程是最小的执行单元。线程在 RTOS 中对于管理需要同时运行的任务至关重要。每个线程都有其自己的堆栈,这是其执行上下文的重要组成部分。RTOS 调度程序根据优先级决定在任何给定时间运行哪个线程。高优先级线程可以抢占低优先级线程,以确保关键任务按时完成。线程可以使用消息队列和信号量等线程间通信机制进行通信。正确的线程管理是实现嵌入式系统中实时性能的关键。
2024-08-14 09:33:46
972
原创 【嵌入式英语教程--14】实时操作系统原理
A Real-Time Operating System (RTOS) is designed to serve real-time applications that process data as it comes in, typically without buffering delays. The primary function of an RTOS is to manage the hardware resources of a computer so that tasks can be exe
2024-08-13 11:34:06
1117
原创 【从零开始一步步学习VSOA开发】VSOA命令行工具vcl
是一个 VSOA 命令监听器,支持订阅来自特定服务器发布的所有数据。以命令-p-dvsoa://http://topic0。
2024-08-09 09:17:25
334
原创 【从零开始一步步学习VSOA开发】VSOA数据报
Datagram 是 VSOA 的一种数据传输类型,通常这种类型用于传输一些不需要确认的数据,例如传输视频流数据或构建 VPN 网络。Datagram 可以简单快速的在网络中传输数据。它即不需要建立连接,也不需要维护连接,因此可以更快地传输数据。客户端和服务端建立连接后,双方均可发送和接收 VSOA Datagram。发送使用直接调用函数方式;而接收使用事件机制,需要绑定一个接收回调函数。
2024-08-09 09:15:18
635
原创 【从零开始一步步学习VSOA开发】VSOA数据流
实际业务中常常存在既有实时命令通信,又有非实时的大数据通信,如文件、音视频传输服务等,如果使用常规的 RPC 或订阅/发布功能来实现,将实时命令和大数据传输混在一起,则会影响 RPC 通道响应的实时性,尤其在需要 RPC 实时控制的应用中就显得极不合理;另一种方式是针对此类大数据的每一个通信,均额外实现对应的服务,但这会给开发者带来额外的编程复杂度,同时增加整个系统的资源开销。VSOA 中提供了全双工高速并行数据流,称为 “VSOA Stream”。
2024-08-09 09:13:41
1080
原创 【从零开始一步步学习VSOA开发】订阅发布变速器
在许多场景中,我们需要控制发布频率。例如,一个 UI 界面不能过快的接收处理信息,而此时发布者的发布频率又非常快。在这种场景下,我们需要改变发布的频率。使用 VSOA Regulator 可以解决这个问题,它既可以使用在服务端,也可以使用在客户端。
2024-08-08 09:21:31
407
原创 【从零开始一步步学习VSOA开发】发布订阅重连时同步
数据同步是指在数据发布与订阅场景中,当客户端因故障断开重连后,需要立即获取当前最新数据的需求。如前面开发示例中的 axis_server 陀螺仪服务,若产生故障断开重连,则需要客户端上线后立即获取/axis的最新状态,以保证数据的一致性。通常情况下,客户端会在断开重连后,主动发起一次 RPC 请求以获取数据的最新状态,但如果需要获取的数据量较大,则会给代码编程带来更多的复杂性。此时,可以使用客户端机器人带有的自动数据同步接口进行处理。
2024-08-08 09:19:30
468
原创 【从零开始一步步学习VSOA开发】发布订阅客户端
相比于 RPC 客户端,订阅发布客户端是被动工作的,其配置更为简单,只需要在vsoa_client_auto_create 中注册订阅回调函数,在vsoa_client_auto_start 中设置订阅 URL 即可。
2024-08-07 09:33:47
276
原创 【从零开始一步步学习VSOA开发】发布订阅服务端
*发布订阅模式(Publish-Subscribe Pattern)**是一种消息传递模式,其中发布者发布消息,而订阅者接收和处理这些消息。它是一种松耦合的通信方式,允许发布者和订阅者在不知道彼此存在的情况下进行通信。发布订阅模式的原理基于消息队列或主题,发布者将消息发布到特定的消息队列或主题中,而订阅者可以订阅这些消息队列或主题以接收和处理消息。发布者和订阅者之间的通信是异步的,这意味着发布者发布消息后,订阅者可以在任何时候接收和处理消息。
2024-08-07 09:25:22
899
原创 【从零开始一步步学习VSOA开发】同步RPC客户端
前面的测试例程都是以异步 RPC 的模式运行的,客户端调用 RPC 请求后无需等待服务端应答即可返回,后面通过回回调方式获取返回结果。同步 RPC 即客户端在发送完毕请求后,函数进入阻塞模式一直等待,直到接受到服务端应答才唤醒并退出该函数,然后通过另外接口获取执行结果。同步 RPC 前首先需要使用创建 RPC 同步器,其次使用进行同步的 RPC 调用,调用结束后,再用vsoa_parser_get_payload 获取服务端返回结果,最后用删除 RPC 同步器。
2024-08-06 17:41:17
519
原创 【从零开始一步步学习VSOA开发】并行RPC服务端
之前 RPC 使用方式中的所有回调函数都是串行执行的,VSOA 为 C 语言开发版本提供了并行处理 RPC 请求的功能,开发者可以通过并发 RPC 相关接口创建线程池并行处理 RPC 请求。并发服务模式通过多线程来实现,能有效提高响应速度,降低排队等待时间。
2024-08-06 17:39:15
335
原创 【从零开始一步步学习VSOA开发】位置服务
VSOA 位置服务器提供了按服务名称查询 VSOA 服务器地址的功能,类似于 DNS 服务器,能有效简化客户端配置服务端地址的操作,并提高灵活性,为后面的故障自动迁移提供必要保证。位置模块 API 在和中。
2024-08-06 17:37:48
1046
原创 【从零开始一步步学习VSOA开发】客户端机器人
由前面 client 范例可见,使用 C 语言搭建 VSOA 客户端时步骤繁琐,且若服务端未启动时,客户端也将因连接服务端失败而不能正常运行。VSOA 提供了客户端机器人功能,客户端机器人可以自动连接指定的服务端并保持连接,使得开发者可以更加关注业务逻辑实现。
2024-08-05 17:02:20
744
原创 【从零开始一步步学习VSOA开发】创建VSOA的client端
客户端有一个固定框架:创建客户端,连接服务端,注册异步RPC请求(可选)进入监听事件循环。用户客户端程序可以参考这个框架来写,只是配置参数和注册的请求依据实际需求而改动。
2024-08-05 17:01:07
552
原创 【从零开始一步步学习VSOA开发】URL 资源标识
在 VSOA 的世界里,所有的差异化均得到统一,所有的硬件、软件服务均提供统一的资源标签 URL。类似http://,VSOA 的 URL 以vsoa://开始。
2024-08-05 16:59:05
342
原创 【从零开始一步步学习VSOA开发】创建VSOA的server端
server 端有一个固定框架:创建服务端,设置密码,创建RPC服务(可选),启动微服务和进入监听事件循环。所有服务端基本都按这个框架来写即可,只是配置参数和注册的服务依据实际需求而改动。
2024-08-05 16:54:15
1264
原创 【从零开始一步步学习VSOA开发】运行hellovsoa
和所有编程技术的首个程序一样,我们先创建、编译、部署、运行一个最简单的示例程序: hellovsoa。
2024-08-05 11:27:32
1671
原创 【从零开始一步步学习VSOA开发】搭建VSOA运行环境
为方便 VSOA 的运行和调测,这里选择RealEvo-Simulator 下的 AMD64 平台作为 VSOA 的硬件运行环境,操作系统则选择标准版的 SylixOS 而不是容器版的SylixOS。
2024-08-02 18:12:44
499
原创 【从零开始一步步学习VSOA开发】快速体验SylixOS
安装完毕RealEvo-IDE 后,同时也安装了RealEvo-Simulator。RealEvo-Simulator 是一个虚拟运行环境,可以模拟各种体系结构并在其上运行 SylixOS。相比于物理板卡,在 RealEvo-Simulator 进行运行调测更加的方便快捷且成本低廉。
2024-08-02 18:10:21
454
sdk-vsoa-v173-x64
2024-08-02
RealEvo-Simulator 下的 AMD64 平台磁盘镜像
2024-08-02
RealEvo-Simulator 下的 AMD64 平台系统镜像
2024-08-02
SylixOS下coreutils 软件包工程。
2022-05-11
The SPARC Architecture Manual Version 8
2022-04-16
GNU make中文手册2020.zip
2020-03-24
RealEvo-IDE使用手册.pdf
2018-02-02
RealEvo-IDE快速入门.pdf
2018-02-02
i.MX RT1050 Processor Reference Manual.pdf
2018-02-02
Hercules系列处理器安全特性介绍.pdf
2018-02-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人