自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (7)
  • 收藏
  • 关注

原创 STM32(Cortex-M) 双堆栈MSP/PSP科普

程序复位运行时,使用的一直是MSP,在任务开始运行时,osKernelStart->....->vPortStartFirstTask(portasm.s/freertos),将任务栈push到PSP,并切换到PSP。在发生异常或中断时,CPU自动进入Hanlder模式,CPU会自动设置CONTROL对应bit[1]为0,强制使用MSP。IAR中在Options-->Linker-->Config-->Edit中更改栈空间大小,也可以直接在icf文件中更改。MSP主堆栈指针,PSP进程堆栈指针。

2024-01-10 18:38:17 1186

原创 STM32 CubeMX产生的程序架构

使用STM32CubeMX产生启动相关代码,配置各种外设。在此架构中,STM32CubeMX产生的相关代码作为整个架构的HWD层。HWD层依赖HAL层,功能模块和业务逻辑也依赖HAL层。HWD层依赖HAL层,在STM32CubeMX产生的代码。这样,当后续使用STM32CubeMX再次产生代码时,原。处添加HAL层内的函数的依赖。在HAL层内,可以使用弱函数。处添加的代码不会发生变化。

2024-01-04 21:42:27 569

原创 win10下使用fastdds

使用visual studio 打开项目或解决方案,选择DDSHelloWorldExample.sln,点击菜单 生成->生成解决方案,编译通过。先根据上述网址安装软件,并将Openssl添加到环境变量中。

2023-12-23 16:10:18 1034

原创 linux 动态库so相关操作

b) objdump -tT libstdc++.so | grep 内容。c) readelf -s libstdc++.so | grep 内容。a) nm -d libstdc++.so | grep 内容。

2023-07-27 16:27:34 484

原创 #pragma pack不成对出现造成的异常

pragma pack非成对出现造成问题

2023-07-16 17:27:14 262

原创 epoll server

epoll简单实现server

2022-11-20 17:54:42 221 1

原创 backtrace输出任意线程栈信息

linux查看线程栈

2022-09-28 21:58:03 967

原创 常用通信接口学习

备忘各种接口供后续学习

2022-08-17 10:04:47 188

原创 记一次SPI驱动调查

当前TBOX方案主要采用MCU+OpenCPU架构,如下图所示:摘自《单片机与嵌入式系统应用》《MCU+OpenCPU架构的车载TBOX 开发方案》。MCU采集CAN数据,IO状态,传感器等数据发送给SOC。MCU和SOC可以通过低速UART口、高速UART(如1Mbps或者3Mbps)或者SPI通信。UART属于异步通信,双方在通信时不需要同步。SPI需要时钟信号,时钟信号由SOC给出。当SOC有数据需要发送时,直接产生时钟并发送数据;当MCU有数据发送时,需要通过另外一个IO管脚中断通知SO

2021-12-11 21:55:17 3892

原创 记一次signal 11调查

在挂机测试过程中,出现了signal 11错误。编译时加入-g,去掉strip后,使用gdb运行,挂机多次一直不再出现。可能是gdb运行与全速跑还是有些区别。既然直接gdb运行不能复现问题,只能在全速跑时产生core dump文件事后分析了。首先在程序中不能注册信号捕捉,否则当发生异常时,会进入注册的信号捕捉处理内,造成系统不产生core dump文件。编译时加入-g,strip尽量去掉。可以在程序中加入ulimit -c unlimited。设置转存路径,当出现异常时保存core

2021-10-03 22:27:21 1828

原创 pthread_cancel造成死锁

一个线程在获取到锁后,被取消了,造成了死锁。强制取消后会造成原线程中资源未释放。https://my.oschina.net/u/178323/blog/32535使用pthread_setcancelstate、pthread_setcanceltype、pthread_testcancel。调用pthread_join等待线程结束另:gettid()获取的线程ID值和ps -T查看到的线程值一样。...

2021-07-03 08:24:51 287

原创 openssl命令行和API

当安装openssl轻量版时(OpenSSL v1.1.1gLight),可以使用openssl命令进行算法的验证。若需要使用API进行算法验证,则需要安装完整版,这两个的下载路径为:http://slproweb.com/products/Win32OpenSSL.html。AES-256 CBC模式 加盐,使用pass加密文件命令行为:加密为:openssl enc -aes-256-cbc -e -md md5 -in input.txt -out encrypted.txt -pass.

