- 博客(25)
- 资源 (2)
- 收藏
- 关注
原创 Linux TTY初始化
Linux TTY分类主要包括控制台、串口终端、伪终端,控制台再详细划分,可分为:当前控制台、虚拟控制台、系统控制台三种,TTY分类这么复杂,那么它是如何初始化的呢?
2023-05-31 08:32:56
402
原创 Linux TTY 子系统框架
在用户空间,我们操作TTY的方法就是通过系统调用open,read,write读写设备文件,如:/dev/tty、/dev/console等。:线路规程,以特殊的方式对数据进行二次加工,通常表现为协议的转换,对传输数据的格式化,以便可以虚拟的“插入”到任何tty设备。:以字符设备驱动的形式,向应用程序提供统一接口open, read, write,以便输入输出数据。位于标准字符驱动之下,其中包括:TTY核心层,TTY线路规程,TTY驱动层。:是对整个tty设备的抽象,对用户提供统一的接口。
2023-05-28 11:59:06
334
原创 Linux TTY基本概念之ttys*、tty*、ttyS*、console理解
echo "abc" > /dev/console 输出到系统控制台(console=ttyS0,表示系统控制台是串口)echo "abc" > /dev/tty 和下面的相等echo "abc" > `tty` 输出到本控制台 (tty命令就是输出本控制台)给 tty driver 分配字符设备,设置字符设备的文件操作函数指针指向,后者的写函数为只是做一些检查,保证 line discipline 的写函数需要的组件可用,真正的操作由调用完成。
2023-05-18 20:13:02
5254
原创 深入理解Linux文件系统之VFS
“一切皆文件”,文件系统是linux系统的基础,Linux内核通过虚拟文件系统(Virtual File System, VFS)管理文件系统,VFS为所有的文件系统提供了统一的接口,对每个具体文件系统的访问要通过VFS定义的接口来实现,VFS既是向下的接口(所有文件系统都必须实现该接口),同时也是向上的接口(用户进程通过系统调用最终能够访问文件系统功能)。
2022-10-17 07:57:23
1129
原创 linux proc/pid/stat解析
proc/pid/stat用于获取某一个进程的统计信息,实现过程见fs/proc/array.c的do_task_stat()1. stat数据$ adb shell cat /proc/8385/stat1557 (system_server) S 823 823 0 0 -1 1077952832 //1~92085481 15248 2003 27 166114 129684 26 30 //10~1710 -10 221 0 2284 2790821888 93087 184467
2021-02-24 15:58:10
6873
原创 linux 内核module_platform_driver解析
该函数实际是一个宏,module_platform_driver在include/linux/platform_device.h中定义如下:/* module_platform_driver() - Helper macro for drivers that don't do* anything special in module init/exit. This eliminates a lot of* boilerplate. Each module may only use this...
2021-02-24 15:41:57
611
转载 #pragma once用法总结
1.#pragmaonce这个宏有什么作用?为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。2.两者的使用方式有何区别?示例代码如下:复制代码//方式一:#ifndef__SOMEFILE_H__#define __SOMEFILE_H__... ... // 声明、定义语句#e...
2021-02-23 11:49:32
1361
原创 makefile函数使用说明
+=的含义显而易见,将右值增加到左边的变量基础上。空格是自动添加的。=的含义是在右值在遍历整个Makefile,完全展开后再赋值给左边的变量。?=的含义是如果左值未被赋值过,则将右值赋值给它,可见这里y不会再被赋值一次。:=的含义是将右值当前的值赋值给左值,不会遍历Makefile获取右值的最终值。KaTeX parse error: Expected 'EOF', got '#' at position 42: …T中的东西从FROM变为TO#̲(findstring , )#功能:在字串中查
2021-01-24 20:47:23
561
原创 arm linux4.9内核内存布局
ARM32 linux内核启动打印Linux内核在启动时会打印出内核内存空间的布局图,下面是ARM Vexpress平台打印出来的内存空间布局图:Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xf0800000 - 0xff800000 ( 240 MB)
2020-07-31 08:24:08
1074
原创 arm linux内核建立临时页表(head.S文件分析)
简介linux内核是通过MMU来管理内存的,MMU其中的一个功能就是把虚拟地址转换为物理地址,但是linux在启动过程中,MMU未打开之前,代码的执行都是在物理地址空间的,那么怎么才能实现物理地址到虚拟地址空间的切换是本文的重点。swapper_pg_dir定义#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)#if (KERNEL_RAM_VADDR & 0xffff) != 0x8000#error KERNEL_RAM_VADDR
2020-07-12 18:04:14
675
原创 ubuntu 编译时出现/bin/sh: 1: pushd: not found的问题
问题:在编译Makefile的时候,Makefile会使用脚本命令,调用pushd或者popd命令出现找不到的问题,错误打印如下:/bin/sh: 1: pushd: not found原因:从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell),但Login Shell还是bash,原因是dash更快、更高效,而且它符合POSIX规范,Ubuntu在启动的时候会运行很多shell脚本,
2020-07-05 19:52:31
3413
原创 ubuntu18.04 qemu 模拟器安装
QEMU安装qemu软件安装最好通过下载源码的方式去安装,如果使用ubuntu的apt-get install命令去安装,会依赖ubuntu的版本,安装出来的qemu的版本比较老。下载qemu源码qemu官网源码下载或者通过命令:wget https://download.qemu.org/qemu-5.0.0.tar.xz依赖包在编译安装过程中可能会依赖一些软件包,可以在安装过程遇到错误,一个一个解决,也可以一次性安装依赖包,提高编译安装效率。sudo apt-get install g
2020-07-05 12:10:40
4411
2
原创 Linux spinlock自旋锁原理深度剖析(基于ARM32/64 )
自旋锁的概念自旋锁(spin lock)是一种典型的对临界资源进行互斥访问的手段,自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图获得一个被已经持有(争用)的自旋锁,那么该线程就会一直进行忙循环-旋转-等待锁重新可用,要是锁未被争用,请求锁的执行线程就可以立即得到它,继续执行。自旋锁相关操作定义自旋锁spinlock_t lock;初始化自旋锁spin_lock_init(lock);获得自旋锁spin_lock(lock);该宏用于获得自旋锁lock,如果能够立即获得锁,它就马
2020-06-21 16:15:26
2963
3
原创 linux 并发与静态
概念并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(Race Conditions)。发生条件主要的竞态发生在以下条件:图中每一种颜色代表一种竞态情况,主要归结为三类:进程与进程之间:单核上的抢占,多核上的SMP;进程与中断之间:中断又包含了上半部与下半部,以及硬中断、软中断、Tasklet,中断总是能打断进程的执行流;中断与中断之间:外设的中断可以路由到不同的CPU上,它们之间也
2020-06-14 22:13:27
161
原创 AliOS Things bitmap位图实现
位图算法定义位图法就是bitmap的缩写,所谓bitmap,是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况,通常是用来判断某个数据存不存在的。这种算法在操作系统内核(Linux和RTThread等)源码中会经常看到,所有很有必要去研究下这种算法,这样可以有助于阅读和分析内核源码。位图其实是用数组实现的,数组的每一个元素的每一个二进制位都可以表示一个数据在或者不在,0表示数据存在,1表示数据不存在。因为比特位只有两种状态,要不是0,要不就是1,所以位图其实就是一种直接定址法的哈希,
2020-06-03 08:20:58
859
转载 文件查找命令find:
http://www.cnblogs.com/mchina/archive/2012/07/02/2573313.html 下面给出find命令的主要应用示例: /> ls -l #列出当前目录下所包含的测试文件 -rw-r--r--. 1 root root 48217 Nov 12 00:57 install.log -rw-r--r--. 1 r
2015-08-18 14:22:52
428
转载 求子数组的最大和
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。int maxSubarray(int a[], int size) { if (siz
2015-07-26 10:45:32
390
原创 链表A + B
有两个用链表表示的整数,每个节点包含一个数位,这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结构。* 链表通用数据结构list.h#ifndef _LIST_H_#define _LIST_H_#include #include typedef struct Node_{ int data; struct Node_
2015-07-24 08:43:16
581
转载 Ubuntu13.04安装配置 tftp 服务方法
引自:http://www.coico.co/archives/23.htmlTFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,基于UDP协议提供不复杂、开销不大的文件传输服务,端口号为69。在嵌入式Linux系统中,TFTP服务器作为工作于宿主机上的软件,主要是对目标机提供
2015-05-09 18:40:01
439
转载 Ubuntu 设置环境变量
在 Ubuntu 系统中有两种设置环境变量 PATH 的方法。第一种适用于为单一用户设置 PATH,第二种是为全局设置 PATH。 第一种方法: 在用户主目录下有一个 .bashrc 文件,可以在此文件中加入 PATH 的设置如下: export PATH=”$PATH:/your path1/:/your path2/…..” 注意:每一个 path 之间要用 “:“ 分隔。
2015-05-05 16:32:04
419
转载 undefined reference to `__aeabi_unwind_cpp_pr0' 问题解决办法
main.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'gpio.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'pmc.o:(.ARM.exidx+0x0): undefined reference to `__ae
2015-05-05 16:29:14
1498
转载 Ubuntu下搭建TQ2440的程序下载dnw环境
首先要安装libusb-dev这个库,sudo apt-get install libusb-dev/* dnw2 linux main file. This depends on libusb.** Author: Fox * License: GPL**/#include #include #include #include #i
2015-05-05 16:19:14
376
转载 怎么把UltraEdit添加到右键菜单
按Win+R,打开运行窗口,输入regedit,点确定。在左侧打开HKEY_CLASSES_ROOT\*\shell,在shell上右键新建项。项文件夹命名为ultraedit同理,在ultraedit上右键,新建一个叫command的项。
2015-05-04 18:09:56
1201
原创 Ubuntu安装QT
1.在虚拟VMware安装Ubuntu操作系统,安装完后,进行源更新和更换源,否则的话会出现这样的错误1.到官网http://www.qt-project.org/downloads下载QT源码包
2015-05-04 07:54:58
455
实验项目技术报告-减速电机测控系统设计
2012-10-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人