达芬奇 DMSoC 初始化流程 达芬奇 DM SoC 初始化流程 > 达芬奇 DMSoC 初始化顺序 (1)DMSoC 复位。芯片的配置由 PSC 决定,取决于 BTSEL[0-3] 、 EM_WIDTH 、 AEWA 和 DSP_BT 的状态。 (2)ROM boot loader( 如果被选 ) 。 NAND 或者 UART0 的初始化。 (3) 引导加载 (Boot-loading) 。以 U-boot 为例, ① 使能电源域: DDR2 和 DSP ; ② 设置时钟频率 (ARM 、 DSP 和 DDR2 时钟的乘除系数 ) ; ③ 设置引脚复用控制器; ④ 设置 ARM 引导启动操作系统。 (4) 操作系统启动。以 Linux 为例, ① 初始化 ARM ; ② 初始化硬件系统; ③ 初始化 Linux环境。 > U-boot 初始化顺序 通常情况下, ARM Linux 要求 boot loader 中有少许的初始化。目前 TI 的 DVEVM 使用的是 U-boot-1.1.3 。 U-boot 代码中首先运行的是 u-boot/cpu/arm926ejs/start.S ,芯片和一些 DVEVM 板的硬件配置主要在 u-boot/board/davinci/platform.S 和 davinci.c 中完成。 其中 u-boot/board/davinci/platform.S 设置最基本的系统硬件环境,包括系统 PLL 及 DDR2的初始化、 PSC 的配置及使能 UART0 、 AEMIF 等硬件模块。有些工程师设计的达芬奇板可能用到了和 DVEVM 不同的 Flash ,那么就要根据用到的 Flash 参数修改 u-boot/board/davinc i/flash.c 。另外,关于 DM644x 支持的 NAND Flash ID ,请参考 TMS320DM644x DMSoC 的相关文档。 以 NOR Flash boot 为例, DVEVM u-boot 初始化下列的达芬奇 DMSoC 内容: (1) 关中断和 MMU 。 (2) 使能 DSP 电源域 (PTCMD) ,把 DSP 置为复位状态。 (3) 初始化 PLL ,使能 DDR2 ,软复位 DDR2 并且重新使能 DDR2 ,使其脱离复位状态。 (4) 初始化系统 PLL 。 (5) 配置 AEMIF 引脚为 NOR Flash 接口。 (6)VTP 校准。 完成以上步骤之后, U-boot 准备引导 ARM Linux 。 (1) 配置系统的内存 ( 通过 ATAG_ MEM 块和 mem=)NAND Flash 和 DDR2 。 (2) 通过 TFTP 加载等加载方式,加载内核到指定的存储地址。 (3) 如果定义过,加载 RAM Disk 。 (4) 初始化传递到内核的引导参数 (EMAC 地址,串口,控制台,视频格式等 ) (5) 获得 ARM Linux 机类型值 (DVEVM 为# 901) 。 (6) 设置 kernel tagged list 。 (7) 用初始值设置 ARM 的寄存器。 (8) 调用内核。 > Linux 初始化步骤 (1)Linux 内核需要从引导加载程序 (U-boot) 中得到以下参数。 * 已经初始化的 memory 系统。 * R0 = 0 ; R1 为 ARM Linux 机类型值。 * R2 指向 ATAG 结构体的内容: ① 物理 memory 区; ② 是否使用 RAM DISK 及其压缩版的地址; ③ 视频驱动程序具体的初始化参数; ④ 内核命令行; ⑤ 其他参数 ( 串口和版本号 ) 。更多关于 Linux 内核引导参数的信息可以参考 Linux/Documentation/kernel-parameters.txt 。如果要想传递给内核更多的参数,再 u-boot 中的 bootargs 中设置就可以了。 (2) 对于压缩的内核 (aka uImage) , Linux 最初启动 Linux/arch/kernel/head.s 。 (3)start_kernel() 运行。位于 Linux/init/main.c 。 (4)Linux 的第一个进程 init() 运行。 > 达芬奇 DMSoC 复位状态 DM644x 上电复位后,芯片的绝大部分模块都处于不工作状态。锁相环 PLL 处于旁路 (By pass) 模式; DSP 子系统的状态取决于 DSP_BT 引脚; UART1 和 UART2 也处于不工作状态, UART 0的状态取决于 BTSEL 引脚 ( 如果 BTSEL=11 , UART0 工作 ) ; EMIFA 处于工作状态,其数据总线宽度由EM_WIDTH 决定,地址总线宽度由 AEAW 决定;芯片的大部分引脚都被配置为 GPIO 引脚。引脚复用通过寄存器 PINMUX0 和 PINMUX1 控制。 发表于: 2010-07-17,修改于: 2010-07-17 10:19,已浏览1次,有评论0条 推荐 投诉