2020-06-02 20:32:01 650

原创 dev c++ openssl配置

1. dev c++安装2. openssl安装http://slproweb.com/products/Win32OpenSSL.html选择下载Win64OpenSSL-1_1_1g.exe安装注意:Copy OpenSSL DLLs to: 选择 The OpenSSL binaries(/bin) directory安装完成后,MingW-W64下载路径:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/...

2020-05-29 22:29:23 4490 4

原创 openssl 学习备忘

openssl 命令行中-K和-k说明:https://bbs.csdn.net/topics/390722418其中:小写-k并不是指定密码,而是用于生成key和iv的一串序列。大写-K,就是用于指定实际密码,若是指定了-K,那么一定要指定-iv,否则就要靠自动生成的,也就是-k...

2020-05-21 09:59:14 1097

原创 ubuntu 源码安装 sqlite3

sqlite3 安装访问网址https://www.sqlite.org/download.html,下载源码sqlite-autoconf-3310100.tar.gz解压 tar xvzfsqlite-autoconf-3310100.tar.gz进入目录:sqlite-autoconf-3310100./configurationmakesudo make inst...

2020-04-12 11:51:40 789

原创 linux system 引发若干问题

linux system 引发若干问题现象在进程A的线程s中使用system执行了进程B(后台持续运行),在进程A退出时向守护进程D发送了socket断开信息,但是进程D没有收到消息。在shell中手动重新运行进程A时,进程A中打开设备失败。调查步骤1-尝试作为linux入门级选手,尝试在进程A退出后,在shell端kill掉进程B,发现守护进程D即刻收到socket消息。再次手动...

2020-04-11 14:51:14 643

原创 QT TCP编程之多客户端区分

使用网址https://blog.csdn.net/u014252478/article/details/80377103在进行QT TCP网络编程时,在服务器端当收到客户端发来的数据时,无法知道是哪一个客户端发来的,网址中采用list中轮询进行查找,代码如下:// 客户端数据可读信号,对应的读数据槽函数void MyTcpServer::ReadData(){ // 由于rea...

2020-04-06 18:33:25 1434

原创 知识学习及备忘

1. 根据进程名获取ID,同时可以判断该进程是否在运行。若是预先知道进程id,可以根据进程id知道该进程是否运行。https://blog.csdn.net/chenliang0224/article/details/842864422. linux system使用注意,封装后使用https://blog.csdn.net/frecon/article/details/7978353...

2019-11-09 11:55:08 688 1

原创 fflush、sync、fsync、fdatasync、fclose

https://blog.csdn.net/FPGATOM/article/details/84703491https://blog.csdn.net/qq_41453285/article/details/88941906https://stackoverflow.com/questions/2340610/difference-between-fflush-and-fsyncsync:将所有...

2019-11-02 12:44:24 2693

原创 #define MAX and MIN

https://stackoverflow.com/questions/5323733/why-is-the-max-macro-defined-like-this-in-chttps://stackoverflow.com/questions/3437404/min-and-max-in-c简单的例如:#define max(a,b) ((a) > (b) ? a : b)...

2019-08-07 22:47:53 404

原创 git使用备忘

git 修改最后一次提交(push后修改或者commit后) 1. 未push,直接使用git commit --amend 可以修改 2. 已push,使用git commit --amend后,使用 git push origin HEAD:refs/for/分支名或master --no-thin git 文件模式 使用Git Extensions或者TortoiseGit会出...

2019-08-06 10:29:21 250

原创 switch case类型

switch case 类型应为有符号的整形当用有符号的char型,short int型作为switch的输入时,若char型数据最高位为1,如0x80,short int型最高位为1,如0x8000那么在下语句中:case将不会匹配上。case 0x80:......case 0x8000:.....原因是因为switch会先将变量扩展成有符号整形再去匹配。...

2019-08-06 10:14:24 890

转载 _stdcall和_cdecl

关于_stdcall和_cdecl参考网址:https://blog.csdn.net/myjisgreat/article/details/46477769https://bbs.csdn.net/topics/390435293?page=1#post-394308806https://docs.microsoft.com/en-us/cpp/cpp/argument-passing-and...

2019-08-05 18:20:51 276

