
备忘录
幻影盖伊
不进则退
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RT-Thread art pi QSPI片外执行程序摸索
官方例程中有bootloader和led闪灯等小程序,我想基于官方的BootLoader,开发一个自己的闪灯小程序,把led闪灯程序放入QSPI中。原子的北极星跟artpi是同一款芯片,但是在那一打实验中,我没找到QSPI放执行程序的例子。或许是我看错了。本来以为只需要将下载算法和编译存储位置rom addr和向量addr设置对就可以的。但是我用cubomx生成的程序,片内flash可以正常闪灯,下载到片外QSPI flash中就不可以。但是artpi的官方例子可以。所以排除硬件问题,就一定是我的哪原创 2021-03-15 11:13:15 · 379 阅读 · 3 评论 -
模板模式
最近看李建忠老师的设计模式课程,做些笔记。每个人有自己的学习方法,我更喜欢把每个设计模式当作应用题来做。所谓的稳定,可以认为是已知项,所谓的变化,可以认为是未知部分。就像小学生的应用题,已知某些条件,求算未知数。先从模板模式开始。假如有这样一个项目,已知若干部分的主要功能和流程,求代码如何实现。几乎所有的项目都会这样出题,或者说,这道题满足所有的项目。不过没关系,还需要继续加条件。随着条件的增多,便会指引我们选择到一个合适的设计模式。继续分析,发现这些模块功能和流程有很多相似处。首先流程原创 2020-12-14 23:04:16 · 124 阅读 · 0 评论 -
Netbeans C++ 生成静态库 .a 动态库.so
工程右键,属性(properties) 建立(build)-> project defaults -> configuration Type 选择 static library(如果动态库,就选dynamic library)原创 2020-12-14 17:41:14 · 229 阅读 · 0 评论 -
nlohmann c++ json库
最近在做项目的时候遇到一个要打印出文件的需求,还要作为另外一个程序的输入。这明显是数据交换。要么我要跟接收方定好数据格式,然后打印文件,解析文件。也不是不行,只是写这些没有技术含量的代码实在是浪费生命。这时候就想到能不能用通用的工具来搞定?首先我想到的是json和xml。xml我是真不太喜欢,太丑了,辣眼睛。那就选json吧。然后找json库。刚开始我看很多人推荐rapid json。说是业界最快的库。我看了几个例子,感觉不好用,或者是我没看太懂吧。如果看懂了,估计也没啥难度。后来又翻了个nlo原创 2020-12-09 23:04:15 · 928 阅读 · 0 评论 -
关于并行计算的一些试用
最近尝试了几种并行计算的方法。1、openMP。这应该是gnu本身自带的一个插件,编译选项只需要加上 -fomp就可以了。使用时在for循环或者需要并行的语句前加上预处理选项。#pragma omp parallel等等,有若干种,整体思路就是把一些无关的函数并行计算。注意,一定是无关的,如果有先后关系的,可能计算结果就有问题了。这个用起来很简单,尤其是for循环等,加速很明显,可以加速到cpu核数倍。2、TBB。线程构建模块。这个是intel的库,可以让任务并行。不过需要修改代码,从task等扩展原创 2020-12-03 09:43:15 · 199 阅读 · 0 评论 -
Linux 下编译 Thread Building Blocks TBB
不得不说,什么库如果不自己编译一遍,完全不知道什么坑就拿TBB来说吧,博客上很多人都试过,也都成功过,我想照抄都不行。就连库上下载的代码都不一样。后来才发现,库都不是同一个。行吧,既然如此,认了吧!首先,下载库,我用的是这个:(千万不要去下载master,找个releases下吧,master上的未必能编译过,而且那个不是普通用户的)https://github.com/oneapi-src/oneTBB/releases/tag/v2020.3第二,解压编译解压后里面就是一堆目原创 2020-11-27 14:58:00 · 1001 阅读 · 0 评论 -
C++ Linux gcc 并行计算写法
编译选项修改 CMAKE_CXX_FLAGS 里加上 -fopenmp for循环前增加一句编译参数 #pragma omp parallel for 编译重跑,一般可以获得CPU核心数为倍数的加速。 只能加速for循环,而且是同一个for循环,多个for(1)的加速不了。...原创 2020-11-18 14:40:15 · 647 阅读 · 0 评论 -
Little VGL + code::blocks + 模拟器
安装vs code,去官网下载安装就好:https://code.visualstudio.com/ 在vs code里安装一个扩展组件 platformIO IDE(这个插件安装的很慢,慢慢等待吧……………………) 下载编译器mingw,去这个网址:https://www.msys2.org/ 首页就有很详细的教程,按步骤安装就好了 ...原创 2020-11-15 21:43:48 · 1124 阅读 · 0 评论 -
C++ [] = 运算符重载,终于静心试了一下,以前都是拷贝了修改…………不知所以
之前一直困惑或者畏惧的运算符,今天算是做了一个初步的了解。做了一个分段数组的数据类,里面包含若干段数据,但是序号不是连续的,为了方便快速使用[],查到数据值,最好的办法就是重载[]运算符。找了些按理,都没有解释清楚,写法的具体含义。class Data{public: std::vector<std::vector<unsigned>> data ; unsigned& operator[](unsigned idx)// ()里表示[]里...原创 2020-10-31 15:38:57 · 329 阅读 · 0 评论 -
C++ callback函数
C callback。这类callback很简单,只需要将函数指针作为参数传递给另外一个函数即可 C++ callback。如果是类成员函数作为callback函数,就会比较麻烦。static 成员函数方法。这种方法其实是跟1类似的。将成员函数转化为静态函数,唯一标识的函数指针地址。所以跟1类似。用法也跟1类似了,传递函数指针即可。 动态绑定方式。这种方法不要求成员函数为静态,但是必须把对象指针一起传递。这种写法上就很麻烦了。我是这么写的,先用模板创建类M,将想注册的函数的类A作为类型传递给M。同时,原创 2020-09-15 19:45:37 · 2674 阅读 · 0 评论 -
单实例 static 类成员变量
a.hclass A{ static int* x ;}a.cppint* A::x = 0 ;*注意:初始化不要放在头文件中,多次包含会报错初始化一定要有,否则会报undefined reference xxx。原创 2020-09-10 11:35:24 · 195 阅读 · 0 评论 -
编译systemc modeling library scml2
编译systemc 2.3.3,参考https://blog.csdn.net/guyspring/article/details/104482118 编译scml2库 与编译system2.3.3时类似,先在目录下建立一个build文件夹 进到build文件夹中,../configure --prefix=/xxx(安装的目标目录Y) --with-systemc=/xxx(已经编译好的systemc的位置) 如果需要指定c++版本的话,一样需要CXXFLAGS=-std=c++11等参数 m原创 2020-08-25 16:36:51 · 486 阅读 · 0 评论 -
Cmake 添加静态库和动态库
动态库:需要一个路径位置,需要库文件名。link_directories() 指定库位置target_link_libraries() 添加库文件名。注意:库文件名,会被自动添加前缀lib,后缀.so。最后就变成了这样lib库.so这样做,可以让动态连接写法简单些,但是规则要首先熟悉才行,要不就找不到库了。静态库:需要指定文件位置,必须是绝对路径。例如 /a/b/c/d/libxxx.alink_libraries(/a/b/c/libxx.a)...原创 2020-08-21 12:01:52 · 2748 阅读 · 4 评论