
内核
sunshineywz
这个作者很懒,什么都没留下…
展开
-
linux内核部件分析(一)——连通世界的list
在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。 struct list_head { struct list_head *next, *prev; }; 这是链表的元素结构。因为是循环链表,表头和表中节点都是这一结构。有pr...原创 2020-07-14 09:04:43 · 174 阅读 · 0 评论 -
如何定制Linux外围文件系统?
一般来说,我们所说的Linux系统指的是各种基于Linux Kernel和GNU Project的操作系统发行版。为了掌握Linux操作系统的使用,了解 Linux操作系统的运作过程,理解内核与外围支撑系统的关系,加深对开源操作系统的认识,我决定造个轮子——自己定制一个Linux文件系统。这里有两种实现方法:直接自己实现init(M1)加载bios 的硬件信息-> 读取MBR –>执行Grub ->加载kernel–> 加载驱动–> init –> 执行bash原创 2020-06-18 19:32:09 · 252 阅读 · 0 评论 -
ubuntu中swap(虚拟内存)设置
添加swap用free查看swap分区大小free -m创建一个swap文件夹mkdir swapcd swapsudo dd if=/dev/zero of=swapfile bs=1024 count=100000其中count的大小对应swap的大小,如上述代码所示count=100000为大约100M注:设置count值时要注意,如果设置swap大小超过硬盘大小,会导致设置完重启后,虚拟机ubuntu的图形界面进不去把生成的文件转换成swap文件mkswap swapfile原创 2020-06-18 19:31:48 · 706 阅读 · 0 评论 -
挂载根文件系统
1、制作根文件系统Linux中就有制作根文件系统的工具,mke2fs.只需要找到一个目录,然后依次执行下面的命令就行dd if=/dev/zero of=rootfs.ext2 bs=1024 count=2048losetup /dev/loop1 rootfs.ext2mke2fs -m 0 /dev/loop1 2048 mount -t ext2 /dev/loop1 ./rootfs/原创 2020-06-18 19:31:16 · 1207 阅读 · 1 评论 -
嵌入式linux调试
https://www.cnblogs.com/bangerlee/archive/2012/08/30/2659435.htmlhttps://www.cnblogs.com/xuanbjut/p/11884248.html原创 2019-07-10 22:03:29 · 443 阅读 · 0 评论 -
linux内核将新驱动添加到menuconfig菜单
原创 2019-06-25 19:07:43 · 206 阅读 · 0 评论 -
Linuxc - 关于Linux的应用层定时器
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用 Linux 内部的三个定时器;另一个是用 sleep 或 usleep 函数让进程睡眠一段时间;其实,还有一个方法,那就是用 gettimeofday、difftime 等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。1、alarm如果不要求很精确的话,用 alarm() 和 signal() 就够了unsigned int原创 2020-06-13 10:07:24 · 246 阅读 · 0 评论 -
第3阶段——内核启动分析之内核编译试验(1)
目标:1.给内核打补丁1.1 通过FTP将Windows里system目录下linux-2.6.22.6.tar.bz2和linux-2.6.22.6_jz2440.patch文件拷贝到linux里/work/system下1.2 使用 tar xjf linux-2.6.22.6.tar.bz2 命令解压linux-2.6.22.6.tar.bz2(tar命令详细介绍入口链接http://www.cnblogs.com/lifexy/p/7009245.html)1.3 进入linux原创 2020-06-13 10:06:04 · 238 阅读 · 0 评论 -
linux/fs/open.c 程序
1 /*2 * linux/fs/open.c3 *4 * (C) 1991 Linus Torvalds5 */67 #include <string.h> // 字符串头文件。主要定义了一些有关字符串操作的嵌入函数。8 #include <errno.h> // 错误号头文件。包含系统中各种出错号。 (Linus 从 minix 中引进的)。9 #inc...原创 2020-06-03 19:39:59 · 554 阅读 · 0 评论 -
Linux 调试调优技术
这一节我们一起看下工作中常常使用的调试技巧。调试是软件开发过程中必不可少的环节,对于嵌入式开发者来讲很多工作都是体现在调试上,有句话讲“程序不是写出来的,好程序是调出来的”,一点都不夸张。纵观来看调试可以分为硬件断点调试和软件断点调试。硬件调试需要 CPU 的支持,CPU 内部提供了两组寄存器用来存储设置的断点,但是这种场景决定于内部硬件设计与调试器和其他调试工具无关。本 Chat 主要讲软...原创 2020-03-18 08:25:43 · 307 阅读 · 0 评论 -
执行dup后的内核数据结构
原创 2020-02-21 09:49:25 · 207 阅读 · 0 评论 -
两个独立进程各自打开同一个文件
原创 2020-02-21 09:49:00 · 597 阅读 · 0 评论 -
Ptrace 详解
Ptrace 详解引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录进程所执行的系统调用,它是如何跟踪到进程执行的?3.gdb是我们调试程序的利器,可以设置断点,单步跟踪程序。它的实现原理又是什么?...原创 2019-10-30 16:27:12 · 2228 阅读 · 0 评论 -
设备树代码分析
本文主要内容:以Device Tree相关的数据流分析为索引,对ARM linux kernel的代码进行解析。主要的数据流包括:1、初始化流程。也就是扫描dtb并将其转换成Device Tree Structure。2、传递运行时参数传递以及platform的识别流程分析3、如何将Device Tree Structure并入linux kernel的设备驱动模型。注:本文中的linux...原创 2019-10-29 14:10:00 · 666 阅读 · 0 评论 -
Linux 总线、设备、驱动模型的探究
那么在 GITCHAT 的驱动里需要定义 GITCHAT 的基地址、中断号等信息。假设 GITCHAT 的地址为0x0001,中断号是 2,那么:#define GITCHAT_BASE 0x0001#define GITCHAT_INTERRUPT 2int gitchat_send(){ writel(GITCHAT_BASE + REG, 1); ...}in...原创 2019-10-29 14:09:08 · 288 阅读 · 0 评论 -
红黑树
DTX:case 2我看代码假设哈进入循环之后node指向ntmp指向n的左子树(虽然么得)把tmp存在p的右指数去(虽然是空)把p存到n的左子树去然后有tmp就改成黑色颜色 因为是叶子 没有就继续把parent也改成红色 如果左右儿子都有的话augment_rotation应该是让parent指向node然后parent再指向node(node已经是parent了)tmp...原创 2019-10-29 11:46:32 · 128 阅读 · 0 评论 -
dentry
struct dentry { /* RCU lookup touched fields */ unsigned int d_flags; /* protected by d_lock */ seqcount_t d_seq; /* per dentry seqlock */ struct hlist_bl_node d_hash; /* lookup hash list */ st...原创 2019-10-29 11:45:55 · 210 阅读 · 0 评论 -
fs_struct
fs_structstruct fs_struct { int users; spinlock_t lock; seqcount_t seq; int umask; int in_exec; struct path root, pwd;} __randomize_layout;pathstruct path { struct vfsmount *mnt; struct d...原创 2019-10-29 11:45:28 · 627 阅读 · 0 评论 -
VFS
VFS是Linux非常核心的一个概念,linux下的大部分操作都要用到VFS的相关功能。这里从使用者的角度,对VFS进行了简单说明。使用者不但需要知道Linux下有哪些文件操作的函数,还需要对VFS的结构有一个比较清晰的了解,才能更好的使用它。例如hard link 与symbolic,如果没有VFS结构的相了解,就无法搞清楚如何使用它们。本文首先是建立了一个简单的目录模型,然后介绍该目录在VF...原创 2019-10-29 11:45:03 · 2036 阅读 · 0 评论 -
文件系统和裸块设备的page cache问题
文件系统读取文件一般会使用do_generic_file_read(),mapping指向普通文件的address space。如果一个文件的某一块不在page cache中,在find_get_page函数中会创建一个page,并将这个page根据index插入到这个普通文件的address space中。static ssize_t do_generic_file_read(struct f...原创 2019-10-29 11:44:33 · 315 阅读 · 0 评论 -
bio
bio_vecstruct bio_vec { struct page *bv_page; unsigned int bv_len; unsigned int bv_offset;};biostruct bio { struct bio *bi_next; /* request queue lin...原创 2019-10-29 11:44:07 · 220 阅读 · 0 评论 -
Linux 内核红黑树分析
Linux 内核红黑树分析原创: 格子森 嵌入式Linux 前天Android binder 内核实现是用红黑树的,理解红黑树我觉得是每一个Linux er的重中之重,感谢格子森同学的投稿,周末愉快。内核版本为 linux4.2.1 本文主要从红黑树的代码实现入手,来讨论linux内核中是如何实现红黑树的(主要是插入和删除操作),其中涉及到的函数有三个__rb_insert __rb_e...原创 2019-10-26 18:56:24 · 515 阅读 · 0 评论 -
在内核中创建 uImage 的方法
在内核中创建 uImage 的方法2.2.1 获取 mkimage 工具2.6 内核树的 Makefile 提供了创建 uImage 的方法,但需要我们提供相应的 mkimage 命令。所以首先拷贝 uboot 中 tools 目录下编译后生成的 mkimage 到/usr/bin/下,然后便可以在内核根目录下通过make uImage来创建 uImage 文件。该文件生成在 arch/ar...原创 2019-09-28 18:54:21 · 664 阅读 · 0 评论 -
创建 linuxrc 文件
创建 linuxrc 文件[arm@localhost my_rootfs]#vi linuxrc#!/bin/sh #挂载/etc 为 ramfs, 并从/mnt/etc 下拷贝文件到/etc 目录当中echo "mount /etc as ramfs"/bin/mount -n -t ramfs ramfs /etc/bin/cp -a /mnt/etc/* /etcech...原创 2019-09-28 18:54:41 · 426 阅读 · 0 评论 -
配置 Busybox
配置 Busybox[arm@localhost busybox1.1.3]$ make menuconfigBusybox Settings > General Configuration > [*] Support for devfs Build Options > [*] Build BusyBox as a static binary ...原创 2019-09-28 18:55:21 · 714 阅读 · 0 评论 -
linux kernel map
https://makelinux.github.io/kernel/map/原创 2019-07-27 07:02:49 · 183 阅读 · 0 评论 -
Linux 下 cs8900a 的移植说明
Linux 下 cs8900a 的移植说明为 cs8900a 建立编译菜单1. 拷贝到文件把 cs8900a 的压缩包拷贝到 arm 用户下的 dev_home/localapps/[arm@localhost localapps]$ tar xzvf cs8900a.tar.gz[arm@localhost localapps]$cd cs8900a[arm@localhost cs...原创 2019-09-28 16:35:58 · 230 阅读 · 0 评论 -
配置内核产生.config 文件
为了我们的内核支持 devfs 以及在启动时并在/sbin/init 运行之前能自动挂载/dev 为 devfs 文件系统,修改fs/Kconfig 文件[arm@localhost linux2.6.14]$ vi fs/Kconfig找到 menu “Pseudo filesystems”添加如下语句:config DEVFS_FS bool "/dev file system ...原创 2019-09-28 16:35:39 · 1183 阅读 · 0 评论 -
u-boot 体系结构
board:和一些已有开发板有关的文件. 每一个开发板都以一个子目录出现在当前目录中,比如说:SMDK2410,子目录中存放与开发板相关的配置文件common:实现 u-boot 命令行下支持的命令,每一条命令都对应一个文件。例如 bootm 命令对应就是cmd_bootm.c。cpu:与特定 CPU 架构相关目录,每一款 U-boot 下支持的 CPU 在该目录下对应一个子目录,比如有子...原创 2019-09-28 16:35:22 · 517 阅读 · 0 评论 -
rootfs
原创 2019-07-06 22:42:32 · 842 阅读 · 0 评论 -
Linux内核3.0.54移植
原创 2019-06-25 14:19:57 · 178 阅读 · 0 评论 -
linux storage io stack
原创 2019-07-24 08:19:26 · 255 阅读 · 0 评论 -
linux storage stack digram
原创 2019-07-24 08:20:06 · 226 阅读 · 0 评论 -
read系统调用原理
原创 2019-07-29 08:43:45 · 434 阅读 · 0 评论 -
程序装载过程
启动过程的汇编部分当系统启动时, ARM CPU 会跳到 0x00000000 去执行。一般 BootLoader 都包括如下几个部分:建立中断向量异常表显示的切换到 SVC 且 32 指令模式关闭 S3C2410 的内部看门狗禁止所有的中断配置系统时钟频率和总线频率设置内存区的控制寄存器初始化中断安装中断向表量把可执行文件的各个段搬到运行态的各个位置跳到 C 代码部分执行...原创 2019-09-28 16:35:03 · 708 阅读 · 0 评论 -
Linux 对 Nand Flash 的支持
4 在 Linux 对 Nand Flash 的支持4.1 Linux 下 Nand Flash 调用关系4.1.1 Nand Flash 设备添加时数据结构包含关系struct mtd_partition partition_info[]--> struct s3c2410_nand_set nandset--> struct s3c2410_platform_nand sup...原创 2019-09-28 16:34:44 · 532 阅读 · 0 评论 -
Linux内核源代码的结构
原创 2019-05-11 23:09:03 · 1520 阅读 · 0 评论 -
linux初始化
原创 2019-09-28 07:59:33 · 202 阅读 · 0 评论 -
U-Boot 分析与移植
原创 2019-05-18 11:35:34 · 168 阅读 · 0 评论 -
cat proc meminfo
原创 2019-08-07 08:30:16 · 189 阅读 · 0 评论