原创 make输出重定向

make输出重定向 依据网址:https://blog.csdn.net/u011852872/article/details/79079833https://blog.csdn.net/Stephen_yu/article/details/82491226https://blog.csdn.net/solid_sdu/article/details/79788729https://blog...

2019-08-05 18:14:55 1122

原创 C#连接MySql和Sql数据库

在学习了C#与数据库访问技术总结(七)综合示例后,尝试用连接MySql和使用ODBC。使用到的工具:navicat.exe--->用来创建MySql数据库Microsoft SQL Server Management Studio--->用来创建Sql数据库1>   连接MySql with net mode如果连接的是Mysql数据库,需要引用MySql.

2017-05-13 21:56:50 9328

原创 FAT32的几个问题

参考网址:https://www.zhihu.com/question/52791560https://support.microsoft.com/en-us/help/314463/limitations-of-the-fat32-file-system-in-windows-xpFAT32最大支持多大的分区?在网址http://blog.csdn.net/zisehuo

2017-03-22 15:02:02 662

原创 堆排序

堆排序堆排序思想说起来还不太好组织语言。它的做法就是,首先将待排序序列组织成一个大(小)顶堆,然后逐次将首元素和最后一个元素交换,序列长度减一后再次调整序列成一个大顶堆。自此就成了一个升(降)序列。c代码如下:(参考《大话数据结构》)void HeapAdjust (int * const piSrc, const int startIndex, const int len){

2017-03-04 19:17:32 359

原创 归并排序

归并排序归并排序是将一个序列逐次对半分组直到数组元素为1,然后逐次两两合并分组直至成一个序列。在逐次两两合并分组时需要一个临时的buffer。参考百度百科:http://baike.baidu.com/link?url=OD11jIUEKqkbhY9w0loP9FFlLipaxfq6WkBZo1_O9MMuGMcn3h3rqWoZ0l7hMDKJOQrDlVPf9ELLsLijxSHs

2017-02-27 19:48:47 250

原创 快速排序

快速排序快速排序的思想就是首先选择一个基数,将大于基数的所有值放到右侧,将小于基数的所有值放到左侧。视频http://www.tudou.com/listplay/Z-bWgybEtig/pqOqOznbYkY.html中讲解了快速排序的递归实现,看起来非常的简单。c代码如下:void QuickSort_Recursion (int * const pia, const int

2017-02-26 17:30:36 430

原创 希尔排序

希尔排序插入排序是从第i-1个元素逐次递减到0和第i个元素比较,若当前元素大(小)于第i个元素,当前元素向后移位,否则,退出循环,并且当前元素等于第i个元素。希尔排序是插入排序的升级,是从第i-gap个元素逐次以gap递减到0,和第i个元素比较,若当前元素大(小)于第i个元素,当前元素向后移位,否则,退出循环,并且当前元素等于第i个元素。由于在排序过程中,采用跳跃式比较和交

2017-02-24 13:17:35 436

原创 直接插入排序

直接插入排序直接插入排序是逐次从第i个元素向前比较,若当前元素大(小)于第i个元素,当前元素向后移位,否则,退出循环,并且当前元素等于第i个元素。可参考百度百科直接插入排序:http://baike.baidu.com/item/%E7%9B%B4%E6%8E%A5%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F?sefr=crc代码如下:

2017-02-23 16:34:35 380

原创 选择排序

选择排序选择排序思想是逐次从第i个元素向后查找最小(大)的元素下标j,查找结束后,若i和j不等,则交换。因此它的交换次数比冒泡的要小很多。但,i和j交换的数据却会打乱原来的序列的顺序,因此表现出不稳定。可参考百度百科选择排序:http://baike.baidu.com/item/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F?sefr=crc代码

2017-02-23 15:56:59 272

原创 冒泡排序

冒泡排序冒泡排序是思想是两两比较相邻元素,将较小(大)的数向一个方向交换,直到没有交换为止。可以认为序列是一个纵序列,从底部最后一个元素开始逐次向上两两比较相邻的,小(大)的数(泡)被逐次交换到顶部,完成排序。c代码如下:假设有n个元素,元素下表0~n-1。void BubbleSort (int * const pia, const int

2017-02-23 15:22:38 327

原创 应用中的算法使用

应用中的算法使用1> 求整型中位1的个数 (来自网络)char Bit1Count (unsigned int num){ char c=0 while (num) { num &= (num-1); c ++; } return c;}2> 用二分查找左闭右闭区间。(参考网络)int FindLef

2015-08-15 15:12:37 442

原创 Top k问题的一个应用

需求:实时统计一个函数运行N多次所花时间最大的k个值。方法:利用堆(小顶堆)排序方法进行。比如说,要统计的最大值个数为10个。由于函数运行时间是实时统计出来的,新统计的时间跟小顶堆的最小值比较,若大于或等于小顶堆的最小值,则更新,并调整堆使之成为新的小顶堆。开始时不用建立堆,可以认为数组中的10个全为0的值也是一种小顶堆结构。这里用随机数来代表某个函数的运行时间。代码如下:#include

2015-08-03 20:13:29 370

原创 FAT16 FAT32 文件系统

AT,英文为File Allocation Table,文档分配表。先要记住几个概念:扇区:一般扇区为512个字节。簇:由若干个扇区组成。而FAT文件系统(其他文件系统应该相似)就是专门管理这些簇的。一个文件可能占据一个或者多个簇,按正确的顺序去读取这些簇,就可以获取这个文件的内容了。FAT16, FAT32的区别FAT16是用16位即2个字节来

2015-06-27 10:50:35 7373

原创 uCos II 就绪列表

参考http://blog.sina.com.cn/s/blog_762cf5f80101ce8w.html

2015-05-30 21:14:43 449

原创 Keil转到Eclipse遇到的几个问题

ARM下Keil转到Eclipse后的几个问题问题1,关于中断;问题2,关于程序入口参数;问题3,文件后缀;问题4,sbrkr.c:(.text+0x18): undefined reference to ‘_sbrk’;问题5调试执行mrc p15,0,r0,c1,c0,0,跑飞;

2015-05-10 12:58:07 5958

原创 2440(ARM9)中Ucos移植相关

2440(ARM9)中Ucos移植相关Keil 中irq作用如果在中断函数上使用__irq,编译器会自动将一些寄存器压栈,等该中断函数返回时自动出栈。关于keil中__irq说明参考网址:http://www.keil.com/support/man/docs/armccref/armccref_babicjbc.htm。针对手动保存寄存器的函数,不用使用__irq。参考:http:/

2014-11-02 11:10:35 2626

原创 关于51的一些理解

8051单片机,堆栈指针SP默认值是0x07,它总是先加1再存数据。0x00-0x07留作R0-R7用。因此SP第一个可以存执的地址是0x08 系统堆栈和用户堆栈? 系统堆栈在片内,所有任务公用。任务堆栈设置在片外,每个任务都有自己的任务堆栈。仿真堆栈也设置在片外,每个任务都有自己的仿真堆栈。SP指向片内RAM,也就是SP所指向的栈空间为系统堆栈,是所有任务所公用的堆栈。任

2014-10-12 11:11:04 853

S3C2440片内SRAM初始化片外SDRAM

在Keil为S3C2440A自动生成的代码上简单修改而来 功能:在片内SRAM中初始化片外SDRAM。bin文件目前只能在NandFlash模式下运行。若要在NorFlash模式下,需修改scatter文件。在keil下不知道怎么编译位置无关的代码。

2013-12-24

LabvIEW 8.5 信号发生器

运行环境: LabVIEW版本:8.5 Windows xp Pack 3

2010-06-09

主流ARM嵌入式系统设计技术与实例精粹 配套源码

主流ARM嵌入式系统设计技术与实例精粹 配套源码

2009-09-10

小波分析理论与MATALB R2007 实现

这是《小波分析理论与MATALB R2007 实现》书的源代码,希望对你有所帮助!

2009-09-10

成功励志系列合集(20本)

成功励志系列合集,总共20本,肯定有你喜欢的!!!!

2009-08-29

8051单片机数据传输接口扩展技术与应用实例

8051单片机数据传输接口扩展技术与应用实例

2009-08-29

数字信号处理C语言程序集

《数字信号处理C语言程序集》 PDF格式

2009-07-31

离散傅里叶变换(DFT) C代码

是《数字信号处理C语言程序集》的DFT的C语言源代码,已测试!

2009-07-31

空空如也

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

TA关注的人

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