自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (17)
  • 收藏
  • 关注

原创 esp32 ESP-IDF vscode插件安装失败(host=‘files.pythonhosted.org‘, port=443): Read timed out.

5 重新安装后发现源已经换掉了。原因:pip安装源连接失败。处理方式:换成国内源。3 新建文件夹pip。

2024-03-15 15:34:28 162

原创 linux应用中获取命令行参数处理方式

**/errno = 0;break;case 'r':raw = 1;break;case 'v':return 0;case 'h':return 0;default:return 0;");if (!ts) {exit(1);int ret;if (raw)else。

2024-02-04 11:18:52 303

转载 Linux嵌入式kgdb调试环境搭建,gdb调试内核模块(转)

上篇博文介绍了应用程序调试工具 gdb + gdbserver, 那有没有调试内核的呢?没错, 就是本文介绍的kgdb, 当然早期有kdb, 后面kdb合并到kgdb了, 作为kgdb的前端, 后面我们会介绍, 而kgdb工具跟开发板通信支持kgdboc(串口)和kgdboe(网络),但新版内核只整合kgdboc, 网络被废弃了, 所以下文我们只介绍串口通信。

2024-01-31 17:29:59 379

原创 ubuntu解决问题:E: Unable to locate package manpages-posix-dev

例如我的版本代号为jammy,查看到确实包含了这个包,但是可以看到后缀有个multiverse的标志。想要在ubuntu里面安装manpages-posix-dev这个包,发现弹出错误。5 再次安装想要的库manpages-posix-dev,成功。2 去ubuntu包查询网址看看你的版本是否真的有这个包。上面的脚本显示版本代码未bionic。3 执行添加multiverse的库。1 查看当前ubuntu的版本。

2023-12-11 11:56:22 330

原创 MobaXterm使用VNC远程显示和控制ubuntu桌面

大体流程就是在ubuntu中安装vnc,设置密码,然后配置服务,然后启动服务。

2023-11-02 16:13:53 2584

原创 protobuf c语言库 Nanopb的使用方法

产生的simple.pb.h,simple.pb.c文件就是可以拷贝进工程的文件。再加上原本的库文件pb.h, pb_common.c/.h, pb_encode.c/.h, pb_decode.c/.h文件,就可以正常使用了。protobuf有个开源c库,叫做nanopb,可以实现对protobuf的加密和解密。项目的主页写的很清楚,使用方法为编译.proto文件,然后把各个文件包含进工程就可以了。例如,编译simple.proto。

2023-09-20 17:09:11 1002

原创 使用vscode+clangd远程精准浏览linux kernel源码(原创)

vscode是一个编辑器,可以调用各种插件来完成更多高级功能,clangd是一个代码解析工具,是clang的一个子项目。vscode中集成clangd以后,就可以精准的查看代码的调用情况,因为clangd对整个编译过程进行了跟踪(使用compile_commands.json文件实现),对于linux kernel这种复杂的项目非常适合,放弃source insight吧,那玩意儿没啥用,一个宏定义你能找出来几百个定义,鬼知道哪个是实际的定义来源。

2023-03-31 13:27:59 5186 5

原创 linux应用中的时间处理

【代码】linux应用中的时间处理。

2023-03-09 15:10:47 158

原创 TCP协议的滑动窗口和流量控制算法(转)

另外,Nagle 算法默认是打开的,如果对于一些需要小数据包交互的场景的程序,比如,telnet 或 ssh 这样的交互性比较强的程序,则需要关闭 Nagle 算法。那么,当发生窗口关闭时,接收方处理完数据后,会向发送方通告一个窗口非 0 的 ACK 报文,如果这个通告窗口的 ACK 报文在网络中丢失了,那麻烦就大了。接着,就重新开始慢启动,慢启动是会突然减少数据流的。这会导致发送方一直等待接收方的非 0 窗口通知,接收方也一直等待发送方的数据,如不采取措施,这种相互等待的过程,会造成了死锁的现象。

2022-12-19 14:15:35 541

原创 移植MQTT-C库(附源码)

移植文件里面主要包括了常见平台的socket接收和发送函数的封装,假如移植到自己的平台可能需要修改这个文件里面的代码,目前的移植是想要在visual studio里面移植,里面已经有了移植接口了。3 修改posix_sockets.h内容,虽然这个头文件是按照socket标准接口来调用的,但是win32的socket接口跟linux的接口有些不一样,例如close在win32里面是没有的,gai_strerror在win32里面没效果,win32需要调用WSAStartup函数。

