1框架总体设计从输入设备框架的需求可知,内核的整个输入流程应该分为下层的各种输入设备和上层与用户的控制信息交互两个方面。从图6-1可见,输入设备系统框架的核心部分从底到上分为input driver,input core和event handler三个部分。应用层则要根据输入设备的事件进行相应的操作,为了给应用层统一的接口,输入设备框架对于输入事件进行了规范。......
2023-11-22
ARM内核的体系架构到目前为止有V1~V7共7个版本,具体如表2-1所示。
表2-1 ARM内核采用的体系结构
1.V1版本
该版架构只在原型机ARM1上出现过,只有26位的寻址空间,没有用于商业产品。其基本性能有:
●基本的数据处理指令(无乘法)。
●基于字节、半字和字的Load/Store指令。
●转移指令,包括子程序调用及链接指令。
●供操作系统使用的软件中断指令SWI。
●寻址空间:64 MB。
2.V2版本
该版架构对V1版本进行了扩展,例如ARM2和ARM3(V2a)架构。包含了对32位乘法指令和协处理器指令的支持。版本V2a是版本V2的变种,ARM3芯片采用了版本V2a,是第一片采用片上Cache的ARM处理器。同样为26位寻址空间,现在已经废弃不再使用。V2版本的架构与版本V1相比,增加了以下功能:
●乘法和乘加指令。
●支持协处理器操作指令。
●快速中断模式。
●SWP/SWPB的最基本存储器与寄存器交换指令。
●寻址空间:64MB。
3.V3版本
ARM作为独立的公司,在1990年设计的第一个微处理器采用的是版本V3的ARM6。它作为IP核独立的处理器,具有片上高速缓存、MMU和写缓冲的集成CPU。变种版本有V3G和V3M。版本V3G是不与版本V2a之前的版本兼容的,版本V3M引入了有符号和无符号数乘法和乘加指令,这些指令产生全部64位结果。V3版架构(目前已废弃)对ARM体系结构作了较大的改动:
●寻址空间增至32位(4GB)。
●当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR(Current Pro-gram Status Register)中。
●增加了程序状态保存寄存器SPSR(Saved Program Status Register)。
●增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。
●增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器。
●增加了从异常处理返回的指令功能。
4.V4版本
V4版本架构在V3版本上作了进一步扩充,V4版本架构是目前应用最广的ARM体系结构,ARM7、ARM8、ARM9和StrongARM都采用该架构。V4不再强制要求与26位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。指令集中增加了以下功能:
●有符号和无符号半字及有符号字节的存/取指令。
●增加了T变种,处理器可工作在Thumb状态,增加了16位Thumb指令集。
●完善了软件中断SWI指令的功能。(www.chuimin.cn)
●处理器系统模式引进特权方式时使用用户寄存器操作。
●把一些未使用的指令空间捕获为未定义指令。
5.V5版本
V5版架构在V4版本的基础上增加了一些新的指令,ARM10和Xscale都采用该版本架构。这些新增命令有:
●带有链接和交换的转移BLX指令。
●计数前导零CLZ指令。
●BRK中断指令。
●增加了数字信号处理指令(V5TE版)。
●为协处理器增加更多可选择的指令。
●改进了ARM/Thumb状态之间的切换效率。
●E——增强型DSP指令集,包括全部算法操作和16位乘法操作。
●J——支持新的Java,提供字节代码执行的硬件和优化软件加速功能。
6.V6版本
V6版本架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。该版本架构在降低耗电量的同时,还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD(Single Instruction,Multiple Data,单指令多数据)功能,将语音及图像的处理功能提高到了原型机的4倍。
此架构在V5版基础上增加了以下功能:
●ThumbTM:35%代码压缩。
●DSP扩充:高性能定点DSP功能。
●JazelleTM:Java性能优化,可提高8倍。
●Media扩充:音/视频性能优化,可提高4倍。
7.V7版本
ARM体系架构V7版本是2005年发布的。它首次采用了强大的信号处理扩展集,对H.264和MP3等媒体编解码提供加速。V7架构采用了Thumb-2技术,Thumb-2技术是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32位代码少使用31%的内存,减小了系统开销。同时能够提供比已有的基于Thumb技术的解决方案高出38%的性能。V7架构还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形、游戏应用以及传统嵌入式控制应用的需求。V7架构还支持改良的运行环境,迎合不断增加的JIT(Just In Time)和DAC(Dynamic Adaptive Compilation)技术的使用。另外,V7架构对于早期的ARM处理器软件也提供很好的兼容性。
ARM Cortex处理器系列都是基于V7架构的产品。
(1)ARM Cortex-A系列
该系列针对日益增长的,运行包括Linux、Windows CE和Symbian操作系统在内的消费娱乐和无线产品设计。
(2)ARM Cortex-R系列
该系列针对的是需要运行实时操作系统来进行控制应用的系统,包括汽车电子、网络和影像系统。
(3)ARM Cortex-M系列
该系列面向微控制器领域,为那些对开发费用非常敏感同时对性能要求不断增加的嵌入式应用所设计。
1框架总体设计从输入设备框架的需求可知,内核的整个输入流程应该分为下层的各种输入设备和上层与用户的控制信息交互两个方面。从图6-1可见,输入设备系统框架的核心部分从底到上分为input driver,input core和event handler三个部分。应用层则要根据输入设备的事件进行相应的操作,为了给应用层统一的接口,输入设备框架对于输入事件进行了规范。......
2023-11-22
相应的操作围绕着wait_queue_head_t、wait_queue_t和task来完成。2完成量completion除了针对应用task的同步操作服务外,内核经常会有任务需要同步,比如初始化时某个任务需要等待另外任务的一个操作完成等。这只是两个任务之间简单的同步,使用等待队列显得大材小用了,因此内核提供完成量completion来进行这种类型的操作。......
2023-11-22
内核初始化的主要任务则是加载并执行应用空间的初始化程序,由系统应用接管系统完成特定的功能,而Linux内核则开始为应用提供良好的服务。Linux内核初始化框架如图4-3所示。图4-3Linux内核初始化框架图4-3展示了Linux内核的初始化的基本流程,首先是与体系结构相关的head.o部分,然后跳入体系结构无关的代码start_ kernel,开始内核后续的初始化处理。......
2023-11-22
I2C总线框架主要就是对这两类设备及操作进行管理,整体的框架如图7-3所示。由图7-3可见,I2C核心管理的实体就是i2c_client、i2c_adapter与总线设备相关的驱动i2c_driver。通过标准的I2C操作可以模拟smbus操作,I2C总线框架提供函数i2c_sm-bus_xfer_emulated来模拟相应的操作。......
2023-11-22
谈到Linux内核,大家的第一感觉就是一个庞大的系统、很多的模块和功能,实在是太复杂了。Linux内核在设计过程中这些都已考虑在其中,这也就提升了它的适用范围。抽象是人类的一个重要思维能力,从某种角度来说软件系统是对各种概念或者行为进行抽象,并加以管理。......
2023-11-22
首先Linux内核需要支持各种处理器,也就是要支持各种体系结构。Linux内核也是如此实现的,如图3-15所示。图3-15Linux内核体系结构相关代码目录接下来就要在编译系统中解决相应的问题。图3-16Linux内核体系结构无关具体实现从图3-16中可见,体系结构相关的主要部分是中断、任务切换、寄存器、系统调用以及系统初始化。......
2023-11-22
首先来看看MMC子系统的初始化mmc_init。MMC整体框架如图7-10所示。MMC总线整体框架主要实现了这些功能。MMC设备的管理框架提供了相应的创建和注册接口。......
2023-11-22
整体的frame buffer框架如图6-5所示。了解frame buffer的框架还要先从为用户提供的接口开始。图6-7可变参数中硬件信息的含义固定信息是在frame buffer的操作过程中并不发生变化的。从整体分析,frame buffer的框架很直接,主要就是直接管理实际的设备,而相关的操作与应用层直接相关。......
2023-11-22
相关推荐