- 博客(318)
- 收藏
- 关注
转载 POSIX与标准库函数libc
POSIX(可移植操作系统接口)概述1.1 什么是POSIX可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX)。POSIX是为要在各种UNIX操作系统上运行软件,而定义的一系列互相关联的OS API标准的总称。1.2发布者-IEEE发布者为电气与电子工程师协会(Institute of Electrical and Electro...
2023-12-27 07:25:50
303
转载 CAN接口简介
CAN是控制器局域网络(Controller Area Network, CAN)的简称,1986年被德国研发和生产汽车电子产品著称的BOSCH公司所开发,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。1 CAN通信简介CAN是控制器局域网络(Controller Area Network, CAN)的简称,1986年被德国研发和生产汽车电子产品著称的BOSCH公司所开...
2023-12-25 07:18:28
1753
转载 64个Linux运维必备命令行工具
系统管理员(sysadmins)负责日常维护生产系统和服务。其中一个关键任务就是保证功能性服务能24小时工作。为了这个,他们得很小心地计划备份方式,灾难管理策略,定时维护,安全审查,等等。和任意其他管理一样,系统管理员也有他们的必备工具。在正确的时间正确的情况下使用合适的工具,可以帮助维护操作系统的健壮,达到最小的服务中断时间和最大的运行时间。1. 网络工具ping:通过ICMP回应/回复报文来检...
2023-12-22 07:03:06
198
转载 Linux GRUB介绍与设置
一、什么是GRUB?GNU GRUB(GNU GRand Unified Bootloader,简称“GRUB”)是一个来自GNU项目的启动引导程序. GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。GRUB支持直接和链式加载的引导方法。GRUB能用于几乎所...
2023-12-14 07:06:48
177
转载 C语言程序内存如何布局
一:C语言程序的存储区域由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域:代码段(Cod...
2023-12-13 07:06:02
63
转载 linux驱动程序工作原理介绍
一、linux驱动程序的数据结构设备驱动程序实质上是提供一组供应用程序操作设备的接口函数。各种设备由于功能不同,驱动程序提供的函数接口也不相同,但linux为了能够统一管理,规定了linux下设备驱动程序必须使用统一的接口函数 file_operations 。所以,一种设备的驱动程序主要内容就是提供这样的一组file_operations接口函数。那么,linux是如何管理种类繁多的设备驱动程序...
2023-12-12 07:05:55
85
转载 linux 内核 --- 自旋锁(spinlock_t)
定义自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,”自旋”一词就是因此而得名。由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(_trylock的变种能够在中...
2023-12-11 07:03:45
229
转载 Linux Socket 编程---I/O复用
1. I/O复用服务器I/O多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作。Linux中基于socket的通信本质也是一种I/O,使用socket()函数创建的套接字默认都是阻塞的,这意味着当sockets API的调用不能立即完成时,线程一直处于等待状...
2023-12-07 07:05:30
51
原创 Linux开机自启方式总结
测试脚本编写测试脚本如下:#!/bin/bashwhile [ true ]do echo "llll" sleep 2done2.修改rc.local文件如果系统存在/etc/rc.local文件,在exit 0前加上需要开机自启的命令即可。注意,rc.local需要有可执行权限。如果没有rc.local文件,则需创建该文件,rc.local文件内容如下:#!/bin/sh/ho...
2023-12-06 07:08:26
545
转载 linux 根文件系统
一、根文件系统1、简介:根文件系统是Linux 系统中所有其他文件系统和目录的起源。在 Linux 中,所有文件、目录、设备和驱动都被组织为一个树型结构,根文件系统就是这个结构的根节点,也是引导过程中启动并加载内核所需的起点。根文件系统是嵌入式系统的关键组成部分,它包含了操作系统运行所需的所有基本文件和数据,能够使操作系统顺利地启动和运行,并且提供文件系统的访问和管理功能。它还包含了驱动程序、系统...
2023-12-05 07:06:44
214
转载 linux内核机制之设备树
设备树(Device Tree)基本概念及作用在内核源码中,存在大量对板级细节信息描述的代码。这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data绝大多数纯属垃圾冗余代码。为了解决这一问题,ARM内核版本3...
2023-12-04 07:03:14
231
转载 linux内核链表
什么是内核链表内核链表是 Linux 内核中非常常用的一种数据结构,它是一种线性表 (linear list),但并不像数组或线性表那样需要一段连续的内存空间来存储所有元素,而是采用链式存储结构,将若干个节点串联起来,每个节点除了自身的数据外,还包含一个指向下一个节点的指针。内核链表的好处在于,它可以高效地在链表头部和尾部插入和删除元素,而不会涉及原有内存块的移动和重新分配;同时,链表也可以有不确...
2023-11-30 07:05:44
71
转载 如何启用Linux的串口终端
1、修改启动选项修改/boot/grub.cfg文件在启动选项中增加console=ttyS0,1152002、配置服务临时为/dev/ttyS0启用串口登录(重启后失效):systemctl start serial-getty@ttyS0.service如果start服务失败,提示“Failed to start ***.service: Unit is masked.”表示该服务已被屏蔽,需...
2023-11-29 07:10:21
741
转载 Linux 内核原子操作
概述原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”,可以保证指令以原子的方式运行,即执行过程不被打断,如果被中断则可能会引起执行结果和预期不符。竟态问题原子操作的提出主要是为了解决程序运行过程中的竞态问题,以程序中一个共享全局变量的自加操作count++为例,处理器完成这样一个操作需要三个步骤:从内存中读...
2023-11-28 07:10:31
342
1
转载 Linux内核开发特点
相对于用户空间内应用程序的开发,内核开发有一些独特之处。尽管这些差异并不会使开发内核代码的难度超过开发用户代码,但它们依然有很大不同。最重要的差异包括以下几种 :内核编程时既不能访问 C 库也不能访问准的C头文件内核编程时必须使用 GNU C。内核编程时缺乏像用户空间那样的内存保护机制·内核编程时难以执行浮点运算。内核给每个进程只有一个很小的定长堆栈由于内核支持异步中断、抢占和 SMP,因此必须时...
2023-11-23 07:10:36
74
原创 uboot学习过程
一直在使用linux,但从未系统学习过linux知识。最近想系统学习linux,通过查找资料,决定从uboot开始学习,进而学习linux内核。经过一个月左右的时间,对uboot的原理和代码有了清楚的认识。同时也在公众号上记录了自己学习的过程,回想也是督促自己学习的一种方式。在学习uboot时,首先从网上查找资料熟悉uboot的基本概念uboot基本概念通过uboot基本概念的学习,掌握了uboo...
2023-11-22 07:10:50
443
转载 Linux内核设计与实现—进程管理
进程进程就是处于执行期的程序(目标码存放在某种存储介质上)。进并不仅仅局限于一段可执行程序代码(Unix 称其为代码段,text section)。通常进程还要包含其他资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程,当然还包括用来存放全局变量的数据段等。实际上,进程就是正在执行的程序代码的实时结果。内核需要有效而又透明地管理所有细...
2023-11-21 08:10:54
60
转载 Linux 补丁文件应用命令 patch
描述patch命令用于将补丁文件应用到源代码文件中,以实现对源代码的修改。补丁文件通常是由开发者或者社区提供的,用于修复源代码中的错误或者添加新功能。语法patch [选项] [源代码文件] [补丁文件]-p<num>:指定路径剥离级别,用于去除补丁文件中的路径前缀。通常在补丁文件中会包含源代码文件的相对路径,使用该选项可以去除这些路径前缀。-d <目录>:指定工作目录,...
2023-11-20 07:10:15
451
转载 Linux 内核编译介绍
Linux内核版本Linux内核有两种:稳定的和处于开发中的。稳定的内核具有工业级的强度,可以广泛地应用和部署。新推出的稳定内核大部分都只是修正了一些 Bug 或是加人了一些新的设备驱动序另一方面处于开发中的内核中许多东西变化得都很快。而且由于开发者不断试验新的解决方案,内核常常发生剧烈的变化。Linux通过一个简单的命名机制来区分稳定的和处于开发中的内核。这种机制使用三个或者四个用“.”分隔的数...
2023-11-17 07:10:26
59
转载 Linux strace、pstack 命令 使用详解
strace简介按照 strace 官网的描述,strace 是一个可用于诊断、调试和教学的 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。strace 底层使用内核的 ptrace 特性来实现其功能。在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能。strace 作为一种动态跟踪工具,能够帮助运维高效地定位进程和服...
2023-11-16 07:10:25
1637
转载 shell基础
简介:Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种UnixShell,Windows Explorer是一个典型的图形界面Shell。shell脚本shell脚本shell script,是...
2023-11-15 07:10:22
46
转载 linux内核启动流程分析
Linux内核自解压过程uboot完成系统引导以后,执行环境变量bootm中的命令;即,将Linux内核调入内存中并调用do_bootm函数启动内核,跳转至kernel的起始位置。如果内核没有被压缩,则直接启动;如果内核被压缩过,则需要进行解压,被压缩过的kernel头部有解压程序。压缩过的kernel入口第一个文件源码位置在/kernel/arch/arm/boot/compressed/hea...
2023-11-14 08:36:38
43
原创 uboot启动内核过程源码分析
bootm和bootz命令uboot中启动内核常用的命令是 bootz 和bootm,其中bootz 命令用于启动 zImage 镜像文件,bootm 用于启动 uImage 镜像文件其在源码中的实现如下:int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]){ int ret; /* Consume ...
2023-11-13 08:35:42
114
原创 u-boot添加自定义命令
在开发过程中,时常会根据实际情况在U-BOOT阶段完成一些外设的初始化,或者实现一些功能应用。本文给大家介绍一下如何在u-boot中通过增加自定义的命令方式来达到这一目的。编写源文件在cmd目录下创建command_test.c文件,内容如下:/* * Copyright 2000-2009 * Wolfgang Denk, DENX Software Engineering, wd@denx...
2023-11-10 08:33:57
114
原创 uboot-main_loop函数分析
概述uboot的主要作用是用来启动linux内核。CPU不能直接从块设备中执行代码,因此需要把块设备中的程序复制到内存中,而复制之前还需要进行很多初始化工作,如初始化时钟、串口、dram等。这些初始化工作,都是由uboot完成的。这些初始化工作完成后,uboot将块设备中的内核代码复制到某个内存地址,然后再执行“bootm xxx”命令以启动内核代码。uboot启动后自动运行,打印出很多信息,然后...
2023-11-09 08:10:25
115
原创 u-boot-搭建gdb调试环境
GDB是Linux下非常好用且功能强大的调试工具,使用gdb调试u-boot,能加快分析u-boot代码过程,使我们更加清晰的掌握u-boot运行过程。本文介绍使用qemu模拟运行u-boot时,用gdb调试u-测试环境:虚拟机:ubuntu18.04 LTSqemu 版本:version 2.11.1u-boot版本:u-boot-2017.05-rc2gdb-multiarch版本:8.1.1...
2023-11-08 07:16:03
594
转载 Linux arp命令:显示和配置网络 ARP 缓存
Linux arp 命令用于查看、添加、删除本地 ARP 缓存条目。在局域网中,我们可以通过 IP 地址访问不同的设备,而 ARP 协议是通过 MAC 地址映射 IP 地址,而 arp 命令通常用来查找一个网络设备的物理地址。下面是该命令的详细作用与使用方法的攻略:作用显示当前系统的 ARP 缓存信息添加、删除 ARP 缓存项查询指定 IP 地址是否已加入到缓存中具体语法参照以下:NAME ...
2023-11-07 07:05:37
878
原创 uboot源码分析
u-boot 源码版本:u-boot-2017.05-rc2u-boot文件介绍u-boot源码中文件内容如下:针对有代表性的文件,我们简单介绍其功能config.mk文件是一个Makefile文件,在某个Makefile中会去调用它Makefile文件这个是uboot源代码的主Makefile,将来整个uboot被编译时就是用这个Makefile管理编译的。api文件夹硬件无关的功能函数的API...
2023-11-06 07:15:18
243
原创 PMON常用命令解析
在pmon下输入h,可以看到pmon支持的所有命令。PMON> h Boot and Load oload load memory from hostport ...
2023-11-03 12:23:25
432
原创 龙芯PMON简介和qemu下测试
测试环境虚拟机:Ubuntu18.04 LTSpmon源码:http://ftp.loongnix.cn/embedd/ls2k/pmon-loongson3.tar.gzpmon交叉工具链:http://ftp.loongnix.cn/embedd/ls3a/toolchain/gcc-4.4-gnu.tar.gzqemu工具:https://gitee.com/loongsonlab/qemu...
2023-11-02 07:17:35
441
原创 uboot常用命令总结
进入uboot页面后,输入?或help可以查看uboot相关命令Hit any key to stop autoboot: 0 => ?? - alias for 'help'base - print or set address offsetbdinfo - print Board Info structurebootefi - Boots an EFI p...
2023-11-01 07:26:09
169
原创 qemu--使用u-boot加载内核
前面的文章中我们使用qemu启动uboot,现在我们测试在uboot下引导内核的过程。测试环境主机系统:ubuntu 18.04 LTS交叉编译工具链:arm-linux-gnueabi-uboot版本:u-boot-2017.05-rc2Kernel版本:4.4.76制作sd卡前面 kernel提示找不到,因此就停留在uboot命令行模式。qemu支持模拟sd卡,因此,我们可以制作一个sd卡,然...
2023-10-31 07:36:45
319
原创 利用QEMU模拟启动uboot
环境配置:实体机:Windows7虚拟机:Linux ubuntu 18.04模拟开发板:vexpress-a9u-boot版本:u-boot-2017.05-rc2.tar.bz22. 安装QEMU2.1 源码安装下载安装QEMU需要依赖的库apt install zlib1g-devapt install libglib2.0-0 libglib2.0-devapt install lib...
2023-10-30 08:02:35
160
转载 Linux下复位USB设备的方式
概述我们使用的一些第三方usb设备,有时会出现一些异常,为了能够自动恢复,我们一般可以插拔一下usb设备,针对不能插拔的情况,我们也可以通过软件来复位我们的usb设备。方法11.将以下内容保存为usbreset.c/* usbreset -- send a USB port reset to a USB device */#include <stdio.h>#include &...
2023-10-28 10:59:20
1030
转载 uboot启动第二阶段
uboot第二阶段应该做什么?uboot的第二阶段就是要初始化剩下的还没被初始化的硬件,主要是SOC外部硬件(譬如inand、网卡芯片)、uboot本身的一些东西(uboot的命令、环境变量等),然后最终初始化完必要的东西后进入uboot的命令行准备接受命令。uboot第二阶段完结于何处?uboot启动后自动运行打印出很多信息,这些信息就是uboot第一和第二阶段不断进行初始化时,打印出来的信息,...
2023-10-26 07:20:52
100
转载 uboot启动第一阶段
从链接脚本u-boot.lds中我们知道u-boot是从start.s这个汇编文件开始的,所以u-boot启动的第一阶段肯定也是从这里开始的,这个文件在cpu/arm_cortexa9/文件夹下,下面我们依照这个文件一步一步分析u-boot启动的第一阶段。#include <config.h>#include <version.h>#if defined(CONFIG_...
2023-10-25 08:02:54
55
转载 uboot Makefile解析
一、uboot的编译首先来回顾一下uboot如何编译。(1)设置临时环境变量export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-(2)指定板级配置,生成.config文件make xxx_defconfig(3)编译make -j8(4)清除构建make distclean接下来,我们分析uboot根目录下的顶层Makefile文件,来探讨这三条编译...
2023-10-24 08:04:02
378
转载 uboot基本概念
1. uboot概述U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的 开放源码项目。U-boot,是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,其主要作用为:==引导系统的启动!==目前,U-Boot不仅支持Linux系统的引导,还支持NetBSD, VxWorks, QN...
2023-10-23 08:03:00
191
转载 Linux定时任务详解
一、什么是Linux定时任务Linux定时任务是一种可执行的命令或者脚本,在特定的时间或者时间间隔下自动执行。通过在系统中预设一些需要执行的任务,可以让Linux定时任务自动执行并完成这些任务。定时任务可以用于自动备份、系统清理、监控、自动化维护等任务。在Linux中,常用的定时任务程序有系统自带的cron和at命令。其中,cron是一个强大的定时任务工具,可以按照设定的实际时间执行命令,非常常用...
2023-10-20 08:01:21
4440
转载 双网卡绑定-bond
下述操作均在centos7.6系统下测试1. 双网卡绑定的7种模式一般mode=0与mode=1比较常用,mode=6负载均衡方式两块网卡都工作,不需要交换机支持,常用。1.1 网卡负载均衡模式网卡负载均衡模式mode=0该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。特点:1.所有链路处于负载均衡状态,以轮询方式向每条链路发送报文,基于per ...
2023-10-19 08:00:39
735
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人