- 博客(43)
- 收藏
- 关注
原创 聊一聊Linux中断
中断,包括硬中断和软中断。整个操作系统就是一个中断驱动的死循环,操作系统原理如果用一行代码解释,下面这样再合适不过了。其他所有事情都是由操作系统提前注册的中断机制和其对应的中断处理函数完成,我们点击一下鼠标,敲击一下键盘,执行一个程序,都是用中断的方式来通知操作系统帮我们处理这些事件,当没有任何需要操作系统处理的事件时,它就乖乖停在死循环里不出来。
2024-08-20 14:42:46 281
原创 C语言代码优化方案(深度好文)
函数定义并不知道函数返回值是否被使用,假如返回值从来不会被用到,应该使用void来明确声明函数不返回任何值。一般来说,所有函数都应该有原型定义。原型定义可以传达给编译器更多的可能用于优化的信息。
2024-08-07 11:42:31 712
原创 一些面试题
全网唯一C语言经典算法,技术面试题汇总及答案嵌入式面试总结BSP开发|嵌入式|Linux驱动|笔试面试C语言常见面试题汇总嵌入式软件工程师经典面试题127道50个C/C++面试题
2024-08-06 16:49:08 95
原创 Linux虚拟机扩展磁盘空间
mount -o remount -rw /var/snap/firefox/common/host-hunspell:重新以读写权限来挂载另一个目录。可以通过 拖拽移动 或者直接输入数值的方式来对指定分区 /dev/sda3 进行扩充大小,之后点击 Resize 完成分配。在VM的设置中分区之后,还需要进入Linux虚拟机,将扩展的磁盘空间分配给对应的分区。mount -o remount -rw /: 重新以读写权限来挂载根目录 /sudo -i:切换到临时root账户。修改要增加的分区大小。
2024-07-15 10:06:03 603
原创 CUDA编程
2006年,NVIDIA公司发布了CUDA,CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题。近年来,GPU最成功的一个应用就是深度学习领域,基于GPU的并行计算已经成为训练深度学习模型的标配。目前,最新的CUDA版本为CUDA 9。GPU并不是一个独立运行的计算平台,而需要与CPU协同工作,可以看成是CPU的协处理器,因此当我们在说GPU并行计算时,其实是指的基于CPU+GPU的异构计算架构。
2024-07-03 16:03:41 741
原创 Linux htop命令使用
htop 是一个类似于 top 的命令,但具有更丰富的功能和更友好的界面。它可以实时显示系统中各个进程的资源占用情况,如 CPU 使用率、内存使用率等。以下是对 htop 命令的完全解析:表示 CPU 核心的编号(如果有多个核心的话)。
2024-06-22 16:26:26 800
原创 Linux下计算程序运行时间(C++)
在Linux环境下,可以使用多种工具和技术来测量程序的运行时间,例如time命令、perf工具、以及编程语言级别的性能分析库。对于需要更高精度时间测量的场景,可以使用 gettimeofday() 函数(需要包含头文件 <sys/time.h>),但请注意这属于POSIX标准而非C++标准库的一部分。以上方法中,使用 chrono 库是最推荐的方式,因为它提供了更现代、更灵活且跨平台的解决方案。在嵌入式开发中,计算程序运行时间是一个重要的实践,它涉及到性能分析、资源管理和系统优化等多个方面。
2024-06-08 14:57:25 571
原创 I2C协议详解
在I2C通信中,主设备控制时钟线SCL,而数据线SDA用于在主设备和从设备之间双向传输数据。主设备通过SDA发送数据给从设备,同时使用SCL产生时钟信号,从设备根据时钟信号读取SDA上的数据。反过来,从设备也可以在主设备的控制下,通过SDA发送数据给主设备。其中,SDA用于在设备之间传输数据,而SCL则提供时钟信号,控制数据传输的速度。在I2C总线上,每个设备都有一个唯一的地址,主设备通过这个地址来识别和访问从设备。这种工作方式的优点在于,它可以简化系统设计,减少设备间的连接线,提高系统的可靠性。
2024-05-29 15:52:50 1112
原创 ADC协议详解
模数转换器(ADC,Analog-to-Digital Converter)是一种将模拟信号转换为数字信号的电子设备。模拟信号通常表示物理测量的连续变化,如声音、温度、压力等,而数字信号则是以二进制数值表示的离散信号。ADC起源于20世纪的电子技术发展,用于将模拟的物理世界信息转换为数字计算机能够处理的信息。ADC有多种转换方式,常见的有直接转换(flash ADC)、逐次逼近(SAR ADC)、积分(integrating ADC)、ΔΣ(delta-sigma ADC)等。
2024-05-24 15:33:48 919
原创 UART协议详解
UART是(Universal Asynchronous Receiver/Transmitter),通用异步收发器的缩写。在19世纪60年代,为了解决计算机和电传打字机通信,Bell发明了 UART协议,将并行输入信号转换成串行输出信号。因为UART简单实用的特性,其已经成为一种使用非常广泛的通讯协议。我们日常接触到的串口,RS232,RS485等总线,内部使用的基本都是 UART协议。是一种广泛应用于嵌入式领域的串行、异步、全双工通信协议。
2024-05-23 11:30:41 1273
原创 GPIO协议详解
GPIO是通用输入/输出(General Purpose Input/Output)的缩写,它是电子系统中用于控制和监视外部设备的一种接口。在计算机硬件和微控制器中,GPIO通常指的是一组可以被软件编程为输入或输出的引脚。
2024-05-22 18:59:10 2485
原创 SPI协议详解
SPI(Serial Peripheral Interface,串行外设接口)是一种广泛使用的同步串行通信协议,用于微控制器和各种外围设备之间的数据传输。SPI通信是全双工的,即可以同时发送和接收数据,并且是高速的,没有速度限制,通常能达到甚至超过10Mbps。
2024-05-20 16:26:56 1008
原创 Windows环境下训练OpenCV分类器
直接在Powershell用pip安装,用国内源(我这里用的是阿里源)下载OpenCV,官方的太慢了。测试一下Ctrl+Z退出Python环境安装依赖库。
2024-05-17 17:00:52 366
原创 树莓派与OpenCV实现人脸识别
为了检测摄像头是否成功接入,先拔掉运行lsusb命令查看当前树莓派接入的设备,再接入摄像头,再运行lsusb,对比返回结果。我们使用luvcview这个工具来查看摄像头的实时视频,利用which luvcview这个命令来查看是否已安装这个工具,正常情况会返回“/usr/bin/luvcview”,若没有返回任何信息,则使用 sudo apt-get install luvcview 来安装工具。安装完成后使用luvcview -s 1080x720来启动该工具,其中1080x720代表采集的分辨率。
2024-05-17 16:45:08 605
原创 Linux下计算程序运行时间(C语言)
在Linux环境下,可以使用多种工具和技术来测量程序的运行时间,例如time命令、perf工具、以及编程语言级别的性能分析库。这些工具可以帮助开发者准确测量和分析程序的性能,从而进行有效的优化。在嵌入式开发中,计算程序运行时间是一个重要的实践,它涉及到性能分析、资源管理和系统优化等多个方面。接下来介绍C程序计算程序运行时间,单位是毫秒(ms)
2024-05-15 14:47:30 618
原创 树莓派安装OpenCV
我的树莓派选用的是32G内存卡,建议选择树莓派安装raspbian系统镜像,如果不会安装官方镜像百度网盘 https://pan.baidu.com/s/1ACxvVdpYYJ0OAg7nqVXJmA提取码:ms45。
2024-05-15 14:27:28 1147
原创 Raspbian系统镜像安装
提示1:烧录的过程如果存在提示:“验证写入失败,SD卡的内容与写入的内容不同。”的话,多尝试几次,我一般都是尝试三次之后写入成功!提示2:将烧录好的SD卡插入树莓派上,等待安装系统,如果树莓派上旁边的绿灯在闪的话,说明正在安装系统,大概十分钟左右。此时树莓派的镜像已经成功烧录在SD卡中。
2024-05-15 14:11:18 794 2
原创 记录一下安装ROS的过程
ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)(来自ROSwiki)
2024-05-06 14:10:48 971 1
原创 MQTT 简介与使用说明
MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。
2024-04-25 15:46:01 1166
原创 Jetson Orin(Ubuntu20.04)安装NoMachine
Nomachine是一款免费的远程桌面访问应用程序。支持用户从任何地方访问连接到Internet的计算机。该应用程序允许多个用户访问单个PC,且支持使用不同的操作系统。官网链接:NoMachine - Free Remote Desktop for Everybody软件下载地址:NoMachine - Download Free Remote Desktop Access需要的软件已经放在网盘中,需要自取。
2024-04-24 11:37:36 1591 1
原创 ROS 生成core dump
终端输入ulimit -c如果输出 0,说明没有开启 core dump 功能以上指令只对当前终端有效,想要永久生效需要修改 “/etc/security/limits.conf” 文件,重启后生效。
2024-04-11 14:08:14 233 1
原创 数据结构——队列
队列是一种特殊的线性表,既可以以数组形式存储也可以以链式结构的形式存储。以数组形式存储称为数组队列(特殊的线性表),以链式结构的形式存储称为链式队列(特殊的链表)。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列的原则。队尾:进行插入操作的一端。队头:进行删除操作的一端。队列是从队尾插入数据,队尾不能删除数据。从队头删除数据,队头不能插入数据。
2024-04-02 15:06:53 171 1
原创 数据结构——栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈只在栈顶进行操作,不能在栈底和栈顶之间的部位进行操作。
2024-04-02 14:24:51 282 1
原创 数据结构——线性表之双链表
双链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针双向链接次序实现的。双链表最大的优势就是双链表结构体的成员变量中包含上一个节点的地址,这样操作起来非常方便并且不需要遍历找上一节点的地址,基本没有效率损失,完美解决了单链表存在缺点。
2024-04-02 14:06:35 341 1
原创 数据结构——线性表之顺序表
它是由n个具有相同特性的数据元素组成的有限序列。顺序表是线性表的一种实现方式,它使用数组在内存中连续存储数据元素。顺序表在逻辑上是线性结构,物理上也可以是连续存储的。
2024-04-01 16:11:16 141
原创 GDB总结
user@ubuntu:~ $ gdbGNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1Copyright © 2016 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.htmlThis is free software: you are free to change and redistribute it.
2024-04-01 10:38:49 848
原创 CRC 原理
将每次的计算结果定位res,使用的多项式称为p,正常的多项式是POLY=10011,异常为0,则:每次迭代,根据res的首位决定p,若res的首位是1,则p=POLY;若res的首位是0,则p=0, 或者跳过此次迭代,上面的例子中就是碰到0后直接跳到后面的非零位。每次计算出结果后左移一位,即丢弃最高位。return crc;
2024-03-27 16:24:29 1022
原创 PetaLinux 工具命令【常用】
请注意,在执行 “petalinux-config -c u-boot” 前,确保已经初始化并创建了一个有效的 PetaLinux 项目,并且当前目录在正确的项目目录中。完成配置后,您可以保存并退出界面。PetaLinux 工具将会根据您的配置生成相应的 U-Boot 配置文件,并将其集成到项目中,以便后续的编译和使用。执行该命令时,PetaLinux 工具会打开一个图形界面或命令行界面,让您可以对 U-Boot 进行各种配置选项的设置。
2023-09-11 17:44:05 752
原创 添加组播ip
首先我的数据会在192.168.1.255的广播网段进行发送,现将数据改为239.168.20.1的组播网段。2、添加对ip添加组播网段。
2023-08-18 17:06:44 2314 1
原创 ASCII码表与char码表
Char(“13”) 回车 chr(13)&chr(10) 回车和换行的组合。Char(“27”) 脱离 Pause break。Char(“11”) tab(垂直制表符)Char(“9”) tab(水平制表符)Char(“32”) 空格 SPACE。Char(“26”) 结束 End。Char(“0”) 为0的字符。Char(“10”) 换行。Char(“12”) 换页。其实也可以一个循环就读出来。Char(“7”) 响铃。Char(“8”) 回格。
2023-08-02 09:57:34 428
原创 电子书下载网站
LoreFree 专业免费电子书下载网站https://lorefree.com/鸠摩搜书https://www.jiumodiary.com/i-Book.inhttps://book.tstrs.me/智奇搜书https://adzhp.cn/sites/1213.htm熊猫搜书https://ebook.huzerui.com/#偶书https://www.obook.cc/时宜搜书https://www.shiyisoushu.com/SoBookhttps://so
2023-07-25 11:30:53 16249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人