- 博客(54)
- 资源 (3)
- 收藏
- 关注
转载 Qt的简易日志库实现及封装
Qt的简易日志库实现及封装用于QT的一个简易日志功能模块封装。算不上强大和多高的性能,但是足够简单小巧。用于记录日志到文件够用了。单独的一个文件模块,使用时直接引入源码。想要其他功能,直接改代码即可。C++的下的日志库有很多,如log4cpp、Easylogging++,eplog,g3log,Qt下也有log4qt。还有简单小巧的QsLog,它是一个基于Qt的轻量级开源日志库。
2023-11-29 17:06:09 478
转载 嵌入式系统如何进行测试?
首先,质量是设计出来的,而不是测试出来的。我先说一些我的一些经验,之后想扩展到“嵌入式系统如何保证软件质量?”的问题。因为测试只是方法,质量才是目的。解决问题的思路有如下几个很多情况下不可能完全实现自动化测试或者成本太高,那么就通过 减少进行一次完整测试所用的时间和资源,提高人工测试的效率 将可自动测试的部分从整体中分离出来独立测试,剩下的人工测试 将整个系统分解为多个子系统进行独立的测试 将系统分解为设备相关和设备无关分开测试 设备无关的部分做自动化测试 设备相关的部分人
2022-05-18 16:26:52 4414
转载 git重要基本概念
git重要基本概念1.git的工作目录下面的所有文件又分为两种情况:已跟踪和未跟踪。已跟踪:就是你曾经提交过文件或直接从Git仓库克隆下来的那些文件,也就是说对一个新创建的文件进行第一次git的添加,这样文件就有了快照记录后,这文件就转变成已跟踪状态了。 未跟踪:就是新创建的文件没添加过一次,没有之前的快照记录。这两种文件状态和暂存区的关系如图:2.git内目录(这里指的是已跟踪的目录)有三种状态:提交状态:如果是 Git 目录中保存着的特定版本文件,也就是说将暂存区的文件提交到仓库中,就属
2022-02-09 16:33:01 711
转载 RT-thread分析自动初始化机制
首先全局搜索一个任意的自启动宏,便能找到在rtdef.h中由如下定义#define INIT_BOARD_EXPORT(fn) INIT_EXPORT(fn, "1")/* pre/device/component/env/app init routines will be called in init_thread *//* components pre-initialization (pure software initilization) */#define INIT
2021-12-14 11:20:06 394
原创 一个经典的单片机供电电路
电路的原理图如下图所示:在电路上电之前。开关"TEST"断开,单片机也没有通过VCC加电。此时,T1的基极通过R9(100k)接地,处于截止状态。T3的基级电阻R7所连接的Test,T1都处于截止状态,所以T3也处于截止状态。电源+9V被T3隔离,没有加载稳压芯片IC2上,IC2的输出VCC保持低电平。▲ 电路关闭状态按动按钮“TEST”启动电路,T3的基极通过R7,Test,T2的b-e接地,从而使得T3导通。此时+9V通过T3加到IC2稳压芯片。IC2输出VCC是加到单.
2021-11-19 16:40:11 2718
原创 CRC16
CRC选择当数据帧长度在8bits-128bits范围内时,推荐CRC-8(CRC-8能够减少额外比特的开销,且有更好的性能表现)当数据帧长度在128bits-2048bits范围内时,推荐CRC-12,CRC-16,CRC-CCITT(CRC-12额外比特的开销更小,且用于6bit字符流的传输;对于16bits的标准,更推荐美国标准CRC-16,性能略优于CRC-CCITT);当因数据帧长度更长、信道不稳定等情况而需要更高的性能时,CRC-32、CRC-32C将是更好的选择;CRC简介CR
2021-08-02 17:17:01 3996
转载 USB、UART、SPI等总线速率
USB总线 USB1.1:——-低速模式(low speed):1.5Mbps——-全速模式(full speed): 12MbpsUSB2.0:向下兼容。增加了高速模式,最大速率480Mbps。——-高速模式(high speed): 25~480MbpsUSB3.0:向下兼容。——-super speed :理论上最高达4.8Gbps,实际中,也就是high speed 的10倍左右。 UART RS232:传输速率一般不超过20Kbps,速率低,抗干扰能力差,RS-232..
2021-06-05 16:09:59 4288
转载 存储相关知识SRAM、DDR4、Quad SPI、Flash、eMMC闪存的介绍与区别
标准SPI标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, misoDual SPI它只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flash,全双工并不常用,因此扩展了mosi和miso的用法,让它们工作在半双工,用以加倍数据传输。也就是对于Dual SPI Flash,可以发送一个命令字节进入dual mode,这样mosi变成SIO0(serial io 0),mosi变成SIO1(serial io 1),这样一个时钟周
2021-06-05 15:02:59 5411
转载 如何在终端和 PowerShell 中将连续执行命令和一个命令自动重复执行多次
1、在命令行中,我们经常会使用cmd1 && cmd2这样的表达式衔接多条命令,表示如果cmd1执行成功则继续执行cmd2。但是同样的运算符(&&)在PowerShell中却不行。这其实是个简单的语法问题……通过查资料,原来PowerShell有自己的表达方式:-and和-or-and: 左侧命令执行成功(返回true)才继续执行右侧命令-or: 无论左侧命令是否(返回false)都会继续执行右侧命令示例:# Bashcd / && ls
2021-02-20 14:30:24 3013
转载 C/C++混合编程中“#ifdef __cplusplus与extern “C“ { #endif” 的理解
在工作中,C、C++密不可分,做我们嵌入式方面的,当然更多的是C,但,有时候却少不了C++,而且是C、C++混搭(混合编程)在一起的,比如,RTP视频传输,live555多媒体播放等都是C++下的,他需要调用JRTPLIB库,所以,很多时候,C++还是蛮不错的。。。。但,*.c与*.cpp文件混搭在一起,不是那么的简单。 #ifdef __cplusplus //c++编译环境中才会定义__cplusplus(plus就是"+"的意思),如果是c++程序,肯定会有__cplusplu...
2021-02-19 17:47:45 628
转载 基于ceedling的软件单元测试(windows)
依赖工具的安装安装rubyhttps://rubyinstaller.org/downloads/ 安装msys2 到网站http://www.msys2.org/下载适合自己主机的安装包,点击安装,在msys2安装完成后使用其内置的pacman包管理器,安装gcc, make,将C:\msys64\usr\bin添加到环境变量中。pacman -S gccpacman -S make安装gcovrpip install gcovr安装测试工具gem install c.
2021-02-06 17:13:19 643
原创 如何使用CMake生成makefile
1、安装了CMake工具2、编写CMakeLists.txt文件子目录:include、src、build(因为生成的文件很多,所以新建一个build文件夹)例子(放在build文件夹里):#1.cmake verson,指定cmake版本cmake_minimum_required(VERSION 3.2)# CMakeLists.txt使用C++11标准add_definitions(-std=c++11)#2.project name,指定项目的名称,一般和项目的文件夹名
2021-02-05 20:49:20 2425
转载 Unity C 语言单元测试的构建工具 Ceedling 使用详解
1. 安装 Ceedling展开目录安装 Ceedling 之前,首先需要下载安装Ruby(版本号大于 1.8.6) 和TDM-GCC,安装完成后,即可安装 Ceedling ,打开系统命令行,输入 gem install ceedling 等待直至出现 Successfully installed ceedling-0.28.2 Parsing documentation for ceedling-0.28.2 Done insta...
2021-02-05 15:16:28 1017
转载 Windows 下搭建 MSYS2+CMake+VSCode+gdb 编译调试环境
windows 下部署 vscode 的 c++ 调试环境给raspberrylive项目写的,可能有多余步骤安装msys2官网下载安装包中国大陆地区去清华镜像下载安装包和配置软件源:MSYS2 镜像使用帮助环境变量根据自己的安装路径修改MSYS_DIR=C:\msys64MINGW64_DIR=C:\msys64\mingw64Path添加: %MSYS_DIR%\usr\bin;%MINGW64_DIR%\binLogCOPY源改成国内的参考h..
2021-02-05 09:50:17 1922
转载 Ubuntu18的bug导致系统启动后黑屏
问题背景使用系统Ubuntu 18.04.1 LTS(可以通过sudo lsb_release -a命令查看当前使用的系统版本)Linux内核版本(使用uname -a或-l 或-r查看):问题描述Ubuntu系统很久没有关机,某次重启电脑时,可以看到Ubuntu启动项,并且系统正常启动,但是启动后屏幕始终黑屏,无法进入桌面问题定位内核问题?我在使用期间更新过3次内核版本...
2021-01-12 14:44:24 1088
转载 Ubuntu18.04安装arm-linux-gcc交叉编译工具(附arm-linux-gcc 5.4.0包)
在文件管理器里面按Ctrl+H即可显示(显示为.bashrc,前面小点儿表示隐藏文件)一、下载arm-linux-gcc 5.4.0包下载(百度云)链接:https://pan.baidu.com/s/1AeqzkboWkJDJjU9HxtXhrA提取码:uzup二、在/usr/local目录下新建arm文件夹,并且给予最高权限后进入新建的文件目录里面root@nandyco...
2021-01-12 14:44:05 620
转载 C语言之 const 和 volatile
在 C 语言中,我们经常会见到const和volatile这两个关键字,那么我们今天就来介绍下这两个关键字。先来介绍const关键字。提起const关键字,我们可能首先想到的是经过它修饰的变量便是常量了。其实我们这种想法是错误的,其实const修饰的变量是只读的,其本质还是变量。它修饰的局部变量是在栈上分配空间的,它修饰的全局变量在全局数据区分配空间(...
2021-01-12 14:43:14 1482
转载 基于cmake的交叉编译工具链
基于cmake的交叉编译工具链本文转载自:https://segmentfault.com/a/1190000019276315,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。一、基本概念1. 什么是交叉编译交叉编译是A机器上编译生成,运行在B机器上。两个机子有不同的机器指令。2. 什么是宿主机和目标机宿主机(host)是指使用交叉编译工具链执行编译的主机,一般配置较高,如PC主机;目标机(target)是指运行交叉编译出的可执行程序的机器,一般资源有限,如嵌入式开发
2021-01-12 14:41:42 3141
转载 C语言字节对齐问题详解
转载原文连接:https://www.cnblogs.com/clover-toeic/p/3853132.htmlC语言字节对齐问题详解 引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。...
2020-11-10 18:16:51 659
转载 Doxygen代码注释文档产生工具使用
1.Doxygen简介Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档或者说是API参考手册,从而减少程序员整理文档的时间。当然这里程序中的注释需要遵循一定的规则书写,才能让Doxygen识别和转化。目前Doxygen可处理的程序语言包含C/C++、Java、Objective-C、IDL等,可产生出来的文档格式有HTML、XML、LaTeX、RTF等,此外还可衍生...
2020-04-28 14:03:22 634
原创 使用Ceedling进行单元测试(嵌入式)C应用程序
使用Ceedling进行单元测试(嵌入式)C应用程序https://dmitryfrank.com/articles/unit_testing_embedded_c_applications就像许多其他嵌入式软件工程师一样,我过去常常将嵌入式应用程序交付生产,而没有对其进行适当的测试。仅进行了一些手动测试。我给人的印象是没有真正的方法可以对其进行测试:您知道,嵌入式应用程序在自定义硬件中...
2020-03-24 20:01:55 1829
转载 Linux 系统基础知识
本文包括:1、Linux 系统概述2、Linux 用户和用户组管理3、Linux 文件和目录管理4、Linux 文件系统管理5、Linux LVM 配置6、Linux 网络管理7、Linux 进程与任务管理8、Linux 系统监控9、Linux 管道与I/O重定向10、Linux 安装与管理软件1、Linux ...
2020-01-09 15:37:32 219
转载 嵌入式字 符设备驱动程序demo
一、主设备号和次设备号主设备号表示设备对应的驱动程序;次设备号由内核使用,用于正确确定设备文件所指的设备。内核用dev_t类型()来保存设备编号,dev_t是一个32位的数,12位表示主设备号,20为表示次设备号。在实际使用中,是通过中定义的宏来转换格式。(dev_t)-->主设备号、次设备号 MAJOR(dev_t dev) MINOR(dev_t dev) 主设备...
2020-01-09 14:57:50 283
转载 Makefile速查笔记
做 Linux C++,一个稳定的工程,Makefile 是很少改动的。但是如果需要修改的时候,Makefile 的语法和用法一时半会就回忆不出来(原谅我记忆力差……)。在此把自己以前的 Makefile 学习笔记记录一下吧,也作为分享。本文假设读者已经懂得了 Makefile,因此主要是作为备忘和速查用。全文中尖括号部分表示变量。本文地址:https://segmentfault.com/a...
2019-12-31 10:45:03 120
转载 嵌入式Linux开发环境搭建
1、前提准备硬件环境: 笔记本电脑 软件环境: 裸机安装Windows10_64位 VMWare版本:VMWare WorkStation 14Pro Ubuntu版本:Ubuntu16.04LTS总结:开发环境是主机安装windows10家庭版,然后使用vmware创建Ubuntu虚拟机,在windows10进行代码的编写开发,在Ubuntu上进行部署编译。具体安装创建方法...
2019-12-23 11:31:16 282
转载 Ubuntu 18.04安装SFTP服务
1.安装sftp服务sudo apt-get install openssh-server2.修改配置文件vim /etc/ssh/sshd_config##下面这行注释掉#Subsystem sftp /usr/libexec/openssh/sftp-server##后面加入Subsystem sftp internal-sftp找到PermitRootLogin no...
2019-12-20 11:29:29 932
转载 ubnuntu 18.04提示无libmpfr.so.4
问题描述:使用arm-linux-gcc 编译.c文件时提示错误error while loading shared libraries:libmpfr.so.4: cannot open shared object file: No such file or directory.通过ldd查看cc1的库调用情况root@ly-virtual-machine:/usr/local/li...
2019-12-14 15:42:05 1524
转载 linux下常用的开源库
linux下常用的开源库名字及简介,使用文档和教程可以自己百度 (自己整理,不定时完善)SQLiteSQLite是一款轻型的数据库。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。源码地址:http://www.sqlite.org/libnetlibnet是一个小型的接口函数库,主要用C语言写成,...
2019-12-10 15:23:20 454
转载 基于JavaMail的Java邮件发送
JavaMail API的简单介绍各个类的关系与操作流程:1、创建一个 Properties 对象,该类在 java.util 包中,以键-值对的形式设置邮件发送中需要用到的传输协议,如 SMTP 协议等;一般的 smtp 服务器都需要用户身份认证,所以这也要设置为 true ,以便向 smtp 服务器提交用户名、密码等信息;2、先使用 Ses...
2019-12-04 13:09:37 100
原创 C语言运算优先级记忆口诀
口诀:括号成员排第一; //括号运算符[]() 成员运算符. ->全体单目排第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&、逻辑非!、按位取反~、sizeof后有乘除余加减; //包括 /、*、%、+、-移位五,关系六; //移位运算符:<< &...
2019-12-04 13:08:54 507
原创 Ubuntu 18.04 LTS设置root账户
一、安装Ubuntu 18.04.1 LTS可能出现Ubuntu18的bug导致系统启动后黑屏的问题解决方法sudo apt-get remove --purge nvidia-* # 卸载nvidia相关组件sudo apt purge gdm gdm3 # 卸载gdm和gdm3sudo apt install gdm3 ubuntu-desktop # 重新安装gdm3sy...
2019-12-04 13:07:39 781
转载 深入理解C指针
深入理解C指针<一>指针和内存 C程序在编译后,会以三种形式使用内存: 静态、全局内存:静态变量和全局变量使用这部分内存,生存周期为整个程序运行时,全局变量所有函数都可以访问,但静态变量虽然生存周期为整个程序运行时,但作用域和局部变量是一样的,只限于定义它的函数内部,全局变量和静态变量会执行默认初始化。 自动内存,也就是所说的栈上,局部变量,在函数内部声明,并且只有函数...
2019-09-24 15:27:56 153
原创 Android UI 设计参考资源
Android UI 设计参考资源http://www.jcodecraeer.com/plus/list.php?tid=31&TotalResult=1328&PageNo=1
2017-04-06 15:35:30 500
转载 Android App的设计架构:MVC,MVP,MVVM与架构经验谈
原文出处:https://www.tianmaying.com/tutorial/AndroidMVC和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计:我的App需要应用这些设计架构吗?MVC,MVP等架构讲的是什么?区别是什么?本文就来带你分析一下这几个架构的特性,优缺点,以及App架构
2017-02-20 14:59:12 388
基于STM32的IAP(InApplicationProgramming)设计
2016-02-26
STM32固件库使用手册的中文翻译版
2016-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人