自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用Docker+CMake为ARM交叉编译C/C++

并不局限于ARM和C/C++,都可作为参考。交叉编译(arm)编译源码到arm可执行的二进制文件,可选方案有:golang、rust等语言可以方便的支持交叉编译clang它本身是可交叉编译的架构。指定–target指定目标平台即可,但是资料较少,编译过程的头文件和库、最终的链接、c runtime估计还是会用GNU的,应该麻烦不少。没有尝试过也不过多讨论。各种arm-lin...

2019-10-15 19:10:50 5123 2

原创 macOS/Ubuntu使用CLion和CubeMX开发调试STM32(完美实现)

使用Clion+OpenOCD调试STM32嵌入式开发工具都很原始,Keil也好、IAR也好、哪怕Eclipse,都算不上方便!是不是很羡慕Android开发者、QT开发者、前端开发者、后端开发者… …都有一个强大的IDE?推荐一个IDE:CLion深度结合了CMake,是C++目前最好的IDE了。本文介绍如何配置CLion调试STM32。其他用途也可作为参考。注:测试CLion2017...

2019-09-27 16:50:57 4189 5

原创 Lambda和闭包(closure) 及其在C++中的实现原理

Lambda和闭包(closure) 及其在C++中的实现原理

2019-09-26 23:48:47 7931 1

原创 制作Ubuntu根文件系统

制作Ubuntu根文件系统:gunzip ubuntu-base-22.04.5-base-arm64.tar.gzmkdir ubuntutar xvpf ubuntu-base-22.04.5-base-arm64.tar -C ubuntucd /userdisk/ubuntucp /etc/resolv.conf ./etc/resolv.confmount --bind /dev ./devmount --bind /dev/pts ./dev/ptsmount --bind /pr

2024-10-28 18:12:52 1181

原创 关于std::memory_order_consume

搜了一下这里有个解释,但是它似乎没有说清楚:https://stackoverflow.com/questions/38280633/c11-the-difference-between-memory-order-relaxed-and-memory-order-consume。其实也比较简单,先看一下memory_order_release的规则(中英文对照方便理解):https://en.cppreference.com/w/cpp/atomic/memory_order。

2024-07-03 15:14:19 313

原创 skia编译参数

【代码】skia编译参数。

2024-04-08 20:05:18 340

原创 CMake实现target_link_libraries_with_definitions

target_link_libraries为target指定链接的库,有时候想要携带库本身的编译参数。保证看到的头文件是一致的。

2024-03-19 14:12:52 208

原创 union需要类型是trivial的

【代码】union需要类型是trivial的。

2024-03-14 10:29:35 417

原创 Skia最新版CMake编译

即可得到文章开头的截图。2024年03月08日。

2024-03-08 14:50:31 634 1

原创 快速排序为什么只能从右边开始

网上很多文章,只是说了快排的具体实现。原理未能说得明白,还有一些值得思考的问题。

2024-03-07 10:53:49 468

原创 uint8_t和uint32_t

在PC平台,cpu支持的指令集繁杂,但是一般而言32位的运算不会比8位的效率低。

2024-03-05 14:26:40 610

原创 std::shared_from_this注意事项:exception bad_weak_ptr

的实现,会根据类型的可见性,利用模板特化了不同的实现。shared_ptr的构造过程,需要调用。可见性不符合时,无法正确创建出。1.不可以在构造函数中调用。2.一定要public继承。

2024-03-04 18:32:35 633

原创 Dioxus、Freya学习——事件分发

来自winit的WindowEvent::MouseInput发送到app。

2024-02-27 20:15:44 488

原创 Dioxus、Freya学习——介绍

Dioxus 是一款用于构建跨平台用户界面的框架,API和设计都是React风格的。Freya是基于Dioxus,主要是在渲染层使用Skia而不是依赖Web技术。主要的区别是:Freya可以独立运行在端上,不需要依赖系统Webview之类。

2024-02-27 12:11:56 910

原创 rust学习——cargo-expand

cargo-expand 需用用到每夜版的工具链。cargo expand 接收一个命名的 item 参数,而非文件路径。执行 cargo expand main 不会展开 src/main.rs,它会展开文件根目录的 main() 方法。常规目录结构下, 如果要展开一个文件 src/some_module/another.rs,需要执行 cargo expand some_module::another。

2024-02-27 11:44:59 812

原创 Dioxus、Freya学习——rsx!

【代码】Dioxus、Freya学习——rsx!

2024-02-25 00:58:48 641

原创 c++ this指针在对象移动后失效

【代码】c++ this指针在对象移动后失效。

2023-11-25 14:49:43 150

原创 Rust中FnOnce如何传递给一个约束Fn的回调

在这个修改后的例子中,我们创建了一个 Arc。我们创建一个 Option,这样我们就可以在闭包中使用 take() 方法将其设置为 None,这样就可以将其移动出 Mutex,而无需在闭包中保持锁定。这样,我们就可以在 set_cb 调用中使用 join_handle,而无需担心所有权问题。代码中的问题是你试图在闭包中捕获 join_handle,但 std::thread::JoinHandle 不满足 Fn trait,因为它不是 Clone 和 Copy。

2023-10-12 11:40:38 508

原创 编译工具链常用命令

【代码】编译工具链常用命令。

2023-04-28 14:47:50 210

原创 asio网络编程 tcp、udp、rpc

轻量级的tcp、udp、rpc库,为了简化socket程序编写,基于asio。提供了轻量级的、方便易用的rpc功能,基于rpc_core。

2023-02-12 15:18:28 717

原创 基于STM32的虚拟示波器

