- 博客(334)
- 资源 (117)
- 问答 (1)
- 收藏
- 关注

原创 【开发工具】嵌入式常用调试工具汇总帖
写这篇文章,主要是想将自己以前用过的,发过的调试工具相关的博客进行汇总,方便后续查找。调试工具【调试工具】【sysrq】魔术键(sysRq)的使用【调试工具】【objdump】反汇编工具(objdump)的使用【调试工具】【gdb】编译工具gdb的使用【调试工具】【lockdep】Linux内核死锁检测工具(lockdep)的使用【调试工具】【tcpdump】抓包工具(Tcpdump)的使用【调试工具】【mtest】uboot内存检测工具(mtest)的使用JTAG 通常系统崩溃,无任
2020-12-27 21:29:27
3564
8

原创 【LWIP】LWIP协议|相关知识汇总|LWIP学习笔记
这里作为一个汇总帖把,把以前写过的LWIP相关的博客文章汇总到一起,方便自己这边查找一些资料。LWIP协议【LWIP】LWIP网络通信流程【LWIP】LWIP动态内存管理【LWIP】原始套接字(SOCK_RAW)【LWIP】AF_PACKET套接字分析【LWIP】AF_UNIX socket套接字分析LWIP源码解析【LWIP】pbuf数据包管理【LWIP】netdev_pbuf_alloc函数分析【LWIP】以太网网卡接口部分初始化【LWIP】netif网络接口结构【LWIP】
2020-12-27 19:26:05
2818
1

原创 BSP开发|嵌入式|Linux驱动|笔试面试
写这篇文章的目的,希望以提问的形式,对自己以前的知识进行一个总结,并期待能给即将/已经踏入嵌入式领域的程序员提供一些学习上的帮助~嵌入式,软件,C语言,Linux,驱动,内核,开发,BSP,工程师,底层,后端相关,常见,频繁,常问,经典,项目,招聘,平台,学习,框架,职位,职业,架构,岗位,offer,校招,社招,企业笔试面试,面试笔试,笔试,面试,面经,笔经题目,大全,总结,概括,汇总,整理,集锦,理解,答案,常问问题,经验,分享,最常,归类,大纲
2020-12-01 22:43:00
14133
10

