Welcome 微信登录

首页 / 操作系统 / Linux

ARM Linux基本数据类型综合应用实例

ARM Linux基本数据类型综合应用实例

本文章将带读者走进Linux内核,亲身感受一下这个优秀的操作系统Linux的具体搭建过程。其实读者可以看到,若将这一高楼大厦分解细分为砖瓦,那么每一部分其实也并不是那么难的。在Linux内核中,直接使用基本数据类型来构建的关键数据结构微乎其微,一般都是将基本数据类型组合起来,构成构造数据类型(如结构体等),来组成其关键的数据结构。本文就以Linux中内存管理中的物理页为例进行讲解。1、内存页管理机制内存把物理页作为内存管理的基本单位。尽管处理器的最小可寻址...
Linux内核中ioremap映射的透彻理解

Linux内核中ioremap映射的透彻理解

几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。 (2)内存映射方式(Me...
ARM Linux基本运算符综合实例

ARM Linux基本运算符综合实例

本文介绍页面管理的基础知识,并成语法角度对嵌入式Linux的内存管理进行详细的讲解。1、页映射机制要了解嵌入式Linux的页面映射机制,首先要了解嵌入式Linux的内存管理以及虚拟内存的基础知识。下面对其进行简单介绍。内存管理系统是操作系统中最为重要的部分,系统的物理内存总是少于系统所需要的内存数量,虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过各个进程之间共享内存而使系统看起来有多于实际内存的内存容量,虚拟内存提供以下功能:(1)广阔的地址...
ARM Linux选择语句应用实例

ARM Linux选择语句应用实例

1、区的基本概念由于硬件的限制,Linux内核并不能对所有页面都一视同仁。有些页面位于内存中特定的物理地址上,所以不能将其用于一些特定的任务。由于存在这种限制,所以内核把页划分为不同的区(zones)。内核使用区对其具有一些相似的特性页进行分组,Linux中把页面分成了3种。ZONE_DMA:这个区包含的页能用来执行DMA操作ZONE_NORMAL:这个区包含的都是正常映射的页ZONE_HIGHEM:这个区包含“高端内存”,其中的页并不能永久地映射到内核地...
用QtCreator做IDE开发非Qt的C/C++程序

用QtCreator做IDE开发非Qt的C/C++程序

在Windows还是习惯用VS2005但是现在到了Linux下,开发起来C/C++程序就没有那么得心应手的IDE了。虽然很多人推荐E开头那个主要作为Java开发的IDE,不过安上插件后感觉不大好,一个是那个智能完成功能反应有点迟钝,对标准库的支持不大好,另一个是编译起来还是麻烦,不能自动根据工程生成合适的makefile(或者是我没发现这个功能哈,一直用它的同志们不要笑我土)发掘了半天……发现一个Monkey IDE,用了一下,感觉用起来不大方便,也是用来...
mini2440 spi驱动总结

mini2440 spi驱动总结

最近在参考了很多的网络资源后编写调试了在mini2440开发板上的SPI驱动程序,因为急于使用也没有分析S3C2440在Linux下自带的源程序,编写程序的方式较为简单,只是实现了简单的字符发送和接收。主要是配置一些寄存器。这些寄存器的配置按照S3C2440手册的说明来进行设置,根据mini2440开发板只有SPI0可以使用,SPI1被按键使用了。采用GPE和GPG来进行控制。SPI 的编程步骤是当一个字节数据写入SPTDATn寄存器,如果ENSCK、SP...
Linux音频驱动之三:PCM设备的创建

Linux音频驱动之三:PCM设备的创建

1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续地输出、传输、处理或记录到存储介质中,所有这些组成了数字音频的产生过程。 图1.1 模拟...
Linux SA_RESTART的问题

Linux SA_RESTART的问题

信号是异步的,它会在程序的任何地方发生。由此程序正常的执行路径被打破,去执行信号处理函数。一般情况下 ,进程正在执行某个系统调用,那么在该系统调用返回前信号是不会被递送的。但慢速系统调用除外,如读写终端、网络、磁盘,以及wait和pause。这些系统调用都会返回-1,errno置为EINTR当系统调用被中断时,我们可以选择使用循环再次调用,或者设置重新启动该系统调用 (SA_RESTART)。 现在说说对上面话的理解: 我认为函数或进程的运行最终都回归结尾...
<< 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 >>