- 博客(23)
- 资源 (5)
- 收藏
- 关注
原创 linux下vscode 使用sudo权限调试
1. 工程根目录创建一个名为gdb的可执行脚本。vim gdb,脚本内容如下,sudo chmod 777 gbd 使脚本可执行。sudo /usr/bin/gdb "$@"2. .vscode文件夹下的launch.json增加或改动"miDebuggerPath": "${workspaceRoot}/gdb"3. 更改/etc/sudoers,增加一行,user_name为自己账号名。user_name ALL=(ALL) NOPASSWD:/usr/bin/gdb
2021-07-24 08:00:23
8425
4
原创 cmake+mingw64+vscode环境搭建
一、windows下的搭建过程1. 搭建前PC的状态2. 工具安装3. 环境变量配置4. 创建一个测试文件main.cpp5. CMakeLists.txt编写6. 执行cmake出现的错误7. windows下的编译脚本8. vscode调试环境二、ubuntu下的搭建过程一、windows下的搭建过程1. 搭建前PC的状态 之前pc上安装过Visual Studio 2008/2013/2019,均未卸载,也许是搭建过程出现问题的原因,也...
2021-04-16 02:40:48
2438
原创 cmake参考
https://www.bookstack.cn/read/CMake-Cookbook/content-chapter1-1.1-chinese.md
2021-04-14 08:21:17
209
原创 linux-shell终端带颜色的log
为了调试的时候更加方便的区分哪些log是info,哪些是warning,哪些是error,于是将printf包装一下,使其能够带颜色输出,具体代码如下:#include <stdio.h>#define TEXT(x) #x#define PRINTF_INFO(x) \ printf(#x "[%s: %s() => line: %d] ", __FILE
2021-03-25 23:49:11
561
原创 lvgl-记录一个page widgets的坑
在应用page widgets时遇到了一个坑:在page上创建了container子对象,然后编写container子对象的event响应,在响应函数中需要获取其父对象的资源,然后发现它父对象变成了它爷爷了。一路debug终于找到问题,在page的LV_SIGNAL_CHILD_CHG 信号中,将子对象移到了可滚动的对象上(lv_obj_set_parent(tmp, ext->scrl);),就这样儿子变孙子了。虽然能正常使用,虽然很巧妙,就是感觉怪怪的。/*Automatically m
2021-01-16 13:50:11
1039
原创 菜鸟学linux-网上抄了一个开源的makfile
从网上抄了一个makfile用于自己的工程1. 我的工程目录如下2.修改后的makfile修改如下MAKEFLAGS := -j $(shell nproc)SRC_EXT := cOBJ_EXT := oCC := gccSRC_DIR := ./WORKING_DIR := ./buildBUILD_DIR := $(WORKING_DIR)/objBIN_DIR := $(WORKING_DIR)/binWA
2020-12-27 11:24:30
151
原创 记录ubuntu18.04下搭建nuttx RTOS的过程
官方参考链接:https://nuttx.apache.org/docs/latest/quickstart/install.html Getting started ==> Installing主要记录一下按照链接指导搭建中出现的问题。1. Kconfig安装执行make install报如下错误/bin/mkdir -p '/usr/local/lib'/bin/bash ./libtool --mode=install /usr/bin/install -c libs...
2020-12-23 09:49:52
1702
原创 菜鸟学linux-nohub后台挂起和终止
1.使用nohup让python脚本在后台运行,退出ssh的时候不会导致脚本停止nohup python3 MqInfoServer.py & > log.out其中&代表后台运行,此后终端能继续输入> log.out 表示把终端输出的打印到文件log.out中2.停止nohup启动的后台root@xxx:/home/python/PyClient# ps -ef | grep pythonroot 508 1 0 11:27 ? ...
2020-11-14 20:06:48
927
原创 菜鸟学linux ssh/ftp服务和工具登录
以下操作是在ubuntu16.04下操作在嵌入式linux开发时,一般都是在windows下编辑代码,在linux中编译代码。这个时候往往会使用远程登录工具登录linux,使用ftp工具传输文件。这里使用了MobaXterm_Portable_v10.4一个集成工具就可以了。1.ssh服务 要用远程工具登录,首先得linux开启了ssh服务。先查看一下是否安装了ssh服务端(dpkg -l | grep ssh ),如果没有则需要安装一下(sudo apt-get install opens..
2020-10-26 20:39:26
257
原创 菜鸟学linux arm-linux-gcc交叉编译的安装
1.下载arm-linux-gcc 百度一下下载即可,我这使用的是arm-linux-gcc4.4.3版本,这是我上传的连接
2020-10-26 20:19:50
368
原创 菜鸟学linux-我的第一个makefile
1. makefile用来干什么的? 这个玩意就是用来编译链接程序(更复杂的我就不知道了),类似于之前在windows下,在IDE上点击编译按钮。linux如果使用IDE也是能实现一键编译的,但是不知道为啥linux下编程的大牛们都不用,可能是大牛们喜欢黑洞洞的窗口,逼格比较高。2. makefile怎么替代windows中IDE的一键编译呢? linux黑洞洞的窗口,没法点啊,只能输入指令了。打开高逼格shell交互窗口,一直cd到你放程序makefile的根目录,然后输入make...
2020-10-24 12:01:22
278
原创 使用python的csv模块封装一个读写csv的类
直接上代码import csvclass MyCSV: def __init__(self): self.__file_name = '' self.__max_row = 0 self.__max_col = 0 self.__data_list = [] #插入空行 def __insert_...
2020-01-19 22:55:20
1151
原创 C++读写CSV文件
CSV文件是常用的excel文件格式之一,行与行之间使用换行符分隔,每行的各个列使用逗号分隔。根据CSV的这特点,利用STL的vector容器,搭建了一个CSV读写的类,目前实现的api如下,具体代码见附件。 bool Create(const char *pcsvfile);//创建一个csv文件 bool Open(const ch...
2020-01-13 17:00:26
2519
原创 C语言中函数实现可变参数原理的分析
C语言支持不定参数的函数,例如:打印函数sprintf(buf, %d%s%c, 1234, "sprintf", 'H'),该函数是将后面的参数按照“%d%s%c”指定的格式,转成相应ascii,并存到buf中。下面以sprintf函数为例,分析一下编译器是如何知道传入的参数有几个,它们的值都分别是多少?1.函数调用参数的压栈过程在发生函数调用时,编译器会给每一个形参生成一个变量,并将形...
2020-01-03 01:35:18
390
原创 使用ODBC进行数据库的操作
1.配置ODBC打开C:\Windows\SysWOW64\odbcad32.exe,如下图所示,选择“用户DSN”选项。点击添加,如下图所示。选择"MySQL ODBC 5.3 Unicode Driver"。点击完成,如下图所示。"Data Source Name"数据源名称,自己自定义一个名称,不和已有的重复即可,这里填test,注意:这个在写程序的时候需要用到。...
2019-11-30 21:17:36
3498
原创 记录keil5下使用RAM调试过程
1.设置程序存放的地址,IROM1,这里设置从0x2000 0000开始,大小为0x8000;2.设置程序RAM运行地址,IRAM1,由于前面的0x8000大小的RAM用于存放程序,所以这里得设置从0x2000 8000开始,大小为0x8000.3.设置中断向量表存放位置的宏,VECT_TAB_SRAM表存放在SRAM中。4.先去选Use Memory,在右边的R/O Base...
2019-08-01 23:46:29
3756
原创 vs2008创建动态库和使用动态库的方法
一、创建动态库打开vs2008,新建一个项目,选择win32->控制台应用程序->输入名称。点击确定点击下一步,选择DLL->勾选空项目,点击完成,至此工程创建完毕。向工程中添加.h文件,声明接口函数,声明函数前加上关键字__declspec(dllexport),以便被外部引用,为了防止重名可加入namespace命名空间,这里不加了。添加.cpp文...
2019-07-21 13:53:32
2029
原创 C实现输出log代码
编程环境:vs2008实现功能:调用系统时间,每秒打印一个log信息到TXT文件中,并printf输出到窗口,每个小时生成一个log文件。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>int main(){ ...
2019-07-13 08:06:29
1479
原创 iar开发啊环境下查看程序中实际使用的堆空间
单片机中的堆主要用于动态分配内存,malloc和new都放在堆空间。iar如何查看程序中已经使用的堆空间?参考https://www.cnblogs.com/harleygwak1206/p/5846587.html。参考该作者时,发现本人的工程中无法编译通过,本人步骤如下:1.增加头文件#include <iar_dlmalloc.h>,在主任务中调用__iar_dlmall...
2019-07-04 16:51:21
1611
原创 STM32开发从keil5转iar遇到的问题
之前一直使用keil来开发STM32,最近到了新公司要求用iar来开发,在转的时候遇到了一些问题,下面总结一下。 1.启动文件的问题。keil5的启动文件和iar的启动文件是不一样的,从keil移植过来的一定要注意这个问题。 2.core_cm3.h文件问题。由于iar自带了该文件,所以keil5中需要将core_cm3.h文件删除或改成其他名字,iar中的需要更改的地方如图1,在...
2019-06-11 00:09:53
2447
1
原创 STM32使用__attribute__((at(0x????????)))将变量定义到绝对地址
之前在学习51的时候,遇到使用byte xdata SendBuffer[5] _at_ 0x8000,表明把数组SendBuffer放到外部RAM的0x8300的位置。STM32是怎么定义的呢? 查了一下STM32使用uint32_t SendBuffer[5] __attribute__((at(0X20000000))),注意attribute的前后都是两个下划线"_...
2019-05-26 23:09:10
4960
原创 C语言实现队列
队列:先进先出的一种数据结构。代码在Visual 2008的C++下编译的,如下:typedef struct{ HRINT32U pAddr;}MyQueue;//队列数据类型#define MaxNum 10 //队列最大容量10MyQueue m_queue[MaxNum];//队列数组HRINT8U InputAddr = 0;//入队地址HRINT8U Ou...
2019-05-07 01:04:23
1542
原创 DS18B20调试总结
DS18B20是单总线的温度传感器,在使用MCU对其进行操作的时候,往往使用模拟单总线时序来进行读写,下面是驱动。1.复位时序图static HRINT8U DS18B20_Reset(void){ HRINT8U status; DS18B20_SetDataOut();//数据线配成输出 DS18B20_DATA_HIGH(); //拉高总线...
2019-03-09 16:11:40
6020
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人