标签:des style blog http io color ar os 使用
转载:http://blog.chinaunix.net/uid-20648445-id-3329217.html
1:资料附录:
<ug585-Zynq-7000-TRM.pdf> xilinx zynq 7000技术参考手册
<ug821-zynq-7000-swdev.pdf> xilinx zynq 7000软件开发手册
<ug925-zynq-zc702-base-trd.pdf> xilinx zynq 7020板级开发手册
<DDI0406C_arm_architecture_reference_manual.pdf> ARM v7 cortex A系列和R系列参考手册
<DDI0407H_cortex_a9_mpcore_r4p0_trm.pdf> ARM v7 cortex A9 MCORE技术参考手册
<DDI0388H_cortex_a9_r4p0_trm.pdf> ARM v7 cortex A9 技术参考手册
<IHI0048A_gic_architecture_spec_v1_0.pdf> ARM 通用中断控制器V1手册
<IHI0042D_aapcs.pdf> ARM 过程调用ABI约定手册
注:上述手册为本人进行zynq zc702开发板研究时使用参考手册,希望在后续研究过程中能对该手册内容进行概略描述,以便大家查找相关细节。待补充。
2:源码索引:
Linux源码
3:启动流程:
注:本博文以提出问题,回答问题方式进行记录本人研究双核系统的过程。希望在一步步研究及分析后,能够完整回答各个问题。以下分析基于ARM v7架构Linux代码和XILINX的ZYNQ平台。由于本博文正在更新过程中,还未完成,若对单核启动有兴趣的朋友可以查看如下资源,该资源正是本人前半部分启动需要描述的内容。
问题1-1:双核芯片上电后,是否同时启动的?
答案:双核芯片上电后,并非同时启动,启动代码运行在一个核上,而是一个核处于备用状态。
参见<ug585-Zynq-7000-TRM--P140/1671—6.3.7 Post BootROM State—Starting Code on the CPU 1>
图1:CPU1启动工作状态
图2: CPU1启动流程
问题1-2:根据上述参考资料,第二个核是通过CPU0进行设置并引导启动的,Linux是怎么完成这一步的呢?我们从内核入口函数开始研究启动过程。
答案:本部分从Linux系统启动部分开始分析,BOOT启动引导部分暂不做分析。
1)入口函数
\linux-xlnx\arch\arm\kernel\head.S
点击(此处)折叠或打开--CodeSegment 1
点击(此处)折叠或打开--CodeSegment 2
点击(此处)折叠或打开--CodeSegment 3
点击(此处)折叠或打开--CodeSegment 4
点击(此处)折叠或打开--CodeSegment 5
点击(此处)折叠或打开--CodeSegment 6
通过反汇编,我们可以查看内核编译完成后各个数据结构的具体数据。
图3 反汇编代码
__proc_info_begin,__proc_info_end定义位于\linux-xlnx\arch\arm\kernel\vmlinux.lds.S,它用于存储.proc.info.init段的起始地址及结束地址。
点击(此处)折叠或打开--CodeSegment 7
.proc.info.init段定义位于\linux-xlnx\arch\arm\mm\proc-v7.S,该文件定义了本内核版本支持的ARM v7架构下处理器类型,如下列代码Line 29行表示本版本支持ARM Cortex A5 Processor,Line 39表示本版本支持ARM Cortex A9 Processor等。
点击(此处)折叠或打开--CodeSegment 8
点击(此处)折叠或打开--CodeSegment 9
点击(此处)折叠或打开--CodeSegment 10
Linux双核SMP系统启动流程(Zynq-ARM-CortexA9)
标签:des style blog http io color ar os 使用
原文地址:http://www.cnblogs.com/xiabodan/p/4083499.html