前言 本文中,linux以可执行文件hellowolrd只作为例子。 Linux: /opt/hellowolrd/helloworld 在《windows_调起应用程序》一文,我们可以知道,windwos通过html调起应用程序,需要借助windows的注册表。而linux需要实现类似功能,需要借助xdg-open来实现应用程序的调起。 在Linux KDE桌面环境下,使用xdg命令工具可以
Debian_QT软件开发_QT程序打包 1 配置 linuxdeployqt 工具 1.1 下载linuxdeployqt 下载linuxdeployqt,笔者下载的是linuxdeployqt-continuous-x86_64.AppImage; sudo mkdir -p /home/s/develop/0_tools/packages cd /home/s/develop/0_too
Debian_QT软件开发_deb打包发布2 在《Debian_QT软件开发_deb打包发布》一文中,依赖的是dh-make去打包。本文将通过dpkg工具去实现打包。前者在麒麟系统安装器中,能正常的安装和卸载,后者笔者实测能安装,但卸载存在问题,只能通过dpkg去卸载。当然,前者打包比较繁琐,后者打包相对简单。 1 搭建打包环境 1.1 安装打包工具 debian发行版默认装有dpkg安装包工具,
Debian_QT软件开发_deb打包发布 本文是依赖《Debian_QT软件开发_QT程序打包》一文。 1 搭建打包环境 1.1 安装打包工具 sudo apt update sudo apt-get install dh-make build-essential devscripts debhelper 2 构建软件包 2.1 创建软件包目录 2.1.1 使用以下脚本build_dir.sh
本文将介绍ESP32 RAM以及IRAM和DRAM的区别,同时提供IRAM和DRAM内存不足的解决方案。 1 ESP32 存储 地址空间 对称地址映射 数据总线与指令总线分别有 4 GB (32-bit) 地址空间 1296 KB 片上存储器地址空间 19704 KB 片外存储器地址空间 512 KB 外设地址空间 部分片上存储器与片外存储器既能被数据总线也能被指令总线访问 328 KB D
有时候拿到一个库文件,可能会编译出错,遇到uses VFP register arguments 'xxx' does not的情况,表明我们使用的浮点参数和库文件所用的浮点参数不一致。 浮点运算理解 我们经常在IDE工具Build选项中可以看到硬件浮点和软件浮点。 硬件浮点(hard-float) 编译器将代码直接编译成硬件浮点协处理器(浮点运算单元FPU)能识别的指令,这些指令在执行的时候
1 编译选项 帮助选项: --help 打印此消息 --quiet 抑制显示信息输出 --list-decoders 显示所有可用的解码器 --list-encoders 显示所有可用的编码器 --list-hwaccels 显示所有可用的硬件加速器 --list-demuxers 显示所有可用的解复用器 --list-muxers 显示所有可用的复用器 --list-parsers 显示所有可用
1 LVGL移植 本文使用的环境如下: STM32H743 FreeRTOS st7789 lcd(320*240) 下载LVGL源码,本文使用Release v9.1.0; 将压缩包解压到工程目录,例如stm32h7xx_cmake_project/components/lvgl-9.1.0,如下所示: 在工程目录下创建LVGL,其包含porting、ui和app; 将l
FreeRTOS_任务运行状态及cpu占用率开启 1 新增宏定义 在FreeRTOSConfig.h中,增加以下宏定义: 任务运行状态和CPU占用率都需要定义configUSE_STATS_FORMATTING_FUNCTIONS,主要用于将信息想处格式化便于理解的内容。 1.1 任务运行状态 则需要定义以下宏: #define configUSE_TRACE_FACILITY 1 1.2
1 编译选项说明 **-ffunction-sections**: 这个选项告诉编译器将每个函数放在单独的一个 section(段)中,而不是将所有函数放在同一个代码段中。 好处是结合链接器选项 --gc-sections 使用时,可以去掉未被使用的函数,从而减小最终生成的可执行文件的大小。 **-fdata-sections**: 类似于 -ffunction-sections,但
目录 目录 1 环境搭建 1.1 vscode安装 1.2 GCC工具链安装 1.3 MinGW安装 1.4 Ninja安装 1.5 cmake安装 1.4 安装openOCD 1.5 安装STM32CubeMX 2 STM32CubeMX创建工程 3 工程添加cmake文件(可选,新版本STM32CubeMX已经支持CMake工程生成) 3.1 添加arm-none-eabi.cmak
1 Qt下载及安装 待补充 2 vscode下载及安装 待补充 3 cmake下载及安装 待补充 3.1 CMake安装 待补充 3.2 VSCode CMake插件安装 4 环境变量设置 4.1 Qt相关环境变量 添加环境变量 Qt Kit路径: D:/Qt/Qt5.12.2/5.12.2/mingw73_64 Qt工具路径:D:/Qt/Qt5.12.2/5.12.2/mingw73_64
FFmpeg 是一个功能强大的多媒体处理工具,它提供了许多参数用于控制音视频处理的各个方面。以下是一些常用参数的详细说明: -i input_file: 指定输入文件路径或 URL。 -f format: 指定输出格式。通常,FFmpeg 可以自动检测输出文件的格式,但有时可能需要显式指定输出格式。 -c[:stream_specifier] codec: 指定编解码器。可以使用 -c
默认库“MSVCRTD“,“LIBCMTD与其他库的使用冲突,请使用/NODEFAULTLIB:library 使用vs2022 msvc编写一个mDNS相关的例子,其需要链接dnssd库,工程最终输出DLL,会出现一下警告: 1>LINK : warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library 出现这个警告的原
在C语言中,#和##是两个重要的预处理器操作符,它们在宏定义中发挥着关键作用: 1 操作符(字符串化操作符): 操作符用于将宏参数转换为字符串常量。在宏定义中,当参数前面加上#时,预处理器会将参数转换为一个字符串。这对于生成调试信息、日志消息或者动态构建字符串是非常有用的。 例如: #define STR(x) #x printf("%s\n", STR(Hello
git历史中删除文件 1 使用 git filter-branch 备份当前的仓库:在执行这些操作之前,请确保备份整个仓库,以防操作失误。 定位并删除文件: git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch 路径/文件名" \ --prune-empty --tag-
1 等待队列 进程通过内核睡眠机制让出处理器,使得处理器可以处理其他进程。进程睡眠通常在资源得不到时,等待资源释放。 内核调度器管理要运行的任务列表,这被称为运行队列。要进入睡眠的进程将会从运行队列中移除。除非其被唤醒,否则进入睡眠的进程将永远不会被调度。进程一点进入等待状态,就可以让出处理器,一定要确保有条件或其他进程会唤醒它。内核通过提供一组函数和数据结构来简化睡眠机制的实现。 等待对垒厂用于
Linux是一个多用户多任务操作系统。在多处理器的环境下,存在真正的并行运算,因为其线程是可以同时进行的。而在单处理器环境中,并行是通过抢占实现的,即通过临时中断一个线程以执行里一个线程的方式实现。当存在并发访问的可能时,必须使用有效的机制来保证资源的同步和保护。另外对中断的处理也会打断正在运行的任务。Linux操作中还包含很多同步机制,包括信号量、自旋锁、原子操作、读写锁、RCU和seqlock
Linux内核_软件定时器 1 内核节拍 1.1 系统节拍 Linux内核通过CONFIG_HZ来配置系统节拍频率,打开文件 include/asm-generic/param.h,有如下内容: #ifndef __ASM_GENERIC_PARAM_H #define __ASM_GENERIC_PARAM_H #include <uapi/asm-generic/param.h>
1 docker镜像使用 1.1 列出镜像列表: sanqian@DESKTOP-LLA664L:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v1 82f7f599a64a 23 seconds ago 119MB <none>
1 CGO方式 (MinGW) 1.1 创建 example.cpp 和 example.h #include <iostream> extern "C" { __declspec(dllexport) void HelloWorld() { std::cout << "Hello from C++ DLL!"
1 容器使用 获取镜像: docker pull ubuntu; 启动容器:docker run -it ubuntu /bin/bash,其参数解释如下: -i: 交互式操作 -t: 终端 ubuntu:ubuntu镜像 /bin/bash:放在镜像后面的是命令,这里我们希望有个交互shell,因此用的是/bin/bash 要退出终端,直接在终端中输入exit。 查看所有容器:do
原项目工程采用ARMCC工具链,由于涉及GCC库的问题,改用GCC工具,然而出现了很多前多未有的问题存在,任务堆栈溢出、内存越界等。sscanf导致内存越界也是其中一个。 --wrap=symbol 对symbol进行封装,对symbol的任意定义引用将被解析为__wrap_symbol。__real_对symbol的任何未定义引用解析为symbol。这可用于为系统函数提供封装器。封装函数应该为_
使用mobaxterm能ssh登录远端linux,但用vscode插件remote ssh登录不了远端linux主机。 弹出提示框错误如下: Could not establish connection 解决办法如下(xxxx代表登录用户): 删除用户目录下的.ssh文件夹 C:/Users/xxxx/.ssh vscode重新配置ssh,再次登录输入密码即可。
本文章向大家介绍CRC-8校验原理及软件实现,主要包括CRC-8校验原理及软件实现使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 1 概述 CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接
最好使用sed命令进行修改,涉及到系统代号,代号必须一致否则,安装可能会报依赖的错误。 1 备份原始软件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2 修改source.list文件 清华大学镜像 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main r
由于项目硬件资源有限,norflash被当成主控扩展Flash供应用程序使用,而主控本身Flash只有128K,项目需要用存放定制音乐文件。无奈之下,笔者只能将norflash制作成可读文件系统,写操作均为boot中实现。 项目使用的norflash为W25QXX系列,容量最大为16M,特定如下: 页:256字节; 扇区:4K字节; 块:64K字节; 因此,其要作为文件系统,则只能使用FAT1
可重入和不可重入函数 不可重入函数 在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。 可重入函数 肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程
不想要字节对齐的时候,有没有办法取消字节对齐?答案是可以,就是在结构体声明当中,加上__attribute__ ((packed))关键字,它可以做到让我们的结构体,按照紧凑排列的方式,占用内存。 来段实际代码: #include <stdio.h> #include <iostream> using namespace std; struct test1 {
RTOS任务都需要分配堆栈,堆栈大小不合理,会造成内存越界或者资源的浪费。如果在没有把握堆栈大小,尽量将堆栈往大的方向设置,这样能保证任务堆栈上下文切换不会溢出。 任务堆栈 每个任务都有自己维护的一个堆栈。如果使用xTaskCreate()创建任务,则用任务堆栈的内存会从FreeRTOS堆内存中分配,并传递给xTaskCreate()API的参数确定。如果使用xTaskCreateStatic()
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号