2022-12-14 17:10:36 2857 6

原创 vscode远程调试Linux CUDA程序

2 使用remote-ssh登陆到远程的linux服务器,登陆以后看看安装的插件,需要在远程linux服务器也同时安装插件。确保提到的三个插件在远程端是可以用的。3 确保在远程linux服务器已经安装了cuda编译器,没有装的话点下面的链接,输入命令 nvcc -V查看安装情况。4 新建一个目录用来测试,例如~/my_cuda,用vscode打开此目录。1 本地安装插件:remote-ssh,Microsoft。点击CUDA调试按钮就可以运行了。把窗口切换到test.cu,

2022-09-13 17:04:52 2673 4

原创 linux 字符驱动完整框架(poll,async,waitqueue,nonblock等)

一个linux内核驱动的完整框架,包含了能遇到的大部分内容,例如timer, poll, async, waitqueue, nonblock等等,不过基本上没啥大用,就是用来熟悉基础的,正常的驱动不太会这么简单。后面还包含了makefile,直接在ubuntu上都可以编译运行。......

2022-08-31 15:36:01 324

转载 fft的通俗解释

An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。50Hz信号的幅度为:384/(N/2)=384/(256/2)=3;可用函数atan2(b,a)计算。幅度为192/(N/2)=192/(256/2)=1.5。一点n(n从1开始)表示的频率为:Fn=(n-1)*Fs/N;按照我们上面的分析,Fn=(n-1)*Fs/N,我们可以知道,每两个。

2022-08-22 11:26:42 662

原创 linux ubuntu下带GUI的网络和串口调试助手

mNetAssist这个工具在ubuntu下可以运行,是个带界面的tcp调试工具。更具体的使用参考:Ubuntu网络调试助手mNetAssist的安装以及解决无法打开运行的问题_GritYearner的博客-CSDN博客_ubuntu网络调试助手

2022-07-13 18:48:22 9229

原创 arm linux游戏手柄(joystick)驱动移植

参考了如下经验:Linux系统中使用Xbox360手柄 - 知*行 - 博客园 (cnblogs.com)使用BlueZ连接蓝牙手柄_Dokin丶的博客-CSDN博客_蓝牙手柄驱动编译内核后可以在/dev/input中生成js0设备od /dev/input/js0有数据

2022-07-08 14:41:18 1949

原创 linux 开机运行应用程序

在linux系统中设置开机启动应用

2022-07-07 16:03:05 620

原创 JLINK V10 V11固件修复

先去我的资源里面下载bootloader和app固件文件。步骤:1 PC上安装JLINK V4.9工具(貌似不能使用太高版本的工具,否则有问题)2 打开j-flash v4.9,新建个工程,按照如下操作:2.1 target interface - 选swd, speed可以选auto selection2.2 options - project setting - cpu - device 中选择NXP LPC4357_M42.3 t......

2021-10-26 15:31:52 12802 12

原创 二代身份证读写器原理及开发

身份证读写器的作用就是从身份证中读取身份信息(例如姓名、民族、身份证号等),然后显示或者传输给其他模块使用。功能框架如下:功能框图说明:1 业务模块。负责向安全模块发送命令,操作安全模块进行对应的操作,例如读固定信息等,可以是pc或者mcu。2 安全模块。负责通过业务接口(uart、usb)接收业务模块的命令,然后将业务命令解释成射频命令,通过射频接口(iic)发给射频模块,射频模块返回卡片加密数据给安全模块,安全模块解码后返回业务接口响应给业务模块。3 射频模块。负责直接跟二代证的射频

2021-07-08 09:17:37 2561

原创 GitLab 使用Tortoisegit询问“[email protected]‘s password“问题解决

现象如下:使用TortoiseGit去拉本地GitLab上建立的项目时,一直提示输入密码(如下图),这个密码又没有指定用户名,就算你输入你用户名的密码也是失败。但是很诡异的是,你使用git bash又是能正常操作的,证明跟服务器的通信时ok的,例如如下的bash命令是正常运行的(将网址换成自己的项目网址):ssh -vT [email protected]解决方法:https://stackoverflow.com/questions/8846972/tortoisegit-askin

