Linux kernel
sean-zhao
爱屋及乌
展开
-
分页内存管理
以32bit cpu 32bit system 为例只要记住一点无论几级页表,对于一个表项来说,占据4个字节,存储着的是下一级页表或者物理页对应的基地址。基地址 这三个字非常关键。0级页表存的是对应1级的基地址1对应22对应3一次类推然后,本级页表,简单理解就是比如定义一个unsigned int map_1[4096] 数组,在虚拟地址里取对应的页表项目偏移值,比如是个1024,。实际就是取的此数组map_1[1024]的值。map_1[1024]的值存的是什么呢,存的就是下一级页表存.原创 2022-04-26 20:24:01 · 175 阅读 · 0 评论 -
VFS: Mounted root (ext4 filesystem) readonly on device
从库存拿出一个刷好系统的核心板(imx6q)方案,系统启动后根本不能创建文件目录等。从网上搜索的结果,列出了几种可能性。1.文件系统的mount失败,内核自动以readonly mode 挂载2.内核配置不正确,不支持large file support3.内核配置不正确,不支持ext4。。。排查方法:针对上述列出的几种可能性,可排查的步骤有。1.可进行mount -o remount rw / ...原创 2018-07-03 16:30:45 · 4948 阅读 · 0 评论 -
Decode segfault errors in dmesg
You are writing a C program. Time has come to run it. You are pretty confident that it will run at once.$ ./fooSegmentation faultThe machine hardly reminds you that you were over-confident. Bu转载 2016-12-12 21:11:13 · 747 阅读 · 0 评论 -
ARM-LINUX的进程切换
本文主要记录S3C6410/ARM1176JZF-S架构下Linux(kernel 2.6.35)内核如何进行进程切换。进程切换是操作系统进程调度的基础,首先要能够实现切换,接下来才谈得上“多进程”、“多线程”以及调度算法等更高级的话题。(这里在说“进程切换”的时候提到多线程,并不是把概念搞混淆了。在内核里谈切换的时候,Linux并不区分进程与线程,因为这里只有task,一个进程里如果有多个线程,每转载 2016-09-08 17:56:18 · 2276 阅读 · 0 评论 -
Linux kernel-<armv7a-switch_to>
1.__switch_toFile:entry_v7m.S TI_CPU_SAVE 即上下文环境,在thread_info中cpu_context的偏移量/* * Register switch for ARMv7-M processors. * r0 = previous task_struct, r1 = previous thread_info, r2 = next thread_inf原创 2016-09-09 11:27:58 · 711 阅读 · 0 评论 -
Per-CPU variables
Per-CPU variablesPer-CPU variables are one of the kernel features. You can understand the meaning of this feature by reading its name. We can create a variable and each processor core will have its own转载 2016-09-09 18:22:20 · 460 阅读 · 0 评论 -
Linux Kernel-TI宏定义
//include/generated/asm-offsets.h#define TSK_ACTIVE_MM 420 /* offsetof(struct task_struct, active_mm) @ */#define TI_FLAGS 0 /* offsetof(struct thread_info, flags) @ */#define TI_IPIPE 528 /* off原创 2016-09-09 10:36:13 · 741 阅读 · 0 评论 -
kernel 3.18,mcp2515 implemented in AT91SAM9G25
mcp2515的嵌入式linux的用例,网上的资料基本都是应用到比较老的内核。步骤基本无异。本文的内容,是基于dts配置的设备支持;需要做的工作主要有两部分;dts的构建和代码的少量修改。1.硬件连接: 外设------iso1050-----mcp2515----cpucpu与mcp2515之间采用spi通信方式,利用的cpu的spi0接口,片上的spi0。2.dts的编写原创 2016-05-12 09:55:43 · 2044 阅读 · 0 评论 -
DMA Engine API Guide
DMA Engine API Guide====================Vinod Koul NOTE: For DMA Engine usage in async_tx please see:Documentation/crypto/async-tx-api.txtBelow is a guide to device driver wr翻译 2015-12-09 13:46:05 · 2412 阅读 · 0 评论 -
ioctl 变成了 unlocked_ioctl
kernel 2.6.35 及之前的版本中struct file_operations 一共有3个ioctl :ioctl,unlocked_ioctl和compat_ioctl现在只有unlocked_ioctl和compat_ioctl 了在kernel 2.6.36 中已经完全删除了struct file_operations 中的ioctl 函数指针,取而代之的转载 2015-09-22 16:07:47 · 599 阅读 · 0 评论 -
Stack backtrace
Stack backtrace 的实现Stack backtrace栈回溯是指程序运行时打印出当前的调用栈。在程序调试、 运行异常时栈回溯显得非常有用。那栈回溯是如何实现的呢?栈回溯的实现依赖编译器的特性,与特定的平台相关。以linux内核实现arm栈回溯为例, 通过向gcc传递选项-mapcs或-funwind-tables,可选择APCS或unwind的任一方 式实现栈回溯转载 2015-09-18 16:04:33 · 2291 阅读 · 0 评论 -
Linux TTY驱动--Uart_driver底层
Linux 中将串口驱动进行了分层,如图:本节讲解与底层硬件密切相关的层,以S3C2440为例剖析: 实现文件有:/drivers/serial/samsung.c /drivers/serial/samsung.h /drivers/serial/s3c2440.c (kernel 2.6.28),Serial Core层在/drivers/se转载 2015-06-08 20:49:06 · 1089 阅读 · 0 评论 -
Linux TTY驱动--Uart_driver底层
原文地址:http://blog.csdn.net/sharecode/article/details/9197567接上一节:Linux TTY驱动--Uart_driver底层一. 为了给USB-Serial类型的串口打基础(USB-Serial和Serial Core一样,构造了一个tty_driver和tty_operations,叫做usb-serial层),这里仔细转载 2015-06-08 21:31:48 · 713 阅读 · 0 评论 -
linux serial构架分析及驱动开发(6)
//原文地址:http://blog.csdn.net/sirzjp/article/details/6170687 这一节分析串口核心中对写操作的处理,从用户空间调用write系统调用开始,首先执行tty_write函数,在该函数中执行do_tty_write,将用户空间的数据复制到tty->write_buf中,然后调用线路规程中的写函数即write_chain,最后wri转载 2015-06-05 16:20:59 · 645 阅读 · 0 评论 -
linux serial构架分析及驱动开发(3)
原文地址:http://blog.csdn.net/sirzjp/article/details/6164694这一节我们将介绍一个serial驱动的实例,后面各节中也将以这个例子来分析串口各种操作的实际情景(例子是at91sam9260板子的串口驱动)。 该驱动将串口看作平台(platform)设备。platform可以看作一伪总线,用于将集成于片上系统的轻转载 2015-06-05 16:19:19 · 627 阅读 · 0 评论 -
linux serial架构分析及驱动开发(1)
原文:http://blog.csdn.net/sirzjp/article/details/6162393前面介绍了tty核心分析及tty驱动开发的方法,tty设备包括串口、终端、伪终端三大类,其中终端和伪终端驱动内核都帮我们实现好了,很少需要改动。因此我们主要介绍串口驱动的开发及其在内核中的构架(其核心实现源码主要在/drivers/serial_core.c中),这一节中我们主要转载 2015-06-05 16:14:25 · 690 阅读 · 0 评论 -
linux serial构架分析及驱动开发(2)
原文地址:http://blog.csdn.net/sirzjp/article/details/6163429上节介绍了serial驱动核心提供的重要数据结构,这一节将介绍serial核心提供给驱动开发的核心函数uart_register_driver向内核注册serial驱动(具体操作就是向内核注册一个tty_driver)以及uart_unregister_driver注销seria转载 2015-06-05 16:17:26 · 635 阅读 · 0 评论 -
linux serial构架分析及驱动开发(4)
原文地址:http://blog.csdn.net/sirzjp/article/details/6169984在uart_register_driver函数中有这样的一个函数:tty_set_operations(normal,&uart_ops),这个uart_ops就是tty_operations函数集,这里是串口操作的公用函数接口,本节及后面章节将结合串口操作的流程,来转载 2015-06-05 16:20:13 · 424 阅读 · 0 评论 -
linux serial构架分析及驱动开发(5)
//原文地址:http://blog.csdn.net/sirzjp/article/details/6170596uart_close主要在tty_release和do_tty_hundup中调用,做与uart_pen相反的操作,具体源码如下:/* * In 2.4.5, calls to this will be serialized via the BKL i转载 2015-06-05 16:21:19 · 505 阅读 · 0 评论