自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (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 5331 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 4373 6

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

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

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

原创 在汇编层面理解MESI

理解MESI协议在汇编层面的表现需要结合缓存一致性机制和处理器指令执行的行为。

2025-04-03 17:17:52 1003

原创 memory_order_relaxed允许cpu乱序执行和指令重排序

允许编译器和 CPU 对指令进行重排序(包括编译器优化和硬件层面的乱序执行)。这种重排序的目的是提高性能,但也会导致多线程程序中的行为变得复杂。现代 CPU 会通过乱序执行(Out-of-Order Execution)优化性能。编译器可能会根据优化策略,重新排列代码中的指令顺序。(即操作的完整性,不会被部分观察到),但。是 C/C++ 原子操作中。,这些重排序均可能发生。

2025-04-02 11:15:51 398

原创 Apple Silicon M系列芯片 macOS 配置CMake/Makefile生成x86_64架构二进制/库文件

Makefile环境变量。CMake配置FLAGS。

2025-02-21 12:02:35 111

原创 制作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 1464

原创 关于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 367 3

原创 skia编译参数

【代码】skia编译参数。

2024-04-08 20:05:18 502

原创 CMake实现target_link_libraries_with_definitions

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

2024-03-19 14:12:52 242

原创 union需要类型是trivial的

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

2024-03-14 10:29:35 435

原创 Skia最新版CMake编译

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

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

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

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

2024-03-07 10:53:49 529

原创 uint8_t和uint32_t

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

2024-03-05 14:26:40 756

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

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

2024-03-04 18:32:35 678

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

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

2024-02-27 20:15:44 556

原创 Dioxus、Freya学习——介绍

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

2024-02-27 12:11:56 1300

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

原创 Dioxus、Freya学习——rsx!

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

2024-02-25 00:58:48 726

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

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

2023-11-25 14:49:43 167

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

原创 编译工具链常用命令

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

2023-04-28 14:47:50 252

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

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

2023-02-12 15:18:28 795

原创 基于STM32的虚拟示波器

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

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

原创 C++轻量级RPC库rpc_core

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

2023-02-12 15:05:43 1859

原创 GLFW使用Wayland

GLFW使用Wayland。

2023-01-04 20:13:59 581

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

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

2022-10-13 10:58:32 739

原创 shell列出所有目录

list_dirs.sh

2022-06-06 09:54:43 307

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

原创 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 23766 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 883

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

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

虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可。同一个类的所有对象都使用同一个虚表。注: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 398

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

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

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

2020-10-26 15:57:12 1185

原创 以太网接口介绍

MII接口介绍https://blog.youkuaiyun.com/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 2369

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

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

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

2020-04-03 14:55:08 2543

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

原创 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 2239 2

迪文屏幕开发工具

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

2018-05-31

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

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

2015-04-26

空空如也

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

TA关注的人

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