2021-04-01 17:33:35 12696

原创 qt编译Qxlsx模块及安装

主要参考如下地址:https://www.icode9.com/content-4-715555.html注意的点:1 把下载的代码复制到根目录下,路径不要有什么空格啥的,否则你会发现perl老是执行失败

2021-03-12 16:25:15 1174

原创 printk在应用层的设置方式及读取内核打印信息的方法

如果 printk 中没有加调试级别,则使用默认的调试级别。注意,调试级别和格式化字符串之间没有逗号。当前控制台的各打印级别可以通过下面的命令来查看。# cat /proc/sys/kernel/printk4 4 1 7上面的信息表示控制台当前的打印级别为4(KERN_WARNING),凡是打印级别小于等于(数值上大于等于)该打印级别的信息都不会在控制台上显示;printk的默认打印级别是4,即printk中如果不指定打印级别,则使用4的打印级别;控制台能够设置的最高打印级别为1(KERN_ALER

2021-03-05 17:33:40 815

原创 wait_event_interruptible_locked的使用方法

wait_event_interruptible_locked() interfaceNew wait_event_interruptible{,_exclusive}_locked{,_irq} macros added.They work just like versions without _locked* suffix but require thewait queue's lock to be held. Also __wake_up_locked() is now exported.

2021-03-02 17:04:14 484

