没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
i.MX28 EVK_Linux Reference Manual 中文译本 V0.1 杨立业译 2018.01.28 1 / 62
i.MX28 EVK Linux Reference Manual
译者:杨立业
时间:2018 年 1 月 28 日
QQ:1024549573
在 NXP 官网找到了这篇文档,刚开始学 Linux 没多长时间,怕忘的比看的快,就一边看
一边简单翻译。由于个人水平和知识面不够广,对原文中的很多的章节不懂所以翻译出来的
也难免有很多错误。本来没打算把这篇翻译文档上传到网络,因为个人水平所限翻译很多地
方实在是很拙劣,特别是第五章和第十六章,这两个章节的功能没用过也没了解过,翻译的
很生硬或者有问题,建议参考原文。文中有些翻译不是很顺畅,译本仅供参考,建议大家参
照英文原版。如果发现文中的错误请务必联系本人更更改,也请帮助本人更深入的学习了解
Linux。
目录:
第一章 介绍
第二章 结构
第三章 MSL 层
第四章 DMA 控制器 API
第五章 持久位驱动
第六章 Boot 媒介上的 UID
第七章 CPU 频率缩放驱动
第八章 iMX28 静态电源管理驱动
第九章 帧缓冲区驱动
第十章 LCDIF 驱动
第十一章 背光驱动
第十二章 SOC 的 ALSL 架构声卡驱动
第十三章 像素管道(PxP)驱动
第十四章 NAND GPMI Flash 驱动
第十五章 ENET-1588 驱动
第十六章 可编程三端口以太网交换机驱动
第十七章 底层键盘驱动
第十八章 触摸屏和 ADC 驱动
第十九章 I2C 驱动
第二十章 数据加密驱动
第二十一章 SPI 总线驱动
第二十二章 MMC/SD/SDIO Host 驱动
第二十三章 UART 驱动
第二十四章 ARC USB 驱动
第二十五章 实时时钟(RTC)驱动
第二十六章 看门狗驱动
i.MX28 EVK_Linux Reference Manual 中文译本 V0.1 杨立业译 2018.01.28 2 / 62
第二十七章 电池充电和节能管理(PSM)驱动
第二十八章 LED 脉宽调制(PWM)驱动
第二十九章 常遇问题解答
第一章介绍
Linux BSP 基于 linux2.6.35 内核,飞思卡尔对其进行了扩展。
第二章 架构
描述对于 i.MX 处理器整个的 linux 端口。Imx 家族 BSP 架构包括用户空间可执行文件、
来自 linux 社区的标准内核组件、飞思卡尔提供的硬件特性驱动和函数。
2.2 内核
iMX linux 端口基于标准的 linux 内核。内核支持大部分的嵌入式 linux 特征比如:进程和
线程管理、存储器管理(存储器映射、分配和重新分配、MMU,L1 L2cap 缓存控制)、资源管
理(中断)、电源管理、文件系统(VFS cramfs ext2 ramfs NFS devfs JFFS2 FAT UBIFS)、
标准的 API、网络栈。
ARM linux 内核定制去支持每一个平台包括一个定制的内核配置和 MSL(机器特性层)的
实现。
2.2.1 内核配置
BSP 的发布、内核的配置通过 LTIB(linux target image builder)被执行。LTIB 文档有更更纤
细说明。一些平台的配置设定和标准特征不同如下:
嵌入式模式
模块的下载和卸载
arm9
i.MX28 EVK_Linux Reference Manual 中文译本 V0.1 杨立业译 2018.01.28 3 / 62
支持的文件格式(ELF 二进制、a.out 、ECOFF)
帧缓冲区
内核调试
自动内核模块下载
电源管理
存储技术器件支持(Memory Technology Deivece)
USB 主机/器件复用
Flash 传输层(FTL flash translation layer)
CPU 频率调整。
2.2.2 Machine Specific Layer (MSL)
机器特性层提供了 linux 内核需要的一个机器相关的实现,比如内存映射、中断、定时
器、每个 ARM 平台都有自己的 MSL 目录在/arch/arm 目录下。
内存映射
内核在虚拟空间运行之前,需要提供 IO 设备的物理地址到虚拟地址的映射,MMU 为存
储器或者寄存器访问做翻译。MSL 中用一个表结构去执行映射,对于特定的平台,每个 entry
指定了一个虚拟地址下外设的开始地址、开始的物理地址、存储区的大小、存储区的类型。
中断
标准的 linux 内核包含了通用的 ARM 代码区执行中断。MSL 包括了 linux 内核相对于
ARM9 中断控制器(AITC)交互平台相关函数的实现。支持一下特性:
AVIC 初始化
ARM 中断控制器(AITC)初始化
中断使能/失能控制。
ISR 捆绑
ISR 分派
中断队列
处理中断函数的标准 linux API
通用目的定时器(GPT)
GPT 被配置每 10ms 产生一个中断去提供 OS 时钟。这个定时器也被内核用来产生定时
器事件。Linux 为 OS-tick 定时器定义了 MSL 定时器 API,没有暴露给内核 tick 的实现。Linux
对定时器的使用通过各种延时函数、测量函数、事件、闹钟。GPT 也被用来作为高分辨率定
时器的源。定时器 tick 中断在低功耗模式是关闭的。
DMA API
MX28 系列有两个 AHB-APBH/AHB-APBX 桥內建于 DMA。运行程序数据在 SDRAM 和外设
器件之间传输。DMA 抽象了很多片上外设专用的通道比如 UART DAC ADC GPMI 等。每个
DMA 通道可以通过每个通道的一系列寄存器配置。MSL 实现了一个内部的 DMA API 允许其
他驱动初始化 DMA 通道和控制 DMA 传输。实现下列特征:
分配和重分配命令架构
通道初始化
通道执行控制:开始、停止、冻结一个通道
i.MX28 EVK_Linux Reference Manual 中文译本 V0.1 杨立业译 2018.01.28 4 / 62
通道中断控制。
输入/输出(I/O)
MSL 中的输入输出组件提供了一个抽象层在各种驱动和配置、系统使用之间。包括GPIO、
IOMUX、引脚复用、扩展板级 IO。IO 软件模块是板级定制的,在 MSL 层独立包含了很多文
件。为定制内核空间 API 提供了下列的特征:
Boot 以后,为默认 IO 配置提供初始化。
为激活各种 IO 使用提供配置函数。
为各种 IO 低功耗模式提供函数。
为采样 GPIO 和板级 IO 提供函数。
使能、失能、绑定 GPIO 和 EDIO 中断的回调函数。
不同模块的中断注册提供不同的优先级函数。如果同时多个中断发生,高优先级回
调函数优先调用。
GPIO EDI IOMUX 配置的帮助。
使用惯用的方式对这些函数进行组织。不是通过引脚和端口。允许在 GPIO 模块中改变
IO 配置而不用在各种驱动中。这些函数被内核层的器件驱动使用。用户层的 GPIO 没有访问
这些函数的程序。
这些 API 的实现在不同的硬件、驱动、板级平台是不同。模块是进化的模块。更多的驱
动被添加需要更多函数。
引脚复用
引脚复用组件负责设置 IO 引脚的配置和路径。每个 IO 引脚在三个 iMX28 模块之间复用
或者被配置层 GPIO 引脚。对于特定的板子通过使用 MSL 板级特定组件去实现 MSL 内核空间
API 的使用。
管理引脚资源避免引脚使用上的冲突。
引脚电压控制
引脚驱动能力控制。
引脚上路电阻控制
引脚组配置
共享外设总线仲裁(SPBA shared peripheral bus arbiter)
SPBA 提供仲裁机制允许多个 master 有机会访问共享外设。MSL 中的 SPBA 定义 API 使
不同的 master 使用或者释放共享外设。这些函数是全局的,可以被其他可加载模块使用。
2.3 驱动
飞思卡尔针对 imx 家族或者开发平台提供了很多驱动。许多驱动是通用的。大部分的可
以被编译进内核或被编译可动态加载的模块。BSP 包括一个 modules.def 文件一个
modprobe.conf 文件包括模块的依赖信息。
iMX 多媒体应用处理包括几个驱动类如下:
2.3.1 UART(通用异步收发器)驱动
iMX 家族支持一个 UART 驱动。
调试串口 DUART
Debug UART 驱动对 imx28 调试串口控制器提供了驱动。提供了标准 linux 串行驱动 API,
支持如下特征:
i.MX28 EVK_Linux Reference Manual 中文译本 V0.1 杨立业译 2018.01.28 5 / 62
中断收发字符
标准 linux 波特率高达 115K
收发 FIFO 支持。
5/6/7/8 位字符长度的支持
奇偶校验
硬件流控
标准 linux 串行 API 接收和发送中断字符
识别中断和校验错误。
支持 TTY 层 IOCTL 调用。
Debug UART 默认用作控制台。不支持 DMA,可以通过/dev/ttyAM0 设备文件访问
调试串口。
2.3.1.2 应用串口
和 Debug 串口一样,Application UART 也提供接口。提供标准的串行 API,支持:
中断和 DMA 发送和接收字符串。
标准 linux 波特率高达 3M bps。
接收和发送 5 6 7 8 位的字符长度。
奇偶校验
硬件流控
识别中断和校验错误
支持标准的 TTY 层的 IOCTL 调用。
可以通过/dev/ttySP0 设备文件访问应用串口。
2.3.2 实时时钟(RTC)驱动
RTC 在系统运行时保持时间和日期。RTC 实现支持 IOCTL 调用去读取时间、设置时间、
设置中断中期、设置闹铃。Linux 定义了 RTC 的 API。
2.3.3 看门狗驱动
看门狗定时器提供一种不期望的溢出来保护系统的失败。
看门狗软件提供常规的看门狗定时器服务,以便于不会发生超时。在 linux 内核镜像被
加载之前,看门狗已经使能提供服务了。编译时指定 linux 内核是否使能看门狗。
Linux 系统有标准的看门狗接口支持特定平台。
2.3.4 DCP 数据加密
DCP 驱动使用不能被用户层访问的硬件 OTP key 执行 AES EBC 加密和解密。驱动配置了
imx28 DCP 引擎 AES 128 位 EBC 模式,只支持对一个 128 位块进行加密和解密。
驱动目的是实现 DCP 数据加密,在 boot 流被写入 nand flash 之前对 boot 流镜像认证是
需要的。驱动实现了对一个 128 位块解密和加密 IOCTL 接口。
2.3.5 imx28 图形
Linux 内核驱动中包含了许多图形组件来实现标准的 linux 内核接口。Imx28 硬件操作
buffer 并输出他们到 LCD 面板或 TV 屏幕的驱动。图形支持以下组件:
帧缓冲区驱动
LCDIF 驱动
剩余61页未读,继续阅读
资源评论
- thomashe1998712018-10-15很有参考价值的一份资料!
ye_wei_yang
- 粉丝: 80
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功