大家好,借贵宝地盖盖楼,呵呵。
本人写了大量的omap3 kernel的注释包括电源管理以及各个模块的核心实现以及驱动,现在想整理成书,各方面资料准备基本完成,开始写的话应该2个月左右能完场。感兴趣的请回复。盖楼到100就开始写。谢谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
离开TI也有一年多了,出来之后发现从技术角度,TI像DM3730这种比较老的处理器还有技术是领先的。TI应用处理器平台的开放性是其他平台比不了的。很多创新性的项目都是从TI平台开始的。比如Google的Glass. 最近和前摩托的朋友聊天,谈到各种平台,私下认为TI平台的代码质量还是很高的。呵呵。
有时间的话在这里谈谈我和TI的故事。呵呵。
确实细节比较多,最好不要过于拘泥于细节,而是要明确模块所在的层次和功能,具体的细节可以通过文档和代码明确. 在书中对Linux内核的层级以及各个模块的层次都进行了分析,希望大家能够通过书中的说明,提升这方面的分析和设计能力.
具备这方面能力会加速对新系统的理解,比如我最近做的A-GNSS的Android实现工作,从未接触的系统和协议,大概1周的时间理清了脉络.
我和TI的故事是从2006年开始的,那年因为个人原因离开摩托来到TI,工作内容也从熟悉的Linux+Java平台变为了手机基带软件的工作,开始了第一次知识更新。
说实话,对于我来说,做底层驱动和底层相关的移植,在把握框架的基础上更关注相关技术细节的东西,因为做这块需要经常修改写东西,而TI的软件架构有比较复杂,经常稍稍修改就会遇到很多问题。
So 我更关注细节的实现,框架这块只要认真看看基本很快就能理解。
个人认为框架不仅包括模块的整体划分,还有层次划分,不同层之间的接口,以及对资源的管理。作为移植工作,更重要的是深入理解框架的各个接口,进行具体的实现,如果对框架一知半解,会事倍功半的。
作为底层驱动来说,通常是实现机制,这样做的好处是可以避免频繁的修改。如果经常修改,是不是框架设计本身就有缺陷呢?具体到处理器的细节TI手册还是比较细致的。
不知道Robin兄弟关注的细节是哪些?为什么要经常改东西呢?
经常修改主要原因是上级要求底层兼容NVR平台和IPNC平台,因此需要将两个不同的系统中的相同部分提取出来,而不同点则区别对待,导致了大量的移植工作,而在此过程中出现了各种各样的奇怪问题,其解决过程真是各种麻烦。当然遇到问题可能就是你所说的对框架一知半解吧。
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/p/14648/54865.aspx#54865
这是还在TI时写的点Link框架的东西,希望能有所帮助。
IPNC和NVR都是基于link的,link是以数据流为核心。不同的硬件功能以及抽象的数据流功能都会抽象为link。要在各个link建立完整的数据通道会涉及不同的处理器。
有问题可以一起讨论。
估计你遇到的主要问题主要是link代码内部限制;frame分配pitch对齐问题;以及hdvpss的path冲突问题;
有些好解决,有些需要从mcfw层重新配置使用的硬件模块。
对于DM81xx平台来说HDVPSS还是很复杂的,遇到很多问题也不奇怪。
建议对于HDVPSS可以看RDK中hdvpss驱动的user guide,其中以了解FVID结构为主,并要了解设置与path的关系.
对于ISS的驱动基本概念是一致的, 需要了解ISP及相关的知识
Robin兄弟是要在DM8127上将两个RDK集成到一起吗?这个工作还是很有挑战的。呵呵。
ISS方面 3A的确很麻烦。
AE有源码还好,AWB和AF就比较麻烦。
书的内容简介如下:
本书从需求的角度出发,以层次分析的方法探究Linux内核以及驱动的各部分框架和实现。另外以TI的嵌入式芯片为例,对内核各部分功能特别是电源管理功能进行代码级别的分析。整体以需求是什么,如何实现相应需求来进行分析,更易于对系统的把握和理解。
http://omappedia.org/wiki/Category:RPMsg
http://omappedia.org/wiki/Syslink_Project
对于多核通讯可以看以上的资料。
http://www.omappedia.com/wiki/Main_Page
这个wiki还是不错的,仔细找找能找到很好的资料。
看到有朋友对于本人关于RDK Link的帖子进行的肯定,非常开心,谢谢大家.希望本书同样能帮到大家.
Linux内核的需求从何而来,是怎样的?Linux内核的层次结构是怎样的?每个功能模块是如何划分的?为什么要这么设计?这么多种设备及驱动应该如何划分,划分的依据是什么?设备模型究竟是怎么回事?电源管理技术是如何实现的?处理器与Linux内核的之间的功能关系是怎样的?本书就是建立在对这些问题的思考和解答基础上的。
最近开始看Android的代码,里面的设计还是很精巧的。要仔细研究一下。
今天和出版社编辑进行了初审交流,初审基本没问题了。编辑说后面还有两审就可以了。
今天和编辑沟通了。终审总编已经签字。希望能尽快出版。有消息回及时更新。
之前贴过,重新贴一下,部分章节名字会有点变化。
第1章 引言
1.1 为什么要从硬件设备的角度看Linux 内核
1.2 从了解硬件开始
1.2.1 最小系统
1.2.2 完整设备介绍
1.2.3 电源管理相关基础
1.3 从设备看内核应该满足的需求
1.4 所涉及的重要概念
1.5 小结
第2章 TI应用处理器芯片及其内核特点
2.1 DM3730微处理器
2.1.1 DM3730微处理器框架
2.1.2 DM3730微处理器特性
2.1.3 DM3730微处理器电源管理相关设计
2.2 DM81XX系列微处理器
2.2.1 DM81XX系列微处理器框架
2.2.2 DM81XX系列微处理器特性
2.2.3 DM81XX系列微处理器电源管理相关设计
2.3 Sitara系列芯片
2.3.1 Sitara系列芯片框架
2.3.2 Sitara系列芯片特性
2.3.3 Sitara系列芯片电源管理相关设计
2.4 TI处理器内核特殊代码结构
2.5 小结
第3章 Linux 内核框架探究
3.1 内核框架概述
3.1.1 Linux内核的层次分析
3.1.2 Linux内核模块间关联
3.2 需求探究
3.2.1 对内核核心的需求探究
3.2.2 对设备管理的需求探究
3.3 按需求的设备分类
3.3.1 功能型设备族
3.3.2 总线型设备族
3.4 系统实现各种无关性的框架
3.4.1 体系结构无关
3.4.2 功能型设备的框架与总线无关
3.4.3 总线控制器与总线设备的无关
3.4.4 设备属性和设备操作无关
3.4.5 策略和机制无关
3.6 内核提供的基本服务和接口简介
3.6.1 基本数据类型
3.6.2 基本原子操作
3.6.3 延时 调度 定时器相关
3.6.4 锁操作
3.6.5 抢占和屏障
3.7 小结
第4章 内核核心介绍及硬件的具体实现
4.1 内核初始化
4.1.1 内核初始化的基本需求
4.1.2 内核初始化框架介绍
4.1.3 TI芯片内核初始化相关实现详解
4.2 地址映射
4.2.1 地址映射的基本需求
4.2.2 地址映射框架介绍
4.2.3 TI芯片地址映射相关实现详解
4.3 中断处理
4.3.1 中断的基本需求
4.3.2 中断处理框架介绍
4.3.3 TI芯片中断处理相关实现详解
4.4 内存管理
4.4.1 内存管理的基本需求
4.4.2 内存管理框架介绍
4.4.3 TI芯片内存管理相关实现详解
4.5 直接存储器访问单元(DMA)
4.5.1 DMA使用和管理基本需求
4.5.2 DMA使用和管理框架介绍
4.5.3 TI芯片DMA使用和管理相关实现详解
4.6 时钟(Clock)
4.6.1 Clock管理基本需求
4.6.2 Clock管理框架介绍
4.6.3 TI芯片Clock管理相关实现详解
4.7 时间管理(Time)
4.7.1 时间管理基本需求
4.7.2 时间管理框架介绍
4.7.3 TI芯片时间管理相关实现详解
4.8 通用目的输入输出(GPIO)
4.8.1 GPIO管理基本需求
4.8.2 GPIO管理框架介绍
4.8.3 TI芯片GPIO管理相关实现详解
4.9 管脚复用(Pin Mux)
4.9.1 管脚复用的基本需求
4.9.2 管脚复用框架介绍
4.9.3 TI芯片管脚复用相关实现详解
4.10 小结
第5章 内核设备管理以及驱动基础框架
5.1 VFS及其与设备的关联
5.1.1 VFS框架
5.1.2 VFS与设备关联
5.2 Linux设备模型(Linux Device Model)
5.2.1 设备模型的需求及基本设计
5.2.2 总线(Bus)
5.2.3 驱动(Driver)
5.2.4 设备(Devices)
5.2.5 功能类(Class)
5.2.6 设备资源管理(Device Resource)
5.3 字符设备(Char Device)
5.3.1 字符设备的特点和需求
5.3.2 字符设备的核心数据结构及操作
5.3.3 字符设备子类型
5.4 块设备(Block Device)
5.4.1 块设备特点和需求
5.4.2 块设备核心数据结构及操作
5.4.3 块设备子类型
5.5 电源管理
5.5.1 电源管理特点和需求
5.5.2 电源管理核心框架介绍
5.6 内核提供的同步操作、异步事件与单独执行实体的服务
5.6.1 同步操作服务
5.6.2 异步事件
5.6.3 单独执行实体服务
5.7 内核提供的数据保护一致性操作服务
5.7.1 数据保护一致性操作服务的需求
5.7.2 各种数据保护一致性操作简介
5.8 小结
第6章 设备驱动之功能型驱动
6.1 输入设备(Input)
6.1.1 输入设备需求
6.1.2 输入设备框架解析
6.1.3 输入设备应用层操作及框架适配
6.1.4 TI芯片输入设备相关实现详解
6.1.5 输入设备电源管理相关说明
6.2 帧缓冲(Frame Buffer)
6.2.1 帧缓冲设备需求
6.2.2 帧缓冲框架解析
6.2.3 帧缓冲应用层操作及框架适配
6.2.4 TI芯片帧缓冲驱动相关实现详解
6.2.5 帧缓冲驱动电源管理相关说明
6.3 音频设备(Audio ALSA)
6.3.1 音频设备需求
6.3.2 音频驱动框架解析
6.3.3 音频驱动应用层操作及框架适配
6.3.4 TI芯片音频驱动相关实现详解
6.3.5 音频驱动电源管理相关说明
6.4 视频驱动(V4L2)
6.4.1 视频驱动需求
6.4.2 视频驱动框架解析
6.4.3 视频驱动应用层操作及框架适配
6.4.4 TI芯片视频驱动相关实现详解
6.4.5 视频驱动电源管理相关说明
6.5 小结
第7章 设备驱动之总线型驱动
7.1 内部集成电路总线(I2C)
7.1.1 I2C总线驱动需求
7.1.2 I2C总线驱动框架解析
7.1.3 TI芯片I2C总线驱动相关实现详解
7.1.4 I2C总线驱动电源管理相关说明
7.2 串行外设接口总线(SPI)
7.2.1 SPI总线驱动需求
7.2.2 SPI总线驱动框架解析
7.2.3 TI芯片SPI总线驱动相关实现详解
7.2.4 SPI总线驱动电源管理相关说明
7.3 多媒体卡(MMC)
7.3.1 MMC需求
7.3.2 MMC框架解析
7.3.3 TI芯片MMC相关实现详解
7.3.4 MMC电源管理相关说明
7.4 通用串行总线(USB)
7.4.1 USB总线驱动需求
7.4.2 USB总线驱动框架解析
7.4.3 TI芯片USB总线驱动相关实现详解
7.4.4 USB总线驱动电源管理相关说明
7.5 小结
第8章 设备驱动之SoC特殊驱动
8.1 SoC电源管理核心技术详解
8.1.1 SoC电源管理需求
8.1.2 TI芯片SoC电源管理相关实现详解
8.2 小结