
Linux
圣骑士笑笑
指点天下
展开
-
自旋锁
1. 自旋锁的的使用自旋锁(Spin Lock)是一种典型的对临界资源进行互斥访问的手段,其名称来源于它的工作方式。为了获得一个自旋锁,在某个CPU上运行的代码需要先执行一个原子操作, 该操作测试并设置(Test-And-Set)某个内存变量。 由于它是原子操作, 所以再该操作完成之前其他执行单位不可能访问这个内存变量。 如果测试结果表明锁已经空闲, 则程序获得这个自旋锁并继续执行;如果测试结...原创 2020-04-23 15:17:22 · 323 阅读 · 0 评论 -
Ubuntu 18 内存swap不够的完美优化方案---实测有效
在编译时遇到out of memory allocating 的完美解决方案Ubuntu 18 修改swap分区大小1、查看初始状态查看原先swap大小root@kevinl:~# free -h原先swap文件位置root@kevinl:~# swapon -s2、创建一个新的swap文件一般swap分区要大于或等于物理内存(1-1.5倍),最大一般有20G即...原创 2020-04-08 14:17:41 · 1214 阅读 · 0 评论 -
Linux的文件操作
1. 文件操作系统的调用Linux的文件操作系统调用(在Windows编程领域,操作系统提供的接口称为 API)涉及创建(create)、打开(open)、读写(read/write)和关闭(close)文件。1.1 创建int creat(const char *filename, mode_t mode)参数mode指定新建文件的存取属性, 它和umask一起决定了文件的最终...原创 2020-03-03 19:38:53 · 141 阅读 · 0 评论 -
Linux编码风格
Linux 有独特的编码风格,在内核源代码下存在一个文件Documentation/CodingStyle,进行了比较详细的描述。Linux 程序的命名习惯和Windows 程序的命名习惯及著名的匈牙利命名法有很大的不同。在Windows 程序中,习惯以如下方式命名宏、变量和函数:#define PI 3.1415 // 用大写字母代表宏int minValue,...原创 2020-02-25 15:42:27 · 256 阅读 · 0 评论 -
Linux内核的引导
引导Linux 系统的过程包括很多阶段。一般的SoC 内嵌入了bootrom,上电时bootrom 运行。对于CPU0 而言,bootrom 会去引导bootloader,而其他CPU 则判断自己是不是CPU0,进入WFI 的状态等待CPU0 来唤醒它。CPU0 引导bootloader,bootloader 引导Linux 内核,在内核启动阶段,CPU0 会发中断唤醒CPU1,之后CPU0 和C...原创 2020-02-25 11:26:21 · 399 阅读 · 0 评论 -
Linux内核的编译及加载
1. Linux内核的编译Linux 驱动开发者需要牢固地掌握Linux 内核的编译方法以为嵌入式系统构建可运行的Linux 操作系统映像。在编译内核时,需要配置内核,可以使用下面命令中的一个:#make config (基于文本的最为传统的配置界面,不推荐使用)#make menuconfig (基于文本菜单的配置界面, 推荐使用)#make xconfig (要求QT被安装)...原创 2020-02-24 13:15:49 · 542 阅读 · 0 评论 -
Linux 内核的组成
1.1Linux 内核源代码的目录结构Linux 内核源代码包含如下目录。● arch :包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如 i386、arm、arm64、powerpc、mips 等。Linux 内核目前已经支持30 种左右的体系结构。在arch目录下,存放的是各个平台以及各个平台的芯片对Linux 内核进程调度、内存管理、中断等的支持,以及每个具体的SoC 和...原创 2020-02-21 15:22:07 · 243 阅读 · 0 评论 -
Linux 内核的演变及新版Linux 内核的特点
Linux 操作系统是UNIX 操作系统的一种克隆系统,是一种类UNIX 操作系统,诞生于1991 年10 月5 日(第一次正式向外公布的时间),起初的作者是Linus Torvalds。Linux 操作系统的诞生、发展和成长过程依赖着5 个重要支柱:UNIX 操作系统、Minix 操作系统、GNU 计划、POSIX 标准和Internet。1. UNIX 操作系统UNIX 操作系统是美国...原创 2020-02-20 16:18:50 · 475 阅读 · 0 评论 -
驱动设计的硬件基础
本篇内容讲述底层驱动工程师必备的硬件基础,给出了嵌入式系统硬件原理及分析方法的一个完整而简洁的全景视图。第一节描述了微控制器、微处理器、数字信号处理器以及应用于特定领域的处理器各自的特点,分析了处理器的体系结构和指令集。第二节对嵌入系统中使用的各类存储器与CPU的接口、应用领域及特点进行了归纳整理。第三节分析了常见的外设接口与总线的工作方式,包括串口、I2C、SPI、USB、以太网接口...原创 2020-02-20 16:06:25 · 874 阅读 · 0 评论 -
Linux 设备驱动概述及开发环境构建 (一)
目录本章导读1.1 设备驱动的作用1.2 无操作系统时的设备驱动1.3 有操作系统时的设备驱动1.4 Linux设备驱动本章导读本章将介绍Linux设备驱动开发的基本概念, 并对所有相关内容所基于的平台和开发环境进行讲解。1.1节阐明设备驱动的概念和作用。1.2节和1.3节分别讲解在无操作系统情况下和有操作系统情况下设备驱动的设计, 通过对设计差异的分析,...原创 2020-02-11 14:14:53 · 417 阅读 · 0 评论 -
Linux Kernel log 定义
#define FP_DEBUG#ifdef FP_DEBUG#define egislog_a(fmt,args...) printk(KERN_ALERT "[][ALERT]: %s: Line %d: " fmt, __FUNCTION__,__LINE__,## args)#define egislog_d(fmt,args...) printk(KERN_DEBUG "[][DE...原创 2018-11-29 09:11:00 · 1430 阅读 · 0 评论