分类: LINUX
2012-05-09 09:36:53
上次已经将redboot的基本框架搭建起来了,之后我们就要开始实质性的基于mx27ads硬件平台的移植:
1.先理清各个子HAL层的文件分布,否则很容易把各层所包含的文件弄混淆:
通用HAL: hal/common/v3_0/include下的文件分布:
相对应的源码:
体系结构HAL: /hal/arm/arch/v3_0/include下的文件分布:
相对应的源码文件:
变体HAL: /hal/arm/mx27/var/v3_0/include下的文件分布:
相对应的源代码文件:
平台HAL: /hal/arm/mx27/mx27ads/v3_0/include下的文件分布:
对应的源代码文件如下:
以下着重强调两点:
重点一:这几个文件夹下的头文件,在make的前期,会一个不漏的拷贝到
instal tree\include\cyg\hal文件夹下,而编译过程用引用的头文件,全部位于instal tree\include文件夹下,
所以你会发现所有源文件中对头文件的引用,都是基于这个目录的引用:比如:
#include
#include
#include
#include
#include
等等无一例外。
重点二:配置工具分不清当前所处理的文件是属于kernel,redboot还是driver;它也分不清楚哪是通用抽象层,哪是体系结构抽象层,哪是变体抽象层,哪是平台抽象层;而且,你给你的文件取阿猫还是阿狗,在它看来任何区别都没有。所以,上面窗口中的文件名hal_cache.h,var_io.h,mx27_misc.h等等,不是配置工具强制要求的,你可以取abc,也可以取xyz,工具都不会怪你的名字取得不好,另外,配置工具也没有要求你一定要加几个头文件和几个源文件,你将要实现的功能放在一个源文件里也好,分成几个源文件也行,这都可以按照你的风格随心而定。
2.熟悉一下MX27的硬件资源:
上面的框图可以说是纵横交错,复杂之极,但是如果你理解了它,你就觉得它错落有致,层次分明,丝毫感觉不到复杂的地方。
这些,全部包含在如下的小框图里:
呵呵,你别看上面这么大的图,内核只占了那么一点空间,其实这是整个芯片最核心的部分。
如果我们把这一部分放大来看,就会像如下所示:
再具体到接口信号,就会如下所示:
是不是感觉很神奇呀,我真得感到惊讶,每一种技术,当你静下心来去深究,都是一个丰富多彩的世界。
freescale公司能在这么一个内核上整合出那么多资源和接口,也可以说是鬼斧神工了,都是一些伟大的团队呀。
系统的总线大体上可分成内核的高速总线AHB和外围总线IP,这两者之间是通过AIPI接口来协调的,MX27里有两个AIPI接口。每个AIPI可以带31个外围设备,且每个外围设备分配4K的存储空间。所以我们MX27基本所有的外围设备都受这两个接口的控制。
系统还带有一个6*3的多层AHB交换开关MAX,ARM 指令AHB直接连到MAX的主接口0,而ARM 数据AHB直接连到MAX的主接口1,4个预备总线主接口分别连到MAX的主接口2~5,MAX的第1个从接口被作为主AHB设计,内部连接到PAHBMUX,下面带有6个从连接:AITC中断控制器,MCTL存储器控制,2个AIPI外围接口,1个ROMPATCH模块。MAX的第2个和第3从接口被连到从AHB,从AHB的每个接口只能从platform外访问。
这个图中第一列显示了8个512M的区域划分,中间那一列是第一个AHB和第二个AHB的某些区域的分解图,右边那一列是AIPI1和AIPI2的地址空间分布
详细说明表格如下:
细分AIPI1和AIPI2的现在映射:
继续细化就到具体的寄存器了:
3.了解一下MX27ADS开发板的外围资源
板子的框图如下:
开发板的存储空间映射:
到此,我们对MX27的硬件资源基本上清楚了。之所以费那么大篇幅来介绍这些,因为我们下面基于新平台的修改就会用到它们。