达芬奇技术——1
TI在DSP技术的基础上,结合ARM、图像编解码、TI编程规范等基础上提出了达芬奇技术架构,包含嵌入式操作系统、多媒体开发基础软件,标准程序库等。达芬奇处理器将高性能的处理器与视频处理相关核心集成在一起,实现多核协同工作。
启动过程
1、RBL阶段
首先,保存在片内ROM的RBL程序开始运行,RBL程序根据启动方式的设置(通常使用拨码开关)读取对应的代码。
2、UBL阶段
主要完成系统时钟、DDR频率的初始化,准备好加载U-BOOT镜像的环境。然后加载U-BOOT到DDR中,并跳转到U-BOOT代码中运行。
3、U_BOOT阶段
- U-BOOT代码中首先设置最基本的系统硬件环境,包括系统PLL及DDR2的初始化、PSC的配置及使能UART、AEMIF等硬件模块。
- 配置系统的内存,包括NAND Flash和DDR2。
- 在Flash中加载内核到指定的存储地址,并在Flash中加载RAM Disk或通过NFS加载文件系统。
- 初始化传递到内核的引导参数(EMAC地址、串口、控制台、视频格式等)。
- 获得ARM Linux机类型值。
- 设置kernel tagged list。
- 用初始值设置ARM的寄存器。
- 调用内核。
4、Linux内核启动阶段
- Linux内核从U-BOOT中得到参数并初始化相关硬件。
- 内核中的head.s代码开始运行,对压缩的内核进行解压。
- start_kernel()运行。对内核中的MMU等进行初始化。
- Linux的第一个进程init()运行,该进程根据系统的配置文件初始化系统。
- shell启动,用户开始进入登录系统。
5、应用程序运行阶段
以基于H.264的图像传输系统的编码程序运行过程为例。
- 编码程序开始运行。
- 读取程序命令行参数确定编码视频的分辨率,保存文件位置,并根据文件扩展名确定编码类型。
- 在编码程序中建立并初始化编/解码引擎环境。
- 根据编/解码引擎的句柄和第二部中确定的编码类型,创建并初始化编/解码引擎服务器中的编/解码应用程序。
- 初始化视频输入和输出设备,输出采用含文件输出。
- 创建FIFO内存缓冲区,作为各个线程之间视频数据的缓冲。
- 分别创建主控制线程、视频捕获线程,EMIF接口写入线程和视频显示线程。
- 进入事件循环,捕获线程将捕获的放入视频编码线程和视频显示线程的FIFO缓冲;视频显示线程从FIFO缓冲获得视频传到视频输出设备进行显示;编码线程从FIFO缓冲获得视频并调用编码API函数进行编码,编码结束后放入写入线程的FIFO缓冲;写入线程从FIFO缓冲读取数据写入EMIF接口,基带处理模块通过EMIF接口进行数据接收。
- 等待用户发送信号结束程序。