自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (9)
  • 收藏
  • 关注

原创 嵌入式Linux环境部署kdump

之前文章讲解过[《Linux Kdump内核崩溃转储部署详解》,主要是针对centos等发行版linux服务器环境上部署使用,本文主要针对小型arm嵌入式环境的kdump部署,原理基本一样,但操作上有差异,本文主要介绍其基本流程。

2024-02-28 17:03:06 838

原创 Linux Kdump内核崩溃转储部署详解

1、crashkernel以及编译config(1)在"Processor type and features.“下使能"kexec system call”。CONFIG_KEXEC=y(2)在"Filesystem" -> “Pseudo filesystems.“下使能"sysfs file system support”。CONFIG_SYSFS=y(3)在"Kernel hacking.“下使能"Compile the kernel with debug info” 。CONFI

2021-02-28 21:25:00 1675 2

原创 MT2503与SIM系列模块连接服务器区别比较

MT2503和SIM系列的一样,都是采用AT指令控制,内部集成TCP/IP协议栈。对MT2503调试一遍后,发现其AT指令以及控制思想和SIM还是差别蛮大的。在网上MT2503资料SIM系列少很多,对于MT2503连接服务器方面个人也摸索了不少时间,比在这里,以模块连接服务器为例,来说明两者之间使用的不同之处,尤其说明下以域名方式连接到服务器的不同之处,给网友提供借鉴,节约开发时间。

2017-06-11 13:14:55 7208 4

原创 基于WIFI模块(ESP8266)与非同一个局域网内服务器建立连接

前一篇文章讲述的是两个局域网间应该如何搭建连接的方法,这篇文章将讲述,这种方法的具体实施过程。案例简述:以WIFI模块(ESP8266)为开发对象,处在局域内网中的WIFI模块,连接到另外一个局域内网的TCP服务器,形成WIFI模块和服务器之间通信。本文先以电脑控制WIFI模块的连接,熟悉AT指令的使用,再通过编程手段,由单片机去控制WIFI模块,深入学习。

2017-03-15 20:12:06 21504 10

原创 不同局域网内进行网络连接的建立方法

在这互联网和物联网的时代,网络连接与通信被使用的越来越多,如何建立两个网络IP地址的连接 (TCP或者UDP连接),也是一门学问。之前项目中遇到了这方面的问题,也被纠缠了一番,查阅大量资料,通过不断摸索和学习,对网络通信有了一定的理解,下面以个人的理解角度,通俗的来讲讲,网络连接关系?两个局域网建立连接的解决方法?如有解释不周,望谅解。内外网IP关系的理解我们生活中的大多数上网的IP都是处在局域

2017-03-13 22:41:09 19186 9

原创 WIFI模块ESP8266的使用指南(客户端和服务器两种模式建立)

本文主要对讲述ESP8266模块硬件连接工作,以及作为服务器和客户端情况下的配置实现的详细过程,并对相关AT指令和实验现象进行说明。

2016-11-28 16:59:16 73571 19

原创 DMA多知识学习应用实例

DMA多知识学习应用实例闲来无事,学习了下DMA的相关知识和使用。平时看到的DMA都是简单的存储器到寄存器或者寄存器到存储器这样单类的传输。学习完DMA后,我想写个比较综合点的DMA学习实例,不仅能增加自己对DMA的深入应用,也同时发表于此给网友提供参考。 之所以说多知识,实例涉及到存储器到寄存器和寄存器到存储器,以及DMA中断使用等相关知识。 实例内容:单片机采集AD值通过DMA传输给RAM

2016-08-03 14:11:32 7035 1

原创 linux环境下创建网口聚合实例

Linux的网口聚合(网口绑定、bonding)技术是一种通过多个网络接口聚合来提供网络冗余和/或增加网络带宽的方法,为提供网络稳定性、带宽、性能非常有利工具

2024-04-18 13:09:52 609

原创 Linux内核源码里scripts/config和scripts/kconfig/merge_config.sh作用

Linux内核源码的scripts目录,其作用主要存储内核编译和配置相关脚本。这里主要介绍两个常用脚本:scripts/config和scripts/kconfig/merge_config.sh

2024-03-08 13:15:59 372 1

原创 BusyBox编译与根文件系统构建

BusyBox 是一个集成了大量日常Linux使用工具,简单的有ls、cat... 复杂的有grep、awk.... 这个大工具箱通常被称为Linux工具里的瑞士军刀。作为日常使用的根文件系统,具备BusyBox是其基本组成部分。因此,本文主要结合BusyBox和根文件系统,介绍Busybox编译流程,并如何构建一个简单的根文件系统,最后制作成可烧录镜像。

2024-03-02 00:03:44 919

原创 systemd:systemd-analyze分析启动性能

本文主要介绍systemd下的systemd-analyze工具,用于分析Linux启动性能。通过 systemd-analyze 不同命令,可以了解系统启动的总体时间、各个系统服务/Unit启动时间以及关键耗时路径,帮助我们分析和优化系统的启动性能。

2024-02-01 22:50:57 427

原创 systemd:service与target使用及相关命令

本文主要介绍systemd相关命令以及配置

2024-01-30 18:12:02 1149

原创 GCC工具源码编译

日常可能涉及到系统里自带GCC版本与被编译源码存在不兼容,或者需要对GCC需要做一些定制化修改,因此需要通过源码编译出GCC工具的场景

2024-01-14 02:22:45 1010

原创 看代码神器:vscode+clangd轻松实现linux内核代码跳转(图文并茂)

还是那句老话:工欲善其事必先利其器。在做代码开发之前,先准备好开发过程帮助提效的工具,能起到事半功倍的效果。比如本文要讲的vscode下进行linux内核代码开发或者阅读就是很好例子,如果没有先把代码跳转等基础环境搭建好,对后续的代码阅读和开发都可能会造成很大障碍,而先完成基础工具环境搭建再开发,阅读代码流畅了,理解能力更快加深,开发效率也会提高。所以,有点时候宁愿先多花80%时间‘力其器’,也许后边只需要20%即可‘善其事’。

2023-12-18 14:25:16 4314 6

原创 手把手教WSL如何访问宿主机USB设备

自从windows推出的WSL功能,对广大的Linux和嵌入式开发者来说是巨大福利,但还存在一些不足,本文主要介绍WSL如何访问宿主机USB设备,使用好WSL,基本可以媲美日常vmware虚拟机的替换。

2023-12-12 19:09:04 394

原创 vscode远程到服务器(包括WSL)进行GDB调试

本文主要讲vscode远程服务器进行在线GDB调试手段,包含对WSL的远程调试,可以轻松对照源码进行应用程序调试。

2023-05-21 19:49:09 2561

原创 sublime text 软件上手指南

这里发现了一款超级实用的代码编辑器软件:sublime text,使用后的感觉是:轻量级免费软件,界面友好,代码跳转、查询、各种插件等功能足够日常使用,推荐大家。

2022-04-23 18:16:46 3897 3

原创 交叉编译环境下对linux内核编译

本文基于ubuntu,搭建交叉编译环境,arm64为例,交叉编译4.19.186内核源码所谓的交叉编译是:编译的平台环境与编译的成果所运行的平台,不是一类平台。通常指X86平台下编译成果物,提供给arm下要运行的程序或内核。因此需要交叉编译工具链来解决平台差异化问题 。材料准备1、下载交叉编译工具链工具链官方路径:http://releases.linaro.org/components/toolchain/binaries/也可以到国内源网站下载更快:https://mirrors.tu

2021-04-12 22:45:20 6810

原创 ubuntu网络及基础环境搭建(IP,防火墙,DNS,源 等)

安装失败deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe mul.

2021-04-01 22:46:31 2726

原创 内存管理(二)-- linux 预留内存几种方法

日常开发过程可能要预留一段物理内存出来提供特殊场景使用(独占一段内存不被系统所使用)。本文讲解3种预留内存的方法,以及对预留内存的使用。文章目录一、memblock方式预留内存1.1 memblock内存管理1.2 memblock 方式预留内存方法1.3 预留内存访问二、 限制内存总空间方式预留内存2.1 预留内存方法2.2 预留内存访问三、CMA连续内存分配方式预留内存一、memblock方式预留内存1.1 memblock内存管理mmeblock是内存的一种管理机制,主要管理这两种内存,

2021-03-28 14:20:45 11835

原创 内存管理(一)--linux内存地址分布和分配管理算法

内存分布通常32位Linux内核地址空间划分0-3G为用户空间,3-4G为内核空间。用户空间中每个进程都拥有3G的虚拟空间,每个进程都是在虚拟空间运行的,不会相互干扰。整个4G空间被分为3类内存:ZONE_DMA的范围是0~16M,该区域的物理页面专门供I/O设备的DMA使用。之所以需要单独管理DMA的物理页面,是因为DMA使用物理地址访问内存,不经过MMU,并且需要连续的缓冲区,所以为了能够提供物理上连续的缓冲区,必须从物理地址空间专门划分一段区域用于DMA。ZONE_NORMAL的范围是

2021-03-27 23:38:18 3660

原创 linux定时器使用指南及实例

本文简述如何使用linux里的定时器,包括周期性中断,停止和启动的控制。日常常用的几个定时器相关linux API函数:init_timer(); 初始化定时器add_timer(); 启动定制器del_timer();停止定时器mod_timer(); 重新修改定时器当前计数时间这些API位于:kernel\timer.c中,该源文件里还包括了常用的msleep(),schedule_timeout()等常用的延时调度函数。下面以一个实例驱动介绍linux里的timer的使用(基于3.

2021-02-17 18:47:32 2236

原创 unlikely和likely函数作用

在linux内核中的判断语句里常见到unlikely和likely函数。如:if(unlikely(a)) // if(likely(a)){ ...}else{...}两函数实质是__builtin_expect的的宏定义,原型如下:# define likely(x) __builtin_expect(!!(x), 1)# define unlikely(x) __builtin_expect(!!(x), 0)__builtin_expect 是GCC的内置函数,用来对

2021-02-17 14:10:10 2283

原创 centos源配置和yum使用

目前国内主要的源有:阿里清华163介绍两种源配置:阿里源和清华源一、阿里源配置先备份一份cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak阿里网站下载一份最新源配置(wget 命令下载)wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo这时查看/etc/yum

2021-02-09 22:17:49 643

原创 USB设备创建过程与驱动学习笔记

讲述usb设备插入到设备创建过程的源码分析,以及以中断传输方式的鼠标驱动为例,讲述USB驱动实现流程。文章目录USB设备创建过程USB驱动编写(中断传输方式)USB设备创建过程当外部插入USB设备后,系统都做了哪些工作?总的来说就是:插入USB设备后,USB控制识别到USB设备,会向系统触发一中断,在中断函数中唤醒休眠线程,在线程中获取USB设备信息,并创建USB设备。该过程可参考hub.c 文件。USB控制器触发中断入口函数:hub_irq。整个调用流程如下:->hub_irq //产

2021-02-04 23:29:20 696 4

原创 块设备原理分析--创建一个内存模拟磁盘的驱动实例

本文简要介绍了磁盘的基本构成;并从一个ram(内存)模拟一个块设备的简单驱动(ramdisk),来了解块设备驱动原理;最后如何对该块设备的简单使用。一、磁盘基本构成了解块设备原理,需要先了解磁盘的基本结构,如下为一个盘面,磁盘最小单位为扇区,在内核力通常默认512B,每个盘面有一道道环形,为磁道。多个盘面一起构成一块磁盘,如下每个盘面上相同为主的磁道组成一个柱面,所以柱面数=当个盘面的磁道数,同时每个盘面对应一个磁头操作读写。这样就能计算出磁盘总容量: 磁头(盘面)数 × 磁道(柱面)数 ×

2021-02-02 23:14:22 712

原创 卷管理常用命令与逻辑卷扩容方法实例

本文讲解卷管理的相关操作,主要包括:卷创建,卷扩容, 卷查看等常用命令,以及案例实操怎么扩展逻辑卷大小。逻辑卷创建过程先用fdisk 命令将sdb磁盘创建出物理分区sdbx(该步略,见下面实例),假设有sdb1,sdb2,将两个分区合并一个逻辑卷。pvcreate /dev/sdb1 /dev/sdb2 创建物理卷(或者pvcreate /dev/sdb{1,2})vgcreate vg1 /dev/sdb1 /dev/sdb2 创建卷组lvcreate -n lv_nam

2021-01-27 22:25:01 2019

原创 centos7虚拟机网络与DNS上网配置

讲解安装的虚拟机系统,如何配置网络并能正常连接到外网。虚拟机设置虚拟机对centos镜像安装步骤忽略描述,安装过程选择“桥接”模式。系统ip配置centos的linux系统安装完后,需要配置与物理机通网段的IP。查看物理机配置配置虚拟机IP:ifconfig查看网卡是否up并活跃(即第一行是RUNNING状态)。本文通过修改配置文件的方式,配置ip,需要关注红色框里内容。主要配置:ip需要与物理机同一个网段,子网掩码和网关和物理机一样,以及设置成静态ip,开机启动以及设置网卡名称

2021-01-24 23:23:23 2622

原创 好久不见,我回来啦

好久不见,我回来啦  好久不见,上次写的CSDN博客还是临近毕业在校时候写的,辗转间都快3年了,这期间一直忙碌于工作,加班很多,以及在懒的加持下,基本没有更新自己的博客。说实话,我还是会有事没事地看下自己账号,时不时几天就有粉丝关注我或提一些问题,3年间,一直没断过,但却停止文章更新了。而今天,我又提笔了,仿佛回到3年前,重新拾起那种激情,其实让我重拾的原因很简单,主要下面这几点吧。  首先,虽然很久没写博客,但我平时还是保持着做笔记的习惯,最最开始写博客的初衷就是来自于此,希望自己能把自己所学的东西

2021-01-24 22:35:01 130

原创 C# winform中的不同form之间通信与调用

几句废话一下(#^.^#): 很少写VS平台下应用开发的文章,主要平时用的少,还是以嵌入式开发为主,这也算我的第一篇这样类型文章,O(∩_∩)O哈哈~。开发中遇到问题解决了,就应该记录下来和大佬们分享,而且关于“C# winform中的不同form之间通信与调用”的问题是开发中比较常见的,想必很多人会经常遇到。。————————这是一条进入正题的严肃分割线(#^.^#)—————————...

2018-06-08 17:36:46 5138

原创 一种寄存器操作指定位翻转方法

通常情况,很多CPU寄存器是不可以进行单独的位操作的,比如32位ARM,若要改变寄存器某位,那就有可能影响到其它的31位。 平时开发中会经常遇到,以平时开发中遇到的LED为例,如果要实现指定的LED翻转时,其它的LED状态不变,那么就要操作寄存器对指定位进行翻转,下面是笔者采用的一种方法,可以提供各位借鉴,如有更好的方法可以留言,一起交流探讨哈^_^。实例说明: 以S3C2440为例...

2018-05-29 20:47:43 2425 2

原创 字符驱动程序框架与应用测试程序编写

该文章主要目的为学习并掌握以下几个方面:熟悉并编写字符设备驱动框架学习应用层的测试程序编写内核空间与用户空间的通信机制驱动装载、设备文件查看、应用程序运行等相关命令使用。嵌入式系统框架简单介绍嵌入式系统由硬件、驱动、操作系统、应用,这几部分层次构成。其中,驱动程序是硬件层与系统层之间的交互层,主要作用是操作底层硬件,实现硬件控制,而应用层位于操作系统层之上,应用层以操作系...

2018-05-29 19:52:45 1849 1

原创 物理地址,虚拟地址,链接地址的个人理解

以下仅为个人理解,若有不足之处,望指正。链接地址,物理地址,虚拟地址这三者地址都有各自的区别,这也是我开发学习过程中,自己琢磨出来领悟的,网上搜索的都讲的很专业化,不太好理解,理解起来感觉有些吃力。所以我想以个人理解的角度,通俗点去讲讲这三者的功能作用。

2017-12-20 14:26:14 1894

原创 嵌入式linux裸板开发--点亮LED

上一篇文章写的是linux下通过gcc完成程序源文件的编译执行的过程。以及makefile文件的编写,最后在终端平台输出myhello word!有了这个基础,这次学习的就是通过linux编译生成的代码在ARM上完成硬件实现。因为还不涉及到系统移植,所以还是裸板程序开发。

2017-12-08 22:36:00 909

原创 嵌入式linux开发环境熟悉---第一个hello word!

初学嵌入式linux,对于整个环境的认知,以及整个环境的操作非常重要。平时编程都是在集成开发环境下进行,比如VC6.0,写完代码后,直接按钮单击“编译”,点击“运行”,均是界面化操作。但各位开发程序猿们是否想过这集成开发环境的“编译”和“运行”是如何进行的?又是怎样一个过程?集成开发环境确实方便,直接通过按钮的点点就完成了想要的操作,但隐藏了内在的运行逻辑。

2017-08-25 14:05:50 3702 1

原创 sizeof和strlen区别以及使用情况分析

实际做开发项目中,如果有涉及到字符数据处理等,都会遇到获取数据长度的情况。比如现在需要对a[50]数组进行赋值1~50的指定数据,如果50长度未知的情况,又应该如何为数组赋值?想到的就是获取数组长度(元素个数)然后再赋值(解决方法见文末)。C标准函数库有自带获取数据长度的函数:sizeof和sizelen。下面进行介绍两者区别以及使用条件分析。

2017-08-06 15:09:58 711

原创 memcpy与strcpy区别

memcpy与strcpy都是拷贝某段数据的函数库,是C语言自带标准函数库,位于:#include”string.h”头文件中,在一些字符串处理有很大帮助。很多人可能对一个数组的值赋给另一个数组时,估计都会采用一个for循环,对每个数组元素依次赋值。但如果使用数据拷贝函数,就可以一步到位。既然两者都是拷贝数据,但有何不同之处呢?

2017-08-06 12:52:07 846

原创 基于U-boot完成NandFlash裸板程序烧写(DNW&TFTP)

案例在JZ2440开发板上完成,本例通过NorFlash中U-boot进行NandFlash裸板程序下载。上篇文章讲述的是采用epo烧写器直接完成程序对NandFlash烧写。而当板子上的NorFlash有U-boot启动程序时,可以通过U-boot进行烧写,但前提需要DNW软件进行程序USB下载,或者tftpd软件进行程序网络下载,下载后由U-boot完成程序烧写。下面对两种下载方法进行实验。

2017-07-07 21:25:09 1088

原创 S3C2440裸板程序下载

本例基于JZ2440开发板进行开发和实验。将嵌入式linux学习历程与广大网友分享,也方便自己对学习做成笔记和总结。本例使用PC机的DOS命令行,通过ope烧录器将二进制程序文件烧录到NandFlash中。因为不带任何操作系统,所以称之为裸板程序。

2017-07-04 10:44:36 1431

原创 推荐一款调试法宝--虚拟示波器

顾名思义,虚拟示波器并不是真实的示波器,简单地说而是一款PC端开发的监控数据变化曲线的软件,与下位机进行通信。这种类型软件网上有很多,我现在推荐的是我前几年用的一款虚拟示波Data_Scope,在调试中起到了很大的帮助,感觉还不错,推荐给大家。用此软件可以监控速度变化曲线,角度变化曲线,AD值变化曲线等等,你想要监控的重要变量情况都可以。相比于串口调试助手,能以曲线形式更直观的显示变化情况。

2017-06-12 09:42:09 10030 9

clangd 13.0.0

vscode实现代码跳转的clangd工具,参考博文:https://blog.csdn.net/ludaoyi88/article/details/135051470?spm=1001.2014.3001.5502

2024-02-22

yuv图片查看器,免安装

yuv图片查看器,免安装

2023-12-15

Automotive Ethernet - The Definitive Guide 车载以太网(全).pdf

Automotive Ethernet - The Definitive Guide 车载以太网(全) 42章 1628页

2021-12-26

字符驱动程序框架与应用测试程序编写-源码

字符驱动程序框架与应用测试程序编写-源码,详细见笔者文章:《字符驱动程序框架与应用测试程序编写》。

2018-05-29

Source Insight 4.0破解file

1.Source Insight4.0软件可以去 Source Insight官网或者网上都能找到下载链接并安装; 2.安装完后,将下载的sourceinsight4.exe文件替换安装路径里sourceinsight4.exe 3.运行软件,弹出的对话框中,选择Import a new license file--》next。然后选择将下载的si4.pediy.lic破解文件。 4.破解完成。

2018-04-16

2440裸板程序开发(点亮led)

linux平台下完成2440的裸板程序开发,实现点亮led灯,,

2017-12-08

secuerCRT,tftpd,dnw软件安装包,uboot程序

嵌入式LINUX开发的必备工具,使用案例可参见本人博客《基于U-boot完成NandFlash裸板程序烧写(DNW&TFTP)》

2017-07-07

JZ2440裸板程序烧写资料

oflash烧写软件,库文件,裸板程序

2017-07-04

DataScope虚拟示波

DataScope虚拟示波器软件和函数库。具体使用说明见本人博客文章《推荐一款调试法宝--虚拟示波器》

2017-06-11

MT2503和SIM900A的AT指令手册

MT2503和SIM900A两种通信模块的AT指令手册

2017-06-10

基站和经纬度定位(定位API实例)

在VS2013下开发,基于C#WinForm编程,提供基站定位实例,可实现:(1)输入基站定位信息,可返回提供经纬度以及与Http服务器之间的通信信息。(2)输入经纬度信息,可返回与Http服务器之间的通信信息。

2017-05-17

空空如也

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

TA关注的人

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