petalinux 离线编译 版本 petalinux 2018.31. 打开官网:https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html注册后推荐使用迅雷下载:2. 使用petalinux-config命令进入配置界面,进行如下选择...
C++11 memory_order https://zh.cppreference.com/w/cpp/atomic/memory_orderhttps://en.cppreference.com/w/cpp/atomic/memory_ordertypedef enum memory_order { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, memory_ord.
虚函数表和虚函数地址 虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可。同一个类的所有对象都使用同一个虚表。注:intptr_t是值而不是指针类型,在不同的平台保证与地址位数相同,用来存放地址。#include using std::cout;using std::endl;class Base {public:virtual void f() { cout << “Base::f” << endl; }virtual void g() { cout << “
Git 清理历史记录 git会在本地保存commit的历史记录,即使已不被追踪。错误操作后可以通过git reflog命令查看commit_id,并通过执行git reset --hard $commit_id恢复到指定id的状态。若希望清理历史记录可通过下面的命令:git reflog expire --expire=now --allgit gc --prune=now...
以太网接口介绍 MII接口介绍https://blog.csdn.net/silent123go/article/details/70147287MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和一个MAC和PHY之间的管理接口。“媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMI.
QT5.14.2 交叉编译 tslib 触摸屏支持tslib-1.22./configure --prefix=/opt/tslib --host=arm-linux CC=arm-linux-gnueabihf-gcc --enable-static修改交叉编译配置gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf## qmake configuration for building with arm-linux-gnueabi-g++#MAKEF..
volatile总结 以及C/C++、Java的异同 修饰单个值c/c++只保证可见性,内存栅栏可使用std::atomic_thread_fence,或者使用锁语义,不要滥用volatile。javajdk1.5后修正了内存模型,对volatile变量的操作不仅可以保证可见性,且带有内存屏障的副作用。所以,带volatile双重判断的单例写法在jdk1.5后都是对的。class Singleton{ private ...
macOS CLion LLDB方式 无法调试 'import sitecustomize' failed; use -v for traceback 坑死人网上解决方案都不行。当出现过:‘import sitecustomize’ failed; use -v for traceback‘说明python环境有问题。找原因吧。删除/usr/local/lib/下面python相关的所有文件夹。LLDB方式就可以用了。...
C++必须掌握的知识总结 对C++知识做了个总结,因为网络资源过于零碎。大部分教材和资料又都过于片面,这也是情理之中,毕竟C++单单语法设计就很厚一本书了,STL又是如此,对象模型,新标准等等,都是一本书的知识量。除非都看完,否则很难去把握和理解哪些是实际使用上实用的和必须掌握的。实际上我们只需要花20%的时间掌握其中最重要的80%即可。本文提到的都是作为一个合格的开发者,都应该熟知这些内容。多线程相关的暂不讨论。下...
C++常见技巧 使用std::string存储二进制数据std::string这个标准容器,不仅可以用来存储字符串。还可以用于存储二进制数据。从本质上讲它算不上字符串,它就是个char容器。在c++11之后,为了充分地性能优化,手动为一个数据类去写move构造等函数用于支持移动语意是必要的,尤其对于用于存储二进制数据的类型。举个栗子,我们希望使用Msg存储二进制消息,写一个支持移动语意的类(不用仔细看):...
git非常规操作 以下操作都不推荐使用!除非你清楚自己在做什么!!!撤销所有本地改动git add . && git reset --hard HEAD强制更新 保持和远端一致(以master分支为例)强制:git checkout -f master && git git reset --hard origin/master强制更改远程库(强制推送) 使远程更...
使用Docker+CMake为ARM交叉编译C/C++ 并不局限于ARM和C/C++,都可作为参考。交叉编译(arm)编译源码到arm可执行的二进制文件,可选方案有:golang、rust等语言可以方便的支持交叉编译clang它本身是可交叉编译的架构。指定–target指定目标平台即可,但是资料较少,编译过程的头文件和库、最终的链接、c runtime估计还是会用GNU的,应该麻烦不少。没有尝试过也不过多讨论。各种arm-lin...
Docker最佳实践 Docker最佳实践所谓最佳实践,也就是个人总结的一些习惯和约定,以更直观易读和更标准化。不规范/过于随意的使用,会造成大量的中间层镜像和临时容器,以及难以阅读的镜像和容器名字,这对项目维护有非常大的影响。Docker的安装和使用可参考这个手册:https://github.com/yeasy/docker_practice使用docker-compose而不是一长串的docker命令/s...
使用CMake交叉编译的方式 在project指令前设置以下属性即可:set(CMAKE_SYSTEM_NAME Linux)set(CMAKE_SYSTEM_PROCESSOR arm)set(TOOLCHAIN_DIR YOUR_TOOLCHAIN_PATH)set(CMAKE_C_COMPILER ${TOOL...
CMake 指定编译器为gcc/clang 使用gccexport CC=/usr/bin/gccexport CXX=/usr/bin/g++# cmake .. && make使用clangexport CC=/usr/bin/clang++export CXX=/usr/bin/clang++# cmake .. && make
使用PetaLinux为ZYNQ SoC FPGA构建Linux系统和驱动 使用PetaLinux为Zynq构建Linux系统Zynq SoC构建linux的uboot、kernel、rootfs、driver等相关配置和流程,主要实现axi-adc-dma驱动。源码见: GitHub RepositoryNotice:Vivado 和 Petalinux版本均为2019.1,必须保持一致。更具体地说,不同Vivado版本生成的hdf文件是不同的,所以不可以...
macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现) 使用Clion+OpenOCD调试STM32嵌入式开发工具都很原始,Keil也好、IAR也好、哪怕Eclipse,都算不上方便!是不是很羡慕Android开发者、QT开发者、前端开发者、后端开发者… …都有一个强大的IDE?推荐一个IDE:CLion深度结合了CMake,是C++目前最好的IDE了。本文介绍如何配置CLion调试STM32。其他用途也可作为参考。注:测试CLion2017...
C++11 实现初始化捕获(init capture)/移动捕获 C++11 实现初始化捕获(init capture)初始化捕获(init capture)初始化捕获,是C++14添加的特性,用于把对象移动到闭包。关于Lambda和闭包,见我的另一篇文章:Lambda和闭包(closure) 及其在C++中的实现原理使用场景和用法使用场景当有一个大对象,在某个的lambda中被使用,且后续不会再被使用了。为了避免拷贝开销,最好move到闭包有...
CMake遍历目录下文件 为每一个cpp文件生成target CMake遍历目录下文件 为每一个cpp文件生成targetcmake基础用法请自行搜索Talk is cheap,Show me the code.很多时候,我们在写很多小例子的时候(比如博客测试代码、作业练习)。我们常常要为每一个main.cpp写构建脚本,这显得有点low了。假设我们想为类似./src/*/*.cpp目录结构的每一个cpp文件生成target,可以这么做:# al...