![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式 Linux 软件开发经验
文章平均质量分 69
大橙子疯
借用一句话来说“代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已”
展开
-
linux 如何通过shell指令从Git储存库下载单个或多个原始文件
如何通过`curl`和`wget`从Bitbucket储存库或者github储存库下载单个或多个原始文件原创 2022-12-02 19:45:00 · 1219 阅读 · 0 评论 -
不同网段之间实现GDB远程调试功能
解决不同网段之间实现GDB远程调试功能的问题原创 2022-07-06 16:39:21 · 729 阅读 · 0 评论 -
protobuf 的交叉编译使用(C++)
为了提高通信效率,可以采用 protobuf 替代 XML 和 Json 数据交互格式,protobuf 相对来说数据量小,在进程间通信或者设备之间通信能够提高通信速率。下面介绍 protobuf 在 ARM 平台上的使用。原创 2022-01-19 20:47:11 · 7563 阅读 · 5 评论 -
Linux 中通过虚拟地址获取物理地址并锁定
在 Linux 开发过程中,申请内存后,某些时候需要用物理地址传给其他外设进行写入或者读取操作,同时考虑到防止被操作系统 sawp,导致实际的物理地址发生变化,从而在操作对应的虚拟地址时无法正常运行等。物理地址的获取获取对应的物理地址代码为:int mem_addr_vir2phy(unsigned long vir, unsigned long *phy){ int fd; int page_size=getpagesize(); //系统设定的页面大小 unsig原创 2021-10-20 16:27:40 · 1114 阅读 · 0 评论 -
跨平台(32bit和64bit)的 printf 格式符 %lld 输出64位的解决方式
问题描述在 C/C++ 开发中,使用 printf 打印 64 位变量比较常用,通常在 32 位系统中使用 %lld 输出 64 位的变量,而在 64 位系统中则使用 %ld;如果在 32 位系统中使用 %ld 输出 64 位变量,很可能打印的值是异常的,而在 64 位系统中则使用 %lld,则通常会出现编译报错,类似如:format '%lld' expects type 'long long int', but argument 4 has type 'int64_t'[ -Werror=原创 2021-10-20 15:53:02 · 6447 阅读 · 0 评论 -
内存泄漏定位工具之 mtrace(二)
上篇讲到如何使用 mtrace 检查可执行程序中的内存泄漏,可以定位到源码的行数,但是存在一个问题,它没办法直接显示动态库所在的源码行数,而 Linux 开发动态库的使用是十分常见的,那么该篇就讲讲 mtrace 如何定位动态库中的内存泄漏问题。原创 2021-08-19 20:18:24 · 1821 阅读 · 0 评论 -
内存泄漏定位工具之 valgrind(一)
主要是介绍 valgrind 在联咏 NT98X 系列芯片的 ARM 平台上的编译使用及在使用过程中遇到的问题。原创 2021-08-24 09:20:37 · 3368 阅读 · 7 评论 -
内存泄漏定位工具之 mtrace(一)
mtrace(memory trace),是 GNU Glibc 自带的内存问题检测工具,它可以用来协助定位内存泄露问题。它的实现源码在glibc源码的malloc目录下,其基本设计原理为设计一个函数 void mtrace (),函数对 libc 库中的 malloc/free 等函数的调用进行追踪,由此来检测内存是否存在泄漏的情况。原创 2021-08-18 18:17:50 · 3763 阅读 · 0 评论 -
在海思芯片上使用GDB远程调试
使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其他静态库等,尝试解决,但是遇到了一些其他问题,因为时间问题折腾了一段时间就放弃使用10.2的版本了)。 通过使用 gdb+gdbserver 远程调试目标板,之后可以通过 VSCode 配置好后实现和 IDE 集成开发环境一样的比较直观方便调试。原创 2021-08-12 19:43:03 · 1196 阅读 · 4 评论