2013年10月9日

ARM-Linux S5PV210 UART驱动(4)----串口驱动初始化过程

摘要: 对于S5PV210 UART驱动来说,主要关心的就是drivers/serial下的samsung.c和s5pv210.c连个文件。由drivers/serial/Kconfig: config SERIAL_SAMSUNG depends on ARM && PLAT_SAMSUNG config SERIAL_S5PV210 depends on SERIAL_SAMSUNG && (CPU_S5PV210 || CPU_S5P6442) && SERIAL_SAMSUNG_CONSOLE可以看出模块的依赖关系,先加载samsung.ko,然 阅读全文

posted @ 2013-10-09 15:59 熊猫酒仙是也 阅读(2368) 评论(0) 推荐(0) 编辑

ARM-Linux S5PV210 UART驱动(3)----串口核心层、关键结构体、接口关系

摘要: 尽管一个特定的UART设备驱动完全可以按照tty驱动的设计方法来设计,即定义tty_driver并实现tty_operations其中的成员函数,但是Linux已经在文件serial_core.c中实现了UART设备的通用tty驱动层,称为串口核心层,这样,UART驱动的主要任务变成了实现serial_core.c中定义的一组uart_xxx接口而非tty_xxx接口。 uart设备是继tty_driver的又一层封装.实际上uart_driver就是对应tty_driver.在它的操作函数中,将操作转入uart_port.在写操作的时候,先将数据放入一个叫做circ_buf的环形缓... 阅读全文

posted @ 2013-10-09 15:57 熊猫酒仙是也 阅读(3679) 评论(0) 推荐(0) 编辑

ARM-Linux S5PV210 UART驱动(2)---- 终端设备驱动

摘要: 在Linux中,UART串口驱动完全遵循tty驱动的框架结构,但是进行了底层操作的再次封装,所以先介绍tty终端设备驱动。一、终端设备 1.串行端口终端(/dev/ttySACn) 2.伪终端(/dev/pty/) 3.控制台终端(/dev/ttyn,/dev/console)二、驱动结构 1.tty分层结构如下图所示: 包含tty核心、tty线路规程、tty驱动,其中tty规程的工作是以特殊的方式格式化从一个用户或者硬件接收到的数据,常采用一个协议转换的形式,如PPP、Bluetooth。 2.tty主要源文件关系及数据流向如下图:特定的tty设备驱动的主体工作是填充... 阅读全文

posted @ 2013-10-09 15:56 熊猫酒仙是也 阅读(1725) 评论(0) 推荐(1) 编辑

(转载)dump_stack的简单使用

摘要: 刚刚接触内核,在调试过程中用printk打印信息当然是直接有效的办法,但当我们不知到一个函数或者一个模块到底在哪里出了问题时我们可以利用dump_stack有效的找到问题的根源,下面只是简单的给出了使用方法。 我在自己的主机上试了一下dump_stack()Makefile文件点击(此处)折叠或打开obj-m:=hello.oKERNELBUILD:=/lib/modules/$(shell uname-r)/builddefault:make-C $(KERNELBUILD)M=$(shell pwd)modulesclean:rm-rf*.o*.ko*.mod.c.*.cmd*.marke 阅读全文

posted @ 2013-10-09 15:49 熊猫酒仙是也 阅读(264) 评论(0) 推荐(0) 编辑

(转载)Linux串口—struct termios结构体

摘要: 一、数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结 构包含了至少下列成员: tcflag_t c_iflag; /* 输入模式 */ tcflag_t c_oflag; /* 输出模式 */ tcflag_t c_cflag; /* 控制模式 */ tcflag_t c_lflag; /* 本地模式 */ cc_t c_cc[NCCS]; /* 控制字符 */ struct termios {unsigned short c_iflag; /* 输入模式标志*/ unsigned short c_oflag; /* 输出模式标志*/ unsigned 阅读全文

posted @ 2013-10-09 14:31 熊猫酒仙是也 阅读(455) 评论(0) 推荐(0) 编辑

(转载)深入理解Linux中内存管理---分段与分页简介

摘要: 首先,必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术。来回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的。换句话说,就是程序在运行的过程中访问的都是物理地址。如果这个系统只运行一个程序,那么只要这个程序所需的内存不要超过该机器的物理内存就不会出现问题,也就不需要考虑内存管理这个麻烦事了,反正就你一个程序,就这么点内存,吃不吃得饱那是你的事情了。然而现在的系统都是支持多任务,多进程的,这样CPU以及其他硬件的利用率会更高,这个时候就要考虑到将系统内有限的物理内存如何及时有效的分配给多个程序了,这个事情本身就称之为内存管理。下面举一个早期的计算机系统中,内存分配管理 阅读全文

posted @ 2013-10-09 13:27 熊猫酒仙是也 阅读(428) 评论(0) 推荐(1) 编辑

(转载)程序、进程、线程区别与联系

摘要: 定义: 一 程序只是一组指令的有序集合。 二 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位; 三 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程; 一 进程与线程区别与联系 (1) 划分尺度:线程更小,所以多线程程序并发性更高; (2) 资源分配&处理器调度:进程是资源分配的基本单位,线程是处理器调度的基本单位。 (3) 地址空间:进程拥有独立的地址空间;... 阅读全文

posted @ 2013-10-09 11:42 熊猫酒仙是也 阅读(145) 评论(0) 推荐(0) 编辑

导航