原创 linux gcc编译错误:undefined reference to `aio_error‘解决方法

#include <aio.h>void aiow_completion_handler(sigval_t sigval){ int ret; struct aiocb *req; req=(struct aiocb *)sigval.sival_ptr; if(aio_error(req) == 0) { ret=aio_return(req); .

2021-03-01 14:01:30 1148

原创 windows下tcp接口winsock使用demo

#define WIN32_LEAN_AND_MEAN#include <winsock2.h>#include <Ws2tcpip.h>#include <stdio.h>// Link with ws2_32.lib#pragma comment(lib, "Ws2_32.lib")#define DEFAULT_BUFLEN 512#define DEFAULT_PORT "27015"int __cdecl main() { /.

2020-12-04 16:00:21 184

原创 keil编译链接时出现runtime error R6002 -floating point support not loaded的问题解决

keil5很频繁的出现这个错误,以前keil4基本上没有出现过。每次出现这种情况,除了重装,没有什么好办法。因为都是用的网络上的key,其实我也一直在怀疑官网是不是做了什么手脚。公司这次需要断网使用keil5,防火墙里面禁止掉keil5的联网,貌似就没有出现这个问题了,已经使用了好几天了,八成就是这个问题了,以前有可能每天都要重装好几次。...

2020-09-09 16:13:31 8619 3

原创 cortex内核hardfault错误的定位方法实战

单片机一般是cortex-m3之类的内核,其实其他内核也是一个道理。hardfault错误一般是操作了不该操作的内存,或者执行了不该执行的动作,例如一个非法的函数指针,你非要去调用。调试这个错误的原理是:发生hardfault错误后就会进入相应的hardfault中断,进入中断前会在被中断的地址执行压栈动作,将当时的工作环境(就是系统的一些寄存器,r0,r1,r2,r3,lr,pc,r12)压进堆栈,将lr赋值非法数据,然后跳到hardfault中断执行中断服务程序。那么只需要将压栈后的lr读出来,

2020-07-11 16:44:17 1369

原创 BAT脚本重定向所有输出到某个文件的方法

最近特么的遇到个问题,需要根据命令返回的信息判断这个命令是否执行成功,思路就是把所有的信息重定向到一个文件里面,然后查找某个字符串,可是因为这个命令后面有一堆的信息,重定向如果加在命令后面就只能获取最近的一条信息,完鸡巴蛋。例如:fastboot.exe writeKeys会有如下的信息:Opening COM25...write KEYS...FAILED (remote: keys exi...

2020-07-07 10:00:29 16325 2

原创 JNI中FindClass查找类失败的问题

例如有如下的native代码用来寻找类,然后注册接口函数:static const char *classPathName = "android/device/PiccReaderNative/PiccReaderNative";static int registerNatives(JNIEnv* env){ jclass clazz; clazz = env->FindClass(classPathName); if (clazz == NULL) {

2020-06-28 14:08:12 1701

原创 CMake arm linux交叉编译CMakeLists.txt示例

set(tool_path /usr/local/arm/opt/EmbedSky/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf)set(CMAKE_C_COMPILER ${tool_path}/bin/arm-linux-gnueabihf-gcc)set(CMAKE_CXX_COMPILER ${tool_path}/bin/arm-linux-gnueabihf-g++)set(CMAKE_CROSSCOMPILING TRUE..

2020-06-11 18:00:14 2501

原创 QEMU搭建ARM linux开发环境

qemu可以用来模拟嵌入式的开发板,很多的嵌入式开发技巧完全可以抛开开发板来做实验,内核就更加方便了。主要参考了:https://www.jianshu.com/p/94833e841742但是完全按照这个来会有各种问题,一般情况下都是busybox和kernel的版本问题,我按照原来的博客的版本搞过一遍,各种报错,后来索性瞎几把整了。主要有如下几点不一样:1 busybox原来的...

2020-03-25 19:50:49 2514

原创 shell常用到的命令

tr,cut,find,grep,xargs,cat,ls,tee,

2020-03-16 17:57:04 109

原创 linux shell基本语法和调试技术

shell的语法跟c很多不一样,稍有不慎就各种问题,这里有个大神的调试技术总结,我也写了响应的代码验证。原址:https://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ 1 #! /bin/bash 2 :<<EOF 3 inf...

2020-03-13 16:27:26 142

原创 C++基本语法操作方式

#include "stdafx.h"#include <iostream>#include <string>#include <stdlib.h>using namespace std;//templatetemplate <typename T>T max(T a, T b){ if (a > b) ...

2020-03-10 15:42:27 262

转载 KEIL环境下如何让代码在 RAM中运行(转)

KEIL环境下如何让代码在 RAM中运行发布时间:2016-08-26来源:ST社区标签:KEILNucleoSTM32分享到:前言经常遇到有人使用KEIL时需要将部分或者全部程序代码放到RAM中运行的问题,现将其总结在本文中。通过STM32F411Nucleo的一个例子来介绍几种让程序在RAM中运行的方法。我们先从ToggleLED函数在Flash中执行亮灭...

2019-08-02 11:28:30 3466

原创 linux驱动程序设计21 Linux设备驱动的调试

本章导读“工欲善其事,必先利其器”,为了方便进行Linux设备驱动的开发和调试,建立良好的开发环境很重要,还要使用必要的工具软件以及掌握常用的调试技巧等。21.1节讲解了Linux下调试器GDB的基本用法和技巧。21.2节讲解了Linux内核的调试方法。21.3~21.10节对21.3节的概述展开了讲解,内容有:Linux内核调试用的printk()、BUG_ON()、WARN_ON(...

2018-08-09 16:50:21 1074

原创 linux驱动程序设计10 中断与时钟

本章主要讲解Linux设备驱动编程中的中断与定时器处理。由于中断服务程序的执行并不存在于进程上下文中,所以要求中断服务程序的时间要尽量短。因此,Linux在中断处理中引入了顶半部和底半部分离的机制。另外,内核对时钟的处理也采用中断方式,而内核软件定时器最终依赖于时钟中断。10.1节讲解中断和定时器的概念及处理流程。10.2节讲解Linux中断处理程序的架构,以及顶半部、底半部之间的关系。...

2018-08-01 19:57:55 594

转载 linux 下的gcc应用,编译和调试方法

原网址:https://blog.csdn.net/dawn_cx/article/details/6993623此文主要简单的介绍了gcc编译链接的过程的简单描述和调试方法的简单描述,写的很不错。gcc通常用来编译.c结尾的c文件,g++用来编译.cpp结尾的c++文件。因为gcc可以编译c++源文件,但不能完成c++使用的库的连接。GCC起步  在学习使用GCC之前,下面的这个例子能够帮助用户...

2018-07-09 15:57:36 2365 1

原创 linux驱动程序设计8 Linux设备驱动中的阻塞与非阻塞I/O

本章导读阻塞和非阻塞I/O是设备访问的两种不同模式,驱动程序可以灵活地支持这两种用户空间对设备的访问方式。8.1节讲述了阻塞和非阻塞I/O的区别,并讲解了实现阻塞I/O的等待队列机制,以及在globalfifo设备驱动中增加对阻塞I/O支持的方法,并进行了用户空间的验证。8.2节讲述了设备驱动轮询(Poll)操作的概念和编程方法,轮询可以帮助用户了解是否能对设备进行无阻塞访问。8.3节讲解在glo...

2018-07-09 15:27:19 337 2

原创 linux驱动程序设计7 Linux设备驱动中的并发控制

在Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,即使是经验丰富的驱动工程师也会常常设计出包含并发问题bug的驱动程序。Linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景。7.1节讲解了并发和竞态的概念及发生场合。7.2节则讲解了编译乱序、执行乱序的问题,以及内存屏障。7.3~7.8节分别讲解了中断屏蔽、原子操作、自旋锁、信号量和互斥体等...

2018-07-09 15:24:12 961

原创 FatFs移植笔记,附源码

嵌入式内部使用文件系统是必须的选项,但是如果不是arm芯片一般都没有完整的带文件系统的操作系统,例如Linux,对于裸机和ucos之类的系统有必要移植嵌入式操作系统,目前用的最多的是FatFs。网上大量的方法,我这里只是自己做一遍,不以善小而不为嘛。FatFs官网:http://elm-chan.org/fsw/ff/00index_e.html下载源码后发现真的没几个文件:其中diskio.c是...

2018-07-03 18:38:39 1647

Microsoft.HEVCVideoExtension-2.1.451.0-neutral

Microsoft.HEVCVideoExtension_2.1.451.0_neutral,用于win10播放HEVC格式的视频文件,windows商店中的安装不了,这个是下载后的文件,可以直接安装。

2024-02-18

cmake工程结构示例

cmake的工程结构示例,可以依据这个cmake工程构建自己的编译系统,熟悉常用的cmake命令

2023-06-27

MQTT-C在visual studio上的移植工程,具体移植过程请看我的博客文章

MQTT-C在visual studio上的移植工程,具体移植过程请看我的博客文章

2022-12-14

stm32 hal examples(stm32 hal完全示例)

包含了所有stm32f4使用hal的外设的示例

2022-02-08

J-LINK V10 V11固件.rar

用于重新更新jlink v10和v11的固件文件,亲测可用

2021-10-26

nxp nfc天线pcb匹配参数设计工具AntennaTool

这是nxp的nfc天线设计工具,可以通过指定天线的pcb参数测算出匹配的参数,然后计算出匹配电路的电阻电容等原件参数

2020-12-17

source insight 4.00.0114 lic.rar

source insight 4.00.0114的许可证文件生成工具,可以支持生成这个版本以后的许可证

2020-07-06

易兆微yc1021源码

这份代码是我自己根据易兆微yc1021的规格书实现的一份嵌入式驱动程序,用户只需要移植几个简单的函数就可以实现蓝牙3.0和4.0通信功能,这么简单的玩意儿天天搞真的烦,下载源码一次搞定多好对吧

2019-03-22

felica规格书(user manual)

这是最新版本的felica规格书,英文不好的不建议下载哦,因为是英文,哈哈哈

2018-12-26

FatFs移植工程vs2013

FatFs在vs2013中移植的代码,移植过程可以看我的微博中的相应的文章

2018-07-03

嵌入式二维码显示方案,附源码

嵌入式二维码的显示方案,代码中用控制台模拟了lcd的显示驱动,请移植的时候自行实现lcd显示驱动。另外移植的时候需要移植config.h中的几个宏定义,自己看下就知道了。

2018-04-11

unicode转gb2312码表

unicode转gb2312的码表,格式为小端格式,前2个字节是unicode值,随后2字节为对应gb2312值。使用方法请翻一下我的csdn博客

2018-04-02

source insight 4.0最新版加破解文件

source insight 4.0最新版加破解文件: 1 打开安装文件安装软件 2 完成后用破解的exe替换安装目录的文件 3 打开si4后提示选择许可证,选择破解的许可证

2017-10-31

振南znFAT--嵌入式FAT32文件系统设计与实现(上下册)

振南znFAT--嵌入式FAT32文件系统设计与实现(上下册)

2015-12-28

Borland C++ 5.02(3)

Borland C++ 5.02

2012-01-30

Borland C++ 5.02(2)

Borland C++ 5.02

2012-01-30

Borland C++ 5.02

Borland C++ 5.02

2012-01-30

Borland C 3.1

Borland C 3.1

2012-01-18

空空如也

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

TA关注的人

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