原创 【PCIe】非常适合初学的pcie博客(PCIe知识整理)
非常适合初学的pcie博客:PCIE扫盲(第一阶段):http://blog.chinaaet.com/justlxy/p/5100053251PCIe简介:http://blog.chinaaet.com/justlxy/p/5100053066 这一章主要介绍PCIe的由来,在2001年的时候被提出,命名“PCI-Express”,主要优势就是传输速率高,另外还有传输距...
2018-07-30 10:55:16
20902
9
原创 【C语言】字符串和格式化输入/输出
字符常量‘x’和字符串常量“x”不同。区别一‘x’代表基本类型(char),而“x”代表派生类型(char数组);区别二是“x”实际由两个字符组成‘x’和‘\0’(占两个字符)。
2024-08-24 14:06:52
460
原创 【开发工具】【kmemleak】内存泄漏检测工具(kmemleak)的使用
检测对象是memblock_alloc、kmalloc、vmalloc、kmem_cache_alloc等函数分配的内存块,该内存块由struct kmemleak_object来描述(简称为object)。kmemleak的实现原理非常简单,通过暴力扫描内存(假定内存中存放的都是指针,以ARM64为例,每次扫描8个字节),如果找不到指向起始地址或者内存块任何位置的指针,则分配的内存块被认为是孤立的。虽然kmemleak的扫描算法存在漏报和误报的可能,但是并不影响我们的使用。因此需要将值设置的大一些。
2024-03-14 18:34:02
1937
原创 嵌入式BSP内存统计
项目开发的可行性评估中,常涉及到内存的使用评估,这对项目DDR大小的选型及成本控制至关重要,本文主要是梳理了内存当前BSP内存统计方案,找到内存统计过程中的关键参数,以便后续项目评估过程中提供更精确的BSP内存使用情况。
2023-12-11 21:17:52
765
原创 嵌入式开发DDR的选择
当前DDR主要有DDR、DDR2、DDR3、DDR4、DDR5等不同的内存标准。本文主要是对比不同标准的DDR,了解其差异性以及优劣势,以便在以后在以后做DDR选型的时候做一定的参考。
2023-11-28 21:24:25
2679
原创 linux 下打印堆栈信息 jstack pstack gstack 有啥区别?分别的使用场景是啥?
注意:pstack和gstack都是通过读取进程的内存信息来获取堆栈信息的,所以只能用于分析正在运行的进程。而jstack可以通过进程ID或Java进程的启动命令来获取堆栈信息,所以可以用于分析正在运行的Java进程,也可以用于分析Java进程的崩溃日志。jstack:jstack是Java虚拟机自带的工具,用于打印Java进程的堆栈信息。它可以显示进程的函数调用栈,包括函数名和地址。jstack、pstack和gstack是在Linux系统下用于打印堆栈信息的工具,它们的使用场景和功能略有不同。
2023-11-21 20:12:35
1517
原创 【操作系统】操作系统的大端模式和小端模式
所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。
2023-11-07 15:09:21
857
1
原创 【笔试题】位运算
1、实现对一个8bit数据(unsigned char类型)的指定位(例如第n位)置0或者置1操作,并保持其他地位不变。2、UART寄存器(32位)地址位0x10000000,写出将第2~第10位区域置为0x1F的代码段:
2023-11-07 04:44:09
488
2
原创 【笔试题】宏相关笔试题
记录一些企业招聘常见的笔试题:已知一个结构体里面的成员的地址,反推出该结构体的首地址定义一个宏,实现对数据a的第n位置位、清零、取反
2023-11-07 04:21:12
329
转载 【内存管理】进程的虚拟地址和内核中的虚拟地址有什么关系?
那么到底什么是虚拟内存地址 ?Linux 内核为啥要引入虚拟内存而不直接使用物理内存 ?虚拟内存空间到底长啥样?内核如何管理虚拟内存?什么又是物理内存地址 ?如何访问物理内存?本文笔者就来为大家详细一一解答上述几个问题,让我们马上开始吧~~~~
2023-10-18 23:09:52
479
原创 【开发日常】insmod: error inserting ‘*.ko‘: -1 Unknown symbol in module原理分析
问题的起源是一次面试,面试官询问加载内核的时候,如果insmod失败,且提示Unknown symbol in module。请问我里面的原理是什么呢?为什么内核知道当前缺少的是这个symbol?
2023-10-17 21:25:34
1293
原创 【开发工具】【Valgrind】内存问题检测工具(valgrind)的使用
Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。
2022-11-12 22:37:32
2457
原创 测试实时进程
#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <sys/prctl.h>#include <assert.h>#include <pthread.h>int cpu_core(){ return 4;}int thread_rt( int *id){char *a;c.
2022-05-09 09:45:06
518
翻译 【编码规范】Linux 内核编码风格
目录重点速读:1) 缩进2) 把长的行和字符串打散3) 大括号和空格的放置3.1) 大括号3.2) 空格4) 命名5) typedef6) 函数7) 集中的函数退出途径8) 注释9) 你已经把事情弄糟了10) Kconfig 配置文件11) 数据结构12) 宏、枚举和 RTL13) 打印内核消息14) 分配内存15) 内联弊病16) 函数返回值及命名17) 使用布尔18) 不要重新发明内核宏19) 编辑器模式行(配置信.
2022-04-25 14:55:32
1830
原创 【开发工具】【sparse】Linux下代码检测工具(sparse)的使用
获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖Linux内核源码里其实包含了相应的代码检测工具【sparse】,位置在:Documentation/dev-tools/sparse.rstDocumentation/translations/zh_CN/sparse.txtDocumentation/dev-tools/sparse.rst 的中文翻译以下为正文---------------------------------
2022-04-19 23:38:19
935
原创 【Makefile】Makefile 中 LINUXINCLUDE 的作用
在驱动开发的时候,我们经常会创建很多新的头文件,这些头文件大多以#include"xxx.h"的形式放在源码中。而内核头文件则是以#include <xxx.h>的形式存在。这两者的区别:前者(使用""),来引用xxx.h文件,是首先检索文件的当前路径;如果没有,再检索标准路径,看看这些文件夹下是否有该头文件。后者(使用<>),来引用xxx.h文件,是首先检索标准路径,看看这些文件夹下是否有该头文件;如果没有,也不会检索当前文件所在路径,并将报错。实际移植过程中遇.
2022-02-10 15:58:14
570
原创 【开发工具】【strace】Linux下Strace程序调试工具源码安装
参考:https://www.jianshu.com/p/33521124bdf2https://www.cnblogs.com/youxin/p/8837771.html什么是Strace?strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用。Strace是一个简单的跟踪系统调用执行的工具。在其最简单的形式中,它可以从开始到结束跟踪二进制的执行,并在进程的生命周期中输出一行具有系统调用名称,每个系统调用的参数和返回值的文本行。strace源码下载.
2022-02-08 11:21:50
11377
原创 【开发工具】【perf】性能分析工具perf的编译和使用说明
源码位置:kernel/tools/perf配置内核以支持perfmake xxx_defconfigmake menuconfig设置以下配置:CONFIG_HAVE_PERF_EVENTS=yCONFIG_PERF_USE_VMALLOC=y编译perf工具make CROSS_COMPILE=xxx ARCH=xxx defconfigmake CROSS_COMPILE=xxx ARCH=xxx menuconfigmake CROSS_COMPILE=xxx
2022-01-26 14:24:07
3087
原创 【开发工具】【make】make 3.82源码编译安装
摘要:通过下载make 3.82源码,再编译机上安装make 3.82版本。解决make版本过高的问题。1、下载make 3.82:下载地址为:wget ftp://ftp.gnu.org/gnu/make/make-3.82.tar.gz我们以gdb-8.3.tar.gz 这个文件为例。2、解压缩:$ tar xvf make-3.82.tar.gz注:小技巧:Linux下一般压缩文件后缀为.tar.bz2和.tar.gz,它们解压命令有两三个选项是一致的:xf(
2022-01-21 16:31:34
13046
1
原创 【开发日常】【makefile】解决Makefile版本过高导致的编译问题
摘要:在openEuler上降低makefile的版本最近在openEuler编译时遇到makefile报错,但是相同的代码在老的CENTOS下时可以编译成功的。排查时发现openEuler的“make -v”版本较高计划降低make版本后,重新编译试试。问题原因:发现了一个很神奇的现象,不同的编译机下,去执行相同的makefile,这个makefile里面就是将“\#include <stdio.h> int main(){ return 0; }”这段字符输出.
2022-01-21 16:27:14
1431
原创 【Net】在arm下实现网络DNS服务
平台:SSC359G架构:ARM摘要:在arm下之前一直没自己做过dns相关的调试。测试反馈配置/etc/resolv.conf后,DNS仍然没用现象是arm开发板配置完IP地址、掩码、网关之后,已经能ping通外部IP。但是无法进行域名解析。/usr # ping 180.101.49.11PING 180.101.49.11 (180.101.49.11): 56 data bytes64 bytes from 180.101.49.11: seq=0 ttl=51 ti
2022-01-20 21:40:10
2303
原创 【开发工具】【Dropbear】Dropbear编译安装
简介:dropbear:小型的嵌入式系统专用的SSH服务端和客户端工具 服务器端:dropbear、dropbearkey 客户端:dbclient dropbear默认使用nsswitch实现名称解析(账户名称) dropbear会在用户登录时检查其默认shell是否为安全shell,/etc/shells中的shell一般称为安全shell编译安装dropbear之前,需要先安装zlib库参考:【开发工具】【Zlib】Zlib编译安装_诸...
2021-11-28 04:10:00
7859
1
原创 【开发工具】【Zlib】Zlib编译安装
Zlib安装下载zlib-1.2.11.tar.bz2官网下载:http://www.zlib.net/fossils/直接下载:https://download.youkuaiyun.com/download/Ivan804638781/48127420解压缩tar -vxjf zlib-1.2.11.tar.bz2注:小技巧:Linux下一般压缩文件后缀为.tar.bz2和.tar.gz,它们解压命令有两三个选项是一致的:xf(v),前者再加上j选项,后者再加上z选项。进入目录cd
2021-11-28 03:59:56
2441
1
原创 【spi】 Q&A
【SPI】如何选择SPI的相位和极性?关于SPI从设备,在空闲的时候,是高电平还是低电平,即决定了CPOL是0还是1;然后再找到关于设备是在上升沿还是下降沿去采样数据,这样就是,在定了CPOL的值的前提下,对应着可以推算出CPHA是0还是1了。如果从设备也是一个SPI控制器,4种模式都支持,此时只要自己设置为某种模式即可。...
2021-10-31 21:53:21
1264
原创 【uboot】设置uboot下的bootargs参数
关键字:【bootargs】、【uboot】、【boot】、【bootloader】、【】、【】、【】、【】、【】、【】、描述:因为项目需要,常常要修改uboot代码。其中比较重要的就有“bootargs”参数什么是bootargs?简单来说:bootargs就是传递给内核的启动参数。在uboot加载内核时,会将bootargs参数传递给内核(指定内存地址)。在内核启动过程中,会获取bootargs参数,并解析其中的信息。用于启动过程中用于配置相关的驱动模块信息。如何设置bo
2021-10-10 21:30:58
5995
原创 【开发日常】解压system.img时报错,解决办法
解压system.img时报错报错:无法作为[Ext]压缩包打开该文件原因解析在linux环境下查看该文件类型 system.img: Android sparse image, version: 1.0, Total of 153600 4096-byte output blocks in 1768 input chunks. 解析: 这个文件类型是【Android sparse image】 对应这个类型的文件,要想解压,首先需要转换格式 ...
2021-09-26 10:55:00
2030
原创 【SPI】SPI学习之SPI调试相关
spi调试方法uboot下调试SPI在uboot下,有spi的调试命令“sspi”,代码在:uboot/cmd/spi.c具体用法如下:
2021-05-29 17:59:11
5392
5
strace-4.11源代码下载
2022-02-08
mtd-utils.tar.bz2
2021-11-24
hdparm-9.60.tar.gz
2021-08-18
Source Insight 4.0.0085-4.0.0086.zip
2021-08-13
stream_5.10.tar.gz
2021-02-24
iperf-2.0.9-win64.rar
2021-02-21
ARM 串口中断问题 一直进串口中断出不来
2016-08-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人