自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(443)
  • 资源 (12)
  • 收藏
  • 关注

原创 掌握ROS:完整的认识ROS

元操作系统(Meta-Operating System)是一个高级概念,它不是传统意义上的操作系统,而是一个在现有操作系统之上运行的软件框架或系统,提供了额外的、更抽象的功能和服务。这种系统通常用于管理和协调底层操作系统的资源和应用程序,使得应用程序的开发和部署更加高效和灵活。ROS全称Robot Operating System(机器人元操作系统,ROS的目的旨在为开发者提供一个直观、通用的软件框架和工具集,旨在简化和加速机器人应用的开发和研究过程。

2024-01-02 15:36:40 1252 1

原创 串口硬控制流中CTS、RTS、DTR、DSR、DCD的作用与意义

硬件控制流信号在串口通信中没有固定的发送者或接收者,因为串口通信本身是一种双向协议。发送者和接收者的身份可以随时间动态切换,硬件控制流信号也可以在这个过程中互换发起者身份。这种灵活性使得通信双方能够根据需要动态地进行数据传输的控制。

2023-12-31 14:21:27 864

原创 什么是AHB、APB、AXI总线?

AHB(Advanced High-performance Bus)是一种高性能的总线协议,由英国ARM公司设计,被广泛应用于许多嵌入式系统中。它是一种基于Mater-Slave的总线架构,广泛应用于SoC、MCF当中,并且支持多个内存和外设连接。AHB一般应用于高性能、高时钟频率的系统结构,例如CPU与高速RAM、NAND FLASH、DMA等。

2023-10-16 13:58:32 441

原创 RISC-V 整型通用寄存器介绍

x0/zerox0寄存器又被称为zero寄存器,它的读写是无效的,它的值只能为0,这是为了让编译器进行优化上面这段汇编的作用是进行相加运算,将x2和x3寄存器的值相加的结果并放入x1寄存器,但是如果x3寄存器的值为0当RISC-V处理器执行这条指令的时不会去读取x0寄存器的值,会直接按0来运算,这样就可以省去与0做运算时读取的步骤。RISC-V处理器在设计时只要涉及到x0寄存器的读取一律按0来处理不会去读取x0的寄存器,这么做的目的是为了方便编译器优化某些运算。

2023-08-17 13:56:50 1444

原创 RISC-V体系结构

它规定了如何加载和执行RISC-V二进制代码,以及如何访问控制和系统资源。的操作,这样做的目的可以有效将不同特权完全分隔开,可以保证。,定义了一组特权指令和异常处理机制。,定义了一组用户态指令和系统调用指令。,那么两个语言编译出来的程序是。SBI限定了不同特权模式下对。二进制接口的,因为它们的。那么相互之间就可以调用。

2023-07-27 13:35:05 804

原创 RISC-V特权级别

所以内核分两部分,运行在M模式下的代码为内核提供访问硬件资源的能力,而S模式下的代码则更加灵活。里的最高权限模式,它具有访问所有资源的权限,它的代码是百分百可信的,通常运行在这个模式下的为。下,通常内核里有一段代码是运行在M模式下和S模式下,M模式下的代码为S模式下的代码提供。而S模式下的内核主要是为应用程序提供。里不同的模式下指令集是不同的,不能互相调用,运行在这个模式下的程序为最高权限,它属于。下的,在这个模式下内核需要初始化所有的。,在最初系统启动阶段内核是运行在。,在这个模式下具有和。

2023-07-27 13:34:36 1124

原创 什么是RISC-V?以及RISC-V和ARM、X86的区别

RISC-V是基于RISC精简指令集架构开发的一个开放式指令集架构,它是由加州大学伯克利分校的计算机科学教授(克里斯蒂安·阿萨诺维奇)领导的团队开发,RISC-V是开放的,任何人都可以使用它来开发处理器芯片和其他硬件,而无需支付任何许可或使用费用。RISC-V的设计简单,易于扩展和自定义,可以在各种应用场景和市场中使用。指令集架构(,简称ISA)是计算机系统中的一个重要概念,指的是计算机中处理器的指令集和处理器的内部结构,即处理器是如何执行指令的。ISA规定了一套指令集,包括指令的种类、指令的格式。

2023-07-27 13:31:54 3759

原创 电容的基本工作原理

电容会阻碍直流信号通过的原因是因为电容负极一端在逐步充电,有源源不断的电子进入,当极板上充满电子时即代表电容的电量充满了,极板上没有多余的空间让电子进入同时也由于同性相斥的原因电容里的电子会排斥后续电子的进入,这样就导致电容的一端形成了电子无法流动的情况从而导致直流信号无法通过,而金属极板内的电子无法通过两个金属极板中间的电介质。位移极化只是将无极分子施加电场力让它内部电子不重叠,负电子仍然没有拜托共价键的束缚,这种力比较中性所以对导电率的影响并不高,这也是为什么极性电容可以做到相同体积下容量更大的原因。

2023-06-19 23:23:57 1332

原创 I3C仿真:PGY I3C-EX-PD使用

指示灯状态LED1电源LEDLED2保留LED3配置为MASTER时,LED亮起LED4当设备引导时,该LED将每1秒闪烁一次。连接完成后使用软件建立并启动捕获时LED将闪烁得更快,表明其已做好获取准备LED5完成LED,启动完成时亮起。LED6配置为SALVE时,LED亮起。

2023-05-15 13:23:09 643 1

原创 什么是OpenVino?以及如何使用OpenVino运行yolo

Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包,主要用于对深度推理做优化。Openvino内部集成了OpencvTensorFlow模块,除此之外它还具有强大的Plugin开发框架,允许开发者在Openvino之上对推理过程做优化。Openvino前端→ Plugin中间层→ Backend后端Openvino的优点在于它屏蔽了后端接口,提供了统一操作的前端API,开发者可以无需关心后端的实现,例如后端可以是。

2023-04-23 12:34:00 5031 3

原创 Linux Dbus

Linux Dbus是由项目开发的一款IPC进程间通讯技术,它是基于在Unix 域套接字实现的,它在sockets上面进行了封装并提供了一套更加规范、方便、安全的通讯机制,同时定义了一套标准接口,目前已经被大量Linux发行版所采用,比如Ubuntu、Centos...Dbus最初的目的就是为桌面应用程序之间提供IPC通讯技术它不属于Linux内核的一部分,它目前没有被Linux内核所采纳。

2023-03-27 16:28:19 2459 1

原创 Zephyr驱动程序框架简介

Zephyr为驱动提供一套具体的驱动框架模型,开发者可根据这一套驱动框架模型来实现自己的驱动,这一套模型非常类似Linux内核的驱动实现,如果你对Linux内核驱动模型或有Linux内核驱动开发相关经验那么学习起来会非常轻松与简单。驱动模型框架是使用了结构化的方式描述驱动,每个驱动都有等级,等级在Zephyr内部已经规定好了,每个等级对应不同的阶段,Zephyr在启动过程中会根据等级来依次初始化这些驱动,同时在不同的阶段下某些内核服务的可用性也是不同的。一些通用类型的驱动 (常见驱动) Zephyr给出了具

2023-03-05 08:27:55 1211

原创 通过Buildroot自制根文件系统

根文件系统是Linux内核启动之后读取的一个文件系统,并从这个文件系统中加载第一个init应用程序并启动,就是Linux上俗称的root进程、根进程。

2023-02-23 14:12:20 958

原创 在OpenstLinux根文件系统里增加自己的应用程序

这些文件夹都是按照Linux内核所需要的格式提供的,Linux内核启动时会需要文件系统下存在这些文件夹,用于Linux内核做初始化,这些目录结构非常眼熟和我们平时装好发行版时提供的文件夹结构是一样的。不同的系统内核所需要的文件夹也是不同的,这里我们重点关注bin这个文件夹,这里的bin就相当于我们/usr/bin目录,这个文件夹里存放了bin文件,我们可以将我们编译好的二进制文件放入到这个文件夹里去就可以了。可以看到存放了一些常用命令,例如rm、ls、cp等,一般这些工具都是基于busybox制作的。

2023-02-22 16:17:38 260

原创 烧录OpenStLinux到Stm32mp157上

这几个都是flashlayout文件存放目录,每个目录里flashlayout布局使用的固件都不同,这些是ST根据不同的信息生成的不同固件的配置方法,其中optee和trusted是我们常用的,flashlayout以tsv文件格式作为存储,可以看到trusted目录下的内容。我的flash是emmc的,所以我使用的是flash_emmc*的配置文件,这里打开配置文件看一下,如果你的是定制板那么可以向厂商索要这个文件。在刷写之前根据你的板子拨码开关拨码到指定位置,这里我使用的是usb下载模式。

2023-02-22 10:09:43 725 2

原创 移植OpenStLinux到Stm32Mp157上

OpenstLinux是st官方提供的基于Yocto和Debian构建的发行版Linux操作系统,专门为Stm32Mp1系列研发的操作系统,这里解释一下为什么OpenstLinux使用了两种构建方式,OpenstLinux使用了Yocto的Bitbake工具来进行编译方面的构建,在运行阶段使用了Debian项目下的开源应用例如apt-getGithub地址:https://github.com/STMicroelectronics/oe-manifest官方Wiki地址:https://wiki.st.co

2023-02-22 10:03:03 702

原创 构建Yocto项目

简称YP, 是一个致力于帮助开发者构建自己的Linux嵌入式的项目,除了Yocto还有其它的开源项目例如:Debian,著名的Ubuntu就是基于Debian来构建的发行版。(YP)是一个开源协作项目, 可帮助开发人员创建基于Linux内核的自定义系统, 而无需考虑其硬件体系结构。该项目提供了一套灵活的Build工具, 开发者可以更快的上手去构建自己的Linux操作系统, 经过许多年的发展Yocto已经支持了许多架构, 例如:IntelARMMIPSAMDPPC。

2023-02-21 12:22:17 850

原创 Kibana创建图表

创建时,在index pattern字段下输入你要绑定的Index数据,Timestamp field字段是用于绑定时间戳的,主要做时间分类用的,你可以绑定自定义字段,也可以绑定Filebeat自动生成的字段:@timestamp。Kibana作为ELK里的VIEW层,它主要工作是将ELK里的数据可视化,下图为使用Kibana创建的图表数据,用于实时监控CPU信息。如果你想查看数据,可以选择Analytics->Discover,在这里可以清楚的看到Index下的数据。我们还可以利用Pie。

2023-02-14 14:40:22 830

原创 Elastic Stack Logstash基础用法

在Logstash里为我们提供了一个非常强大的Grok日志分析工具,它可以将杂乱无序的日志变的井然有序。Mutate是过滤器,用于将字段进行二次过滤,它位于grok后一层。

2023-02-14 11:52:09 184

原创 Makefile depend规则

dummy规则是首要规则,即执行make不加任何目标的情况下默认执行的规则,它会去检查.depend文件是否存在,也就是你是否执行过dep去生成依赖文件,如果没有则执行dep规则,如果存在那么dummy规则什么都不会去做,因为在开头的include里已经包含了要编译的依赖文件选项。而linux内核里将-M的输出到.depend文件里去了,然后在利用Make的include命令包含进来,这样就实现了dep的功能,可以理解为增量编译功能。-M和-MM的区别是-MM不会将系统依赖文件包含进来。

2023-01-04 10:55:16 1046

原创 Bash 输入输出缓冲区

这里它用了read命令,read是从输入缓冲区里读取内容,而bash这段调用:

2023-01-03 23:26:38 454

原创 卷积神经网络中卷积的作用与原理

在神经网络中卷积是最常见的操作,通常情况下它应用在神经网络的Input层后面,所以我们多数情况下称这一层为卷积层或隐藏层,这里提一句什么是隐藏层,在神经网络中有输入层和输出层,这两层对于外界是可见的,并且它接收来自外界的输入或输出到外界里去,当然一个完整的神经网络不可能只有输入层和输出层,就以CNN卷积神经网络来说当图像输入到输入层之后会被传递给下一层做特征提取下一层一般是卷积层,随后卷积层会传递给池化层,在由池化层传递给全连接层,这三层对于外界来说是不可见的,它不能直接接收外界的输入或直接输出到外界,所以

2022-12-13 11:13:37 6943 6

原创 Stm32 HAL_UART_Receive读取不到数据的问题

最近在做Stm32方面的工作时发现使用HAL_UART_Receive函数去读取数据时出现了问题,代码如下: 这段代码非常简单,就是在一定时间内读取满128个字符,但是会有一个问题,如果超时时buffer没有被读取到128个字节那么下次还可以读取,但是一旦超出或到达128个字节下次在读取就会没有数据,但是在中断情况下是可以正常读取的,随后我去查了一下USART寄存器,发现它有一个OVRDIS的功能,简单来说就是当数据达到buff设定大小时会将ORE标志置1,那么下次来新数据时如果ORE为1则不会填充到

2022-12-05 13:31:20 3451 4

原创 Elastic Stack 环境配置与框架简介

Logstash、Kibana,因此缩写为elk,随着版本的变化,添加了一个新软件Beats,因此其全名现在为ELKB。

2022-11-28 11:05:43 913

原创 数码管共阳极与共阴极的区别

无论是共阴还是共阳都是利用了最基础的回路电路,数码管需要回路才能让电子流动并产生能量点亮数码管,这里以共阳为例,共阳正极一直处于高电平,负极一定是用于产生回路的,所以负极不能是高电平,换句话说负极不能有任何电流,但是我们可以给负极接一根PIN脚,给它发送高电平将回路堵死,这样就可以让其不点亮,如果想要数码管点亮则不给电平(低电平)即可,所以这也是为什么共阳是低电平驱动,共阴是高电平驱动。将负极并联在一起,正极作为输入,这个会比较常用,因为正极使用单独的供电可以适配不同电压。

2022-11-07 15:38:55 4648

原创 Ubnutu上面配置Windows remote连接

Windows提供的远程桌面连接可以连接任何支持RDP协议的PC。它通常用于连接Windows和Windows。但是我们可以为Ubnutu系统安装或配置支持RDP协议的功能,以便实现Windows和Ubnutu之间的连接XRDP是Linux上的开源免费工具。它可以实现RDP协议并支持Microsoft RDP协议。在Linux上安装后,Windows可以通过远程GUI软件远程连接到Linux桌面系统。

2022-09-21 14:07:12 634

原创 C语言printf中%s、%*s、%*.*s的作用以及实现一个进度条

这个比较特殊,首先前面的*代表至少输出多少个字符,如果少于这几个字符则在左边空格补齐。”符号,则认为是一个格式化标识符,它会自动读取下一个字符作为占位符,如果“”上下文中,那么后面一个字符就要求为宽度占位数。在c语言printf的解析格式里,如果遇到“个字符,所以又在左边用空格进行了补齐。”则取参数对应位作为宽度,如果是“第二个*代表最多输出多少个字符。所以这段参数的含义是至少输出。的原因,所以我们只能输出。个则在左边用空格来补齐。个字符,但最多只能输出。,意味着最多只能输出。

2022-09-10 20:53:21 6578

原创 I3C协议通讯详解

详细介绍GPIO、I2C、SPI通讯原理以及物理层原理I3C CCC(Common Command Codes)是I3C下CMD命令代码,用于通讯方面,设备收到指定命令应做出对应的响应,类似于Linux上的ShellI3C CCC有255个指令有部分是保留的指令,其中有15个标记为必须的是要求I3C设备必须支持的,I3C设备在支持这些命令时需按照I3C CCC定制的规范来实现,并且广播和直接命令都有一个固定范围,从机可以根据命令码的范围来判断是属于广播还是直接命令。...

2022-08-18 11:51:20 15317 5

原创 gcc unsed和used的作用

很多时候我们在编写代码的时候,如果此时编译器检查等级比较高,编译器会将警告视为错误,比如一个函数里有某些变量虽然存在但未使用,那么会报错,同时比如我们将某些变量放入某个段里然后通过指针指向地址来对它进行引用,那么会产生一个问题,如果开启了优化等级,如果这个变量在代码里没有被明确引用那么它可能不会被生成,就导致了指针引用方式出现了NULL的问题。(该属性附加到函数,意味着即使函数似乎未被引用,也必须为该函数发出代码。第一个问题可以使用unused属性来解决,第二个问题可以使用used属性来解决。...

2022-07-15 11:05:33 709 1

原创 Zephyr Power Management Subsystem详细介绍

Power Management Subsystem(电源管理子系统)在Zephyr下是负责管理电源模式的系统,它制定了一套规范与模型由SOC开发者实现在这个系统上属于自己的电源模式,并且还提供了几种电源管理策略,开发者基于这些策略为SOC开发出对应的电源模式电源的管理统一由Power Management Subsystem控制,在Power Management Subsystem里定义了部分Weak函数,当发生电源操作时电源管理子系统会去调用这些函数,如果开发者没有实现那么什么都不会做,如果实现了则调

2022-06-04 12:44:22 1468 1

原创 在zephyr上使用mipi-sys-t

目录Mipi-Sys-T简介在Zephry中使用它配置示例解码Mipi-Sys-T简介Mipi-Sys-T是低功耗数据传输协议,主要应用在底宽带、移动设备上用于打印LOG日志,它内部函数会将要打印的字符串经过算法进行转换并打印,它会将要打印的字符变的更短,在打印之后可以通过Mipi-Sys-T提供的printer工具进行解析比如在Zephyr中开启了Mipi-Sys-T功能作为输出log的方式,那么Zephyr在你调用Printk或者LOG_DBG的时候都会在内部

2022-04-27 09:38:42 462

原创 Zephyr NVS文件系统原理及应用

概念Zephyr NVS是建立在Flash存储器之上的一个简易文件系统,它的目的是为了解决Flash擦除的寿命,因为Flash每次覆盖写入时都需要擦除扇区区域,NVS的作用是让用户每次覆盖写入时不会去擦除块区域,有效降低Flash的擦写寿命实现原理Flash特性Flash在每次写入数据时需要将Flash按扇区(不同的Flash类型划分单位不一样)擦除,也就是将所有的存储单元置为1(0xFFFF),因为Flash的特性它只能将bit从1变为0,而不能将0变为1,所以它不能对同一块内存区域进行重

2022-04-24 20:00:30 3469

原创 Linux下Shell脚本命令行参数:getopt、getopts用法

简介我们通常在编写shell脚本时简单的方式是通过参数的方式来取到我们想要的参数,如:#!/bin/bash SYSCODE=$1APP_NAME=$2MODE_NAME=$3但是这有一个问题,就是参数的位置是固定的,倘若用户在调用脚本时参数位置不固定那么就会出现问题,这种方法一般只适用于一两个参数的情况,我们可以使用更高阶的方案,在Linux中提供了两个命令:getopt与getopts,getopts是getopt更高阶的命令,我们先从最简单的介绍,先从getopt开始介绍..

2022-04-09 19:47:47 4872

原创 Zephyr单元测试框架:ztest/twister的使用和介绍

简介Zephyr为开发者们提供了一套简单的测试框架:Ztest,用于测试开发者们开发的Core,Ztest提供了断言以及一些基础的测试API,类似C语言的断言功能。开发者们可以用这套框架编写Test Case,可以编写自动化脚本来测试自己的Drier或其它API接口是否能够正常工作,同时Zephyr也提供了自动化测试的脚本:twister,它是使用Python编写,用于批量或指定运行Test Cose,并且它能根据Ztest输出结果生成一些诊断信息。Ztest简介Ztest是zephyr

2022-04-06 19:06:00 2761

原创 推荐一个免费绘制软件架构图的网站

GitMind这个网站里可以绘制MarkDown的一些图形,不同于MarkDown的区别在于它是可视化的,用起来也比较简单。如下图是我绘制的软件架构图:

2022-03-19 16:03:37 2288 1

原创 Windows核心编程_添加开机自启动

添加开机自启动的方式有很多种,这里以:startup方式为例,在Windows用户目录下有一个Startup目录,这个目录下的程序会被Windows登入之后所启动,但是启动级别属于较低的,这个目录适合启动一些GUI程序,不适合开机启动一些优先级较高的服务!这个方案只应用于当前用户首先你需要预备几个知识点:1.如何使用c语言获取环境变量2.使用WinSDK创建快捷方式具体思路:在Windows中有一个用户变量是:userprofile,这个环境变量指向当前用户工作目录,我们首先得到这个

2022-03-17 17:29:23 2165 3

原创 Windows核心编程_设置Windows开机自动登录

设置自动登录的方法在Windows中已经给出了非常方便的方法,当Windows内核进入登入界面时会检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon注册表中是否有两个属性条目:DefaultUserName、DefaultPassword,如果这两个属性条目存在则将DefaultUserName中的属性值作为用户名,DefaultPassword中的属性值作为密码,自动登录,若没有则进入开机的登入界面后什么..

2022-03-17 10:31:17 836

原创 Dediprog EM100Pro-G2 CmdLine教程

相关文章DediProg SPI NOR FLASH INSTALL前言本文章CMD LINE命令基于DediProg Emulator - 4.4.3参考文档EM100Pro帮助文档.pdf-WindowsServer文档类资源-CSDN下载概述DediProg Emulator提高了CMD LINE 命令行工具,可以在用户不打开GUI窗口时仍然可以实现GUI的相关功能,并且可以利用这个CMD LINE编写自动化脚本。环境配置DediProg提供的CMD LINE命

2022-03-11 12:58:37 994

原创 Dediprog EM100Pro-G2 安装与配置教程

GUI软件下载首先进入官方下载页面:Dediprog Download选择好设备型号与类型,然后点击搜索按钮:根据File Description的描述下载对应的软件,Software相关的是GUI软件下载Software之后双击管理员权限运行后一键安装软件运行截图:驱动下载在刚刚的下载页面中“File Description”找到Driver描述的软件并下载它,注意这个驱动仅支持win10下载之后解压到文件夹可以看到如下几个文件:inf为...

2022-03-11 11:41:17 2266 1

原创 C++Lambda表达式作为参数

Lambda表达式又称为小型函数,它的使用方法是:[捕获方式](参数类型)->返回类型{代码}通常我们不会写返回类型,因为编译器可以根据Return语句来推导返回类型,隐式为我们去加上去。相关可以参考:C/C++_Lambda表达式_17岁boy的博客-CSDN博客首先我们定义一个函数指针,参数是函数指针:typedef int (*pFunc)(int,int);int CallBack(pFunc Func){ return Func(5,5);}然后

2022-03-10 11:01:36 3593 1

EM100Pro帮助文档.pdf

EM100Pro帮助文档.pdf

2022-03-11

Sys Loader 驱动加载程序,用于调试驱动

Sys Loader 驱动加载程序,用于调试驱动

2022-02-28

Tflite_Model.rar

包含了两个Tflite模型:人与花

2021-12-09

linux_gcc7_default.tar.gz

gcc7.0可执行文件for linux

2021-12-09

zephyr_install.sh

zephyr的一键自动下载配置脚本

2021-08-05

opencv_dense_flow依赖文件.zip

opencv_dense_flow依赖文件.zip

2021-03-27

work_coolc.tar.gz

cool编译器

2021-01-24

git常用命令.docx

git常用命令

2021-01-01

startup.zip

stm32f10x核心板启动汇编文件

2020-12-23

shellcode.rar

shellcode ,mfc开发的,可以用于将汇编转成shellcode,可以用于测试服务器漏洞,以及软件补丁!

2019-07-12

CharString类库

用于处理字符/字符串,且跨平台能力强,对字符处理API较多,对多格式字符处理有良好的支持

2019-02-22

正规字符模板

正规字符模板 正规字符模板 正规字符模板 正规字符模板 正规字符模板

2018-03-29

空空如也

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

TA关注的人

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