设计上把可移植性作为重要目标,可以很方便地移植到其他单片机、Arduino、DSP等硬件。可以方便地移植到其他硬件(只需要ADC、定时器、串口/USB即可)。这是硬件部分,基于STM32最小系统,不使用任何片外外设。用最少的硬件成本,做一个实用的虚拟示波器。只需硬件提供指定功能实现函数即可,具体见。采样率和采样深度等参数取决于芯片性能。中public方法的注释或移植步骤。

2023-02-12 15:10:40 1584 3

原创 C++轻量级RPC库rpc_core

C++11轻量级的RPC库,可用于任何项目中,甚至单片机。方便平台直接相互进行功能调用。目前也有一些轻量的库,参考了protobuf(或者依赖它),基于IDL。其实对于中小型的项目而言,使用IDL并不是一个好的选择,使用也不方便。本库提供了性能更好、更加方便易用的序列化方案。

2023-02-12 15:05:43 1540

原创 GLFW使用Wayland

GLFW使用Wayland。

2023-01-04 20:13:59 464

原创 C/C++参数传递求值顺序

【代码】C/C++参数传递求值顺序。

2022-10-13 10:58:32 718

原创 shell列出所有目录

list_dirs.sh

2022-06-06 09:54:43 236

原创 Android NDK崩溃行定位

logcat的崩溃信息保存到文件a.txt,崩溃信息大致如下: --------- beginning of crash2022-02-24 14:46:37.948 26127-26127/com.example.myapplicationndk A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 26127 (yapplicationndk), pid 26127 (yapplicat.

2022-02-24 15:05:43 2544

原创 IDEA编译Android项目has been compiled by a more recent version of the Java Runtime

com/android/tools/idea/gradle/run/OutputBuildAction has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0为Gradle选择合适的Java版本即可:...

2022-01-04 16:41:26 23560 1

原创 petalinux 离线编译

版本 petalinux 2018.31. 打开官网:https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html注册后推荐使用迅雷下载:2. 使用petalinux-config命令进入配置界面,进行如下选择...

2021-01-05 16:11:23 852

原创 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.

2020-12-15 15:06:32 245

原创 虚函数表和虚函数地址

虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可。同一个类的所有对象都使用同一个虚表。注:intptr_t是值而不是指针类型,在不同的平台保证与地址位数相同,用来存放地址。#include using std::cout;using std::endl;class Base {public:virtual void f() { cout << “Base::f” << endl; }virtual void g() { cout << “

2020-12-09 17:10:09 385

原创 Git 清理历史记录

git会在本地保存commit的历史记录,即使已不被追踪。错误操作后可以通过git reflog命令查看commit_id,并通过执行git reset --hard $commit_id恢复到指定id的状态。若希望清理历史记录可通过下面的命令:git reflog expire --expire=now --allgit gc --prune=now...

2020-11-25 14:36:32 902

原创 查看编译器默认编译参数

echo ‘main(){}’|arm-none-eabi-gcc -E -v -

2020-10-26 15:57:12 1087

原创 以太网接口介绍

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.

2020-09-03 12:06:11 2287

原创 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..

2020-08-26 14:40:14 3295

原创 C/C++判断当前平台的通用方法

#if defined(__WIN32__)#elif TARGET_OS_MAC#elif defined(__linux__)#else#endif

2020-04-03 14:55:08 2500

原创 volatile总结 以及C/C++、Java的异同

修饰单个值c/c++只保证可见性,内存栅栏可使用std::atomic_thread_fence,或者使用锁语义,不要滥用volatile。javajdk1.5后修正了内存模型,对volatile变量的操作不仅可以保证可见性,且带有内存屏障的副作用。所以,带volatile双重判断的单例写法在jdk1.5后都是对的。class Singleton{ private ...

2019-10-28 18:49:18 976

原创 macOS CLion LLDB方式 无法调试 'import sitecustomize' failed; use -v for traceback

坑死人网上解决方案都不行。当出现过:‘import sitecustomize’ failed; use -v for traceback‘说明python环境有问题。找原因吧。删除/usr/local/lib/下面python相关的所有文件夹。LLDB方式就可以用了。...

2019-10-26 02:33:14 2186 2

原创 C++必须掌握的知识总结

对C++知识做了个总结,因为网络资源过于零碎。大部分教材和资料又都过于片面,这也是情理之中,毕竟C++单单语法设计就很厚一本书了,STL又是如此,对象模型,新标准等等,都是一本书的知识量。除非都看完,否则很难去把握和理解哪些是实际使用上实用的和必须掌握的。实际上我们只需要花20%的时间掌握其中最重要的80%即可。本文提到的都是作为一个合格的开发者,都应该熟知这些内容。多线程相关的暂不讨论。下...

2019-10-25 23:38:21 2093

原创 C++常见技巧

使用std::string存储二进制数据std::string这个标准容器,不仅可以用来存储字符串。还可以用于存储二进制数据。从本质上讲它算不上字符串,它就是个char容器。在c++11之后,为了充分地性能优化,手动为一个数据类去写move构造等函数用于支持移动语意是必要的,尤其对于用于存储二进制数据的类型。举个栗子,我们希望使用Msg存储二进制消息,写一个支持移动语意的类(不用仔细看):...

2019-10-24 18:02:30 370

原创 STM32 CubeMX ADC+Timer+DMA

配置ADC配置ADC DMA配置Timer3Linkshttps://github.com/shuai132/STM32_TIMER_ADC

2019-10-19 00:26:40 3284 1

迪文屏幕开发工具

迪文屏幕的开发工具 主要是windows平台的开发环境 和开发文档

2018-05-31

最简单实用的卡拉曼滤波函数

最简单实用的卡拉曼滤波函数 放进单片机即可使用。

2015-04-26

空空如也

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

TA关注的人

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