SoC_设计中基于_Linux_协同验证的研究和实现_第1页
SoC_设计中基于_Linux_协同验证的研究和实现_第2页
SoC_设计中基于_Linux_协同验证的研究和实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基金项目:陕西省2007年度自然科学基础研究计划项目(2007F21) 作者简介:郭涛(1983-)男,陕西彬县人,西安石油大学计算机学院硕士研究生,研究方向为嵌入式系统;田泽(1965-)男,陕西扶风人,西安石油大 学计算机学院副教授,硕士生导师,研究方向为SoC设计与嵌入式系统开发。 SoC 设计中基于 Linux 协同验证的研究和实现 郭涛,田泽 (西安石油大学 计算机学院,陕西 西安710065) 摘要:对于在SoC设计中大量定制的硬件,需要定制的软件来提供专用的诊断、初始化以及设备驱动程序。 因此在 整个SoC设计流程中最为关键步骤即硬件与软件整合阶段,提出了基于Linux嵌入式操作系统的验证问题,目的是 验证在整个系统环境下硬件的可操作性和软硬件之间的交互问题。 关键词:SoC;嵌入式系统;软硬件协同设计与验证;Linux 中图分类号:TP316.89文献标识码:A文章编号:1672-7800(2009)05001903 1协同验证概述 SoC(System on Chip) 的概念已深入到IC设计的各个方 面,带有一个或多个微处理器核的SoC产品,由于同时具有软 件的灵活性和硬件的高性能,已经逐渐成为嵌入式系统产品的 主流。随着规模增大,设计的复杂度和设计难度也同时增加了, 较短的开发周期和复杂的设计,迫使嵌入式系统开发人员必须 寻找新的途径,以便尽早开始编写和调试软件。 传统验证是将软件和硬件分开验证。 一个SoC系统验证, 必须等到流片之后才能验证软件,这样设计周期非常长,验证 效果也不理想,而协同验证技术的提出改变了这种现象。 协同验证技术是一种较新的验证技术,是指在最终硬件没 有准备好之前进行软件和硬件的协同验证,它可以使软件开发 人员尽早接触到硬件设计部分。目的是希望在设计的早期验证 系统软硬件的正确性,特别是功能的正确性和和性能的高效性。 目前,协同验证技术对底层次仿真的研究比较成熟,其一 般模式是软件调试环境、 微处理器模型和硬件RTL描述的协 同仿真,它可以为软件调试提供虚拟验证平台,从而为包含硬 件在内的整个系统进行功能验证。由于要考虑到软件实际运行 情况,以及设计中依赖于软件的硬件必须在硬件平台上进行验 证,因为软件和硬件可能都有缺陷,因此需要一个稳定的软件 运行平台,验证人员基于该平台来开发针对某一具体硬件资源 的驱动程序, 进而开发出针对该硬件资源的应用验证软件,来 达到更完美和理想的验证效果。 2操作系统验证的必要性 21操作系统特点 操作系统为软件提供了一个稳定的运行平台,它不仅能屏 蔽掉底层硬件平台上各个IP硬件资源的具体细节, 还能够可 靠地运行一些硬件调试工具和软件调试工具, 更重要的是,设 计和验证人员可以基于操作系统开发出相应硬件的驱动和针 对该硬件的应用测试程序。在流片前对硬件和软件的交互以及 芯片系统功能进行更深层意义上的验证。 22何时需要使用操作系统 在SoC的协同设计验证的整个过程中,基于操作系统的协 同验证结果的成功与否,可以说直接决定了该芯片设计最终是 否取得成功与投入市场后的应用前景和功能扩展。 因此,基于 操作系统的协同验证在整个验证过程中处于最必须、最重要的 位置,是所有SoC设计过程中最值得花费时间和成本的关键步 骤。 图1描述了验证的3个阶段,以此来更具体地说明操作系 统验证在整个SoC协同设计和验证过程中所处的阶段。 图1协同验证的三个阶段 23如何选择嵌入式操作系统 选择哪种操作系统来移植到硬件平台,主要是考虑嵌入式 系统其本身的特性、不同的应用领域不同的需求,以及各种嵌 入式操作系统自身的属性。 由于嵌入式系统本身资源受限制, 比如存储量和存储方式等,以及性能和功耗都有严格的上限与 下限。 因此,我们在选择嵌入式操作系统时主要针对以下几点 来选择: 内核占用存储区尺寸; 软 件 导 刊 Software Guide 第8卷%第5期 2009年5月 Vol.8 No.5 May. 2009 2009年软 件 导 刊2009年软 件 导 刊2009年软 件 导 刊 RTOS性能:包括任务切换时间、调度方式和优先级数等; 软件组件和设备驱动程序的完备程度; 开发调试工具的易用性; 对各种标准的兼容性; 移植操作系统的可行性; 针对不同硬件平台,操作系统验证功能的完备性等。 24嵌入式Linux操作系统 由于Linux操作系统支持多种硬件平台,使移植工作可以 比较容易实现,且Linux是开源免费的,其内部结构透明公开, 这使得移植人员更能根据硬件平台功能要求,稳定地实现内核 功能裁减和标准兼容。Linux内核可按照实际需要进行配置和 启动,与各种“服务进程“独立,内核只保留进程间通信。 尤其是 Linux操作系统的服务进程可以单独设计、实现及调试,即可以 按照硬件平台的实际需要来配置和启动。最后,Linux操作系统 支持动态安装设备驱动程序,这很适合进行软硬件的协同验证 需要:需要验证某一硬件IP模块时再进行动态加载。 3基于Linux操作系统的协同验证方案 嵌入式操作系统作为嵌入式系统的灵魂,对整个系统进行 多任务调度、任务间的通信和同步、软硬件资源的系统管理和 存储管理等。 在SoC芯片上移植Linux操作系统及运行基于该 操作系统的应用软件,可以对SoC设计中各模块功能及系统功 能进行更为有效、充分的验证。 基于Linux操作系统的协同验证方案可如下实现,首先在 SoC上移植Linux内核, 然后在FPGA原型验证环境下运行 Linux操作系统, 并编写大量的应用测试程序来对SoC硬件资 源的性能和功能进行验证。 4验证方案的实施 41协同验证的硬件平台介绍 本次SoC设计是基于ARM922T微处理器核,其片上资源 包括:UART(串口控制器)、GPIO(通用输入/输出接口)、TIMER (定时器控制器)、RTC(实时时钟)、EBI(外部总线控制器)、 SRAM(静态随机存储器)、DMA(存储器直接存取控制器)、VIC (中断控制器)和PPU(协议处理单元)等。 在FPGA原型环境下的一般流程为:将综合设计好的FP- GA逻辑下载到FPGA芯片,然后在PC机上完成Linux操作系 统内核移植工作和验证软件开发, 然后下载到FPGA板上的 SRAM,通过仿真器Mutil-ICE控制处理器运行,实现对系统的 在线调试, 调试信息可以通过Windows下的超级终端输出到 PC机上,也可以通过控制GPIO指示等来输出信息。FPGA原 型验证环境的框架如图2所示。 42Linux操作系统内核移植 依据嵌入式系统的特点,为使嵌入式Linux操作系统具有 一定的功能,并保持小型化,在配置裁减内核时应包括以下几 部分:内核启动引导和加载程序、内核、初始化进程和硬件驱动 及文件系统, 另外可根据需要选择简单的应用程序和TCP/IP 协议栈等。 421建立嵌入式Linux交叉开发环境 选择VisualMachine+Redhad Linux作为开发平台宿主机, 在其上建立arm-linux交叉编译环境: 下载安装交叉工具链软 件包cross-2.95.3.tar.bz2, 其内部包括二进制文件处理工具 Binutils、arm-linux交叉编译器GNUgcc和链接运行库glibc。 arm-linux交叉编译器GNUgcc编译器是一套完整的交叉 编译器,包括:C编译器gcc、交叉汇编工具as、反汇编工具obj- dump、 连接工具ld和调试工具gdb。 这样就搭建好了嵌入式 Linux交叉开发环境,为后续工作的展开提供了可靠的保证。 422移植Linux内核 关于Linux内核移植的具体过程在很多资料都有介绍,在 此由于篇幅所限仅对移植过程中的关键几处做一简单介绍,具 体请参考关于这方面的专门资料。 (1)两个重要的.S文件 Linux/arch/arm/proc-armS3C2440.S包含针对CPU的操作, 例如ICache、DCache、TLB、CPU设置等操作。 Linux/arch/arm/kernel/head-armv.S是内核代码的入口,内 核从此文件执行,查找process和architecture类型,建立内核初 始化堆栈,建立临时页表,清除BSS段,然后TLB和cache被刷 新,最后进入start_kernel函数。 (2)硬件平台相关设置 Linux/arch/arm/kernel/setup.c下 的 函 数set_arch(char * *cmdline_p),就是对特定板子进行相应设置的函数,命令行字 符串和内存起始地址作为参数传递到这个函数,ramdisk映像 的起始地址和结束地址也在此更新。 (3)linux/include/asm-arm/S3C2440.h:存放与硬件平台相关 的.h文件。 (4)与硬件平台联系最紧密的一个目录 Linux/arch/arm/mach-S3C2440子目录。 它里面包含arch.c、 mm.c、irq.c、time.c和cpu.c等 。 其 中arch.c中 包 含 结构MA- CHINE_START,设置ARM的物理地址、I/O空间物理地址、I/O 空间虚拟地址、注册I/O map和IRQ初始化函数等。 mm.c中建立地址的虚实映射关系; irq.c实现中断控制器的初始化; time.c和linux/include/asm-arm/arch-S3C2440/time.h实 现 时钟中断和实时时钟处理。 arch.c下的S3C2440_fixup函数可以对一些参数进行修 改,例如命令行字符串、内存起始地址、ramdisk映像的起始地 址和结束地址等。 (5)获得时钟频率 图2FPGA原型验证环境框架 20 第5期 Research and Realization of Co-verification Based on Linux in SoC Design Abstract:The Co-Verification technology developed with the design and verification of the microprocessor. As for the hardware designed in a large quantity in terms of SoC, the ordered software is needed to provide the professional diagnose and initialization software as well as the device driver. Therefore, during the whole SoC design process, the most critical procedure is the combinition of the hardware and software period, in which the verification problem is based on the embedded Linux OS, so as to identify the interactive problem of the possibility of hareware operation and software in the whole system of environment. Key Words:SoC;Embedded System;H/S Co-Design and Verification;Linux linux/include/asm-arm/arch-S3C2440/time.h中包含了与硬 件体系结构相关的时钟设置,通过设置芯片的时钟寄存器可获 得所需要的中断频率,在中断服务进程里内核会调用do_timer ()函数,通过对比较器进行写操作就可以清除中断标志。 (6)挂载根文件系统 假如在“makemenuconfig”中选择CONFIG_BLK_DEV_RAM、 和CONFIG_BLK_DEV_INITRD,在Bootloader或S3C2440_fixup 函 数 中 , 正 确 指 定 了ramdisk的 其 实 地 址 、 大 小 以 及 ROOT_DEV,则内核启动时会以ramdisk为根文件系统。根文件 系统挂载成功后,内核会打开控制台,尝试执行init进程,运行 sh。 如果串口驱动已成功移植,则会在控制台出现提示符“#“。 至此,内核移植完成。 43硬件平台初始化和内核启动 内核移植成功后,就可以在基于嵌入式Linux操作系统上 开发相关的设备驱动程序,在此之前必须完成对硬件平台的初 始化,这样可以保证硬件平台上的每一个模块能够可靠、稳定 地运行。 针对这一步的要求,在本次SoC设计中开发的针对平台上 不同模块的测试代码可以在Boot运行时调用, 如测试存储器 正确读写的验证代码、测试中断各种触发方式、清中断和测试 中断返回的验证代码等。 在内核启动之前完成这些操作,为的 是上电即对平台进行自检,自检通过也就是完成了对硬件平台 的初始化,可以使设计中的缺陷提前暴露,不至于把问题带到 内核启动这部分。 这是非常关键的步骤,对整个设计具有非常 大的意义。 完成硬件平台初始化之后就可以引导Linux内核启动了, 为了在启动过程中,设计者和验证人员能够实时地跟踪调试内 核,可以采用以下方式来实现。 在Linux/arch/arm/kernel/debug-armv.S中实现printascii。可 以在Linux/kernel/printk.c中加入: va_start(args,fmt); printed_len =vsnprintf(printk_buf,sizeof(printk_buf),fmt, args); va_end(args); printascii(printk_buf); 这样在控制台起来之前就可以通过printk语句来打印出 启动信息,在程序中尽可能多地使用printk打印语句,有助于 调试内核。 44运行用户任务 此阶段主要是基于Linux操作系统开发相关的应用验证 用软件,主要是验证目标板的功能完整性、性能的稳定性与相 应的实时性,最主

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论