嵌入式Linux驱动学习之路(一)嵌入式系统的软硬件架构
硬件资料:
操作系统:(非虚拟机)
zws@z-pc:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04. LTS
Release: 14.04
Codename: trusty
内核版本:
zws@z-pc:~$ uname -a
Linux z-pc 4.4.--generic #~14.04.-Ubuntu SMP Tue Sep :: UTC x86_64 x86_64 x86_64 GNU/Linux
编译器版本:
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) //gcc
gcc version 4.5.1 (ctng-1.8.1-FA) //arm-linux-gcc
开发板:TINY4412/Super4412SDK 1506
核心板:TINY4412 1306 (SOC:Exynos 4412 Cortex-A9 四核 1.5Ghz )
LCD屏:S702 5V/1A
一、 嵌入式系统硬件架构:
微处理器:
按位数:4位、8位、16位、32位和64位。
按用途:嵌入式DSP和通用的嵌入式微处理器。
嵌入式DSP专用于数字信号处理,采用哈佛结构,程序和说一句分开存储,采用一系列措施保证数字信号的处理速度。
通用嵌入式处理器一般集成了通用微处理器的核、总线、外围借口和设备的SOC芯片,有些还会将SDP作为协处理器。
一般的嵌入式处理器包括:
1. 片内存储器。
2. 外部存储器的控制器、外设接口。
3. LCD控制器。
4. 中断控制器。
5. 定时器、A/D、D/A转换器。
6. 多媒体加速器。
7.总线。
8. 其他标准接口或外设。
常用的嵌入式微处理器按照体系结构不同,可以分为以下几个系列:
1. ARM系列:过去称为高级精简指令集机器,是一个32位精简指令集RISC处理器架构。
2.MIPS系列:是一种采取精简指令集RISC的处理器架构。
3. PowerPC:是一种精简指令集RISC架构的中央处理器(CPU)。
总线:
总线是CPU与存储器和设备通信的机制,是计算机各部件之间传递数据、地址和控制信息的公共通道。
有3个重要的参数:
1. 总线宽度: 又称为总线位宽,指的是总线能同时传送数据的位数。
2. 总线频率: 工作速度的一个重要参数,频率越高速度越快。
3. 总线带宽: 又称总线传输速率,指在一定时间内总线上可传送的数据总量,用每秒最大传输数据量来衡量。
例如:总线宽度为32位,总线频率为66MHz,则总线带宽等于(32/8)x66=264MB/s。
对于ARM系列的处理器而言会按照AMBA规范来设计总线。
1. AHB(Advanced High-performance Bus):用于高性能、高时钟频率的系统模块连接。
2. ASB(Advance System Bus): 用于并不要求AHB高性能特征的地方。
3. APB(Advance Peripheral Bus):用于较低性能外设的简单连接。一般是接在AHB或ASB总线上的二级总线。
还有其他流行的片外总线:I2C总线.SPI总线、UART总线、USB总线等等。
存储器:
典型的嵌入式系统的存储器包括芯片内部的缓存(Cache)、随机存储器(RAM)、只读存储器(ROM)、芯片外部的主存(如Nor Flash、SRAM、DRAM等)和外存(如Nand Flash、SD卡等)。
高速缓存(Cache)存放的是当前使用得最多的程序代码和数据,即主存中部分内容的副本。在嵌入式系统中,Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache。一般在中高端的嵌入式微处理器中才会有。
主存是处理器能直接访问的存储器,即内存。
外村就是Nand Flas、 SD卡等。
二、 嵌入式系统的软件架构:
嵌入式系统包含一系列抽象层次,这里是正对Linux系统进行讨论的。
最底层是硬件层,即在嵌入式系统的硬件架构中提到的内容。
Linux内核建立在硬件层之上,是操作系统的核心组件。其目的是为上层应用程序提供访问底层硬件的抽象接口,以适合上层软件开发。
在整个Linux内核中,存在着高层抽象和底层抽象。高层抽象主要是为应用程序提供接口,而底层抽象主要是负责外设的驱动。处于高层抽象和底层抽象之间的是文件系统和网络协议。由于大量的文件系统和网络协议的存在,Linux内核必须处理不同格式的文件系统,而且并不会因为文件系统的不同而影响高层抽象为应用程序提供的接口。这点儿对于网络协议同样适用。
《完》
嵌入式Linux驱动学习之路(一)嵌入式系统的软硬件架构的更多相关文章
- 嵌入式Linux驱动学习之路(二十五)虚拟网卡驱动程序
一.协议栈层次对比 设备无关层到驱动层的体系结构 1).网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过 ...
- 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序
Nor Flash和Nand Flash的不同: 类型 NOR Flash Nand Flash 接口 RAM-like,引脚多 引脚少 容量 小(1M.2M...) 大(512M.1G) 读 简 ...
- 嵌入式Linux驱动学习之路(二十三)NAND FLASH驱动程序
NAND FLASH是一个存储芯片. 在芯片上的DATA0-DATA7上既能传输数据也能传输地址. 当ALE为高电平时传输的是地址. 当CLE为高电平时传输的是命令. 当ALE和CLE都为低电平时传输 ...
- 嵌入式Linux驱动学习之路(二十二)用内存模拟磁盘
安装驱动后,可在/dev/目录下发现已经生成了相应的设备文件. 格式化设备:mkdosfs /dev/ramblock. 挂载设备. 读写设备 . 驱动程序代码: /***************** ...
- 嵌入式Linux驱动学习之路(二十)USB设备驱动
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID. 在主机端,D+和D-都是下拉接地的.而设备端的D-接上拉时,表明此设备为高速设备:12M/s. D+接上拉时则是全速设备 ...
- 嵌入式Linux驱动学习之路(十八)LCD驱动
驱动代码: /************************************************************************* > File Name: lcd ...
- 嵌入式Linux驱动学习之路(十七)驱动程序分层分离概念-平台设备驱动
平台设备驱动: 包含BUS(总线).DEVICE.DRIVER. DEVICE:硬件相关的代码 DRIVER:比较稳定的代码 BUS有一个driver链表和device链表. ①把device放入bu ...
- 嵌入式Linux驱动学习之路(十六)输入子系统
以前写的一些输入设备的驱动都是采用字符设备处理的.问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的.不同类别的输入设备进行统一的驱动,所以 ...
- 嵌入式Linux驱动学习之路(十五)按键驱动-定时器防抖
在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开.而程序有时候会显示是两次按下,一次松开.这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定 ...
随机推荐
- MediaWiki使用指南
MediaWiki使用指南 MediaWiki是著名的开源wiki引擎,全球最大的wiki项目维基百科(百科词条协作系统)是使用MediaWiki的成功范例,MediaWiki的最大作用在于对知识的归 ...
- ABAP 一个隐藏 selection-screen block的实例
以下是一个演示如何通过 selection-screen 中的pushbutton来动态改变屏幕上的字段的显示状态的(即显示或者隐藏). 注意:显示 通过本示例可知selection-scr ...
- Dotfuscator混淆加密
混淆加密 1. 需要安装Dotfuscator软件 2. 安装好后打开软件,找到编译好的DLL文件 3. 打开[setting]设置属性,如下图: 把 Disable String Encryptio ...
- CentOS5.5挂载本地ISO镜像
操作步骤: 一.挂载iso文件到挂载点 [root@server ~ ]# mount -o loop /mnt/iso/CentOS5.iso /mnt/cdrom 二.查看挂载状态 [root@ ...
- react native 学习资料整理
入门教程 深入浅出 React Native:使用 JavaScript 构建原生应用 http://www.appcoda.com/react-native-introduction/ 中文版 h ...
- 根据字符串生成类---类的类型.self---根据字符串创建控制器对象
swift和OC一样,都是通过NSClassFromString,根据一个字符串,生成相应的类. // UITabBarButton是系统的私有类,不能直接使用 // if btn.isKind(of ...
- App Today Extension开发注意事项
从iOS 8起,就有了App Extension.Extension的种类至今也扩充到了19种,应用也很广泛,值得重点关注起来. Extension几乎可以看做一个内嵌的独立App,拥有独立的Bund ...
- 【代码笔记】iOS-时间选择框
一, 效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewControlle ...
- jetty for linux 启用日志
jetty7.8 文档 :https://wiki.eclipse.org/Jetty jetty9 文档: http://www.eclipse.org/jetty/documentation/cu ...
- Asp.net Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 (多级路由) 如:Admin/Test/Index
http://blog.csdn.net/buhuan123/article/details/26387427 目录(?)[-] 1那么我们再来看我们需要的访问方式如下图 razor视图的地址写成通配 ...