用双MicroBlaze监控汽车应用
区的大小,并增加了一个用于共享存储区的新段。我们也相应调整了microblaze_1的链接脚本,将代码段和数据段的起始存储区地址设定为0x8A000000,并为共享存储器分配了一个相等的段。 _STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x1000; _HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x1000; /*定义系统中用于microblaze_0的存储器*/ MEMORY { ilmb_cntlr_dlmb_cntlr : ORIGIN = 0x00000050, LENGTH = 0x00003FB0 /*重新设定用于代码段和数据段的存储器大小*/ DDR2_SDRAM_MPMC_BASEADDR : ORIGIN = 0x88000000, LENGTH = 0x02000000 /*为共享存储器新增一个分段*/ DDR2_SDRAM_SHARED_BASEADDR : ORIGIN = 0x8C000000, LENGTH = 0x04000000 } [...] /*定义各段和它们在存储器中映射的位置*/ SECTIONS { [...] sharedmem : { __sharedmem_start = .; *(sharedmem) __sharedmem_end = .; } > DDR2_SDRAM_SHARED_BASEADDR [...] } MPSOC的下载和调试选项 SDK环境为下载、运行和调试多处理器系统的软件提供了两种方法。一方面,基于Eclipse的工具能够为软件工程提供下载和ST.DIO状态的配置;另一方面,可以使用Xilinx微处理器调试(XMD)控制台来处理这些任务。 另外,SDK还可以使用位流和.bmm文件重配置FPGA。根据链接脚本中定义的段,FPGA编程对话框(Program FPGA Dialog)可以随意将整个软件段直接传输到与特定处理器相关联的BRAM中。如上所述,由于.elf文件会因使用Xilkernel库函数的应用而增大,因此,在多处理器系统中,我们一般会将这些段存放在外部存储器中。在这种情况下,可以选择FPGA编程对话框软件配置设置中的bootloop,来提供后续的软件下载。 SDK环境 SDK在工程浏览器(Project Explorer)窗口中,提供了包括软件工程选择的运行与调试(Run Debug)配置,以及在Run菜单中打开“Run configurations…”。系统中每个处理器都有相关联的“Run Debug”配置。在第一个例子中,选择配置对话框主标签中的工程.elf文件。在“Device Initialization”标签中将“Reset Processor Only”选为复位方式,以避免在复位时将整个系统重置。 另外,通过配置ST.DIO Connection标签,可以让ST.DIO直接打印到SDK控制台。将单处理器的“Run Debug”配置捆.绑在一起,它们就可以同时运行各自的软件。最后,SDK基于Eclipse的调试窗口可以让开发人员插入断点,并提供变量赋值和存储分配方面的信息。 XMD控制台 对我们来说,最重要的XMD控制台命令是关于多处理器系统使用的命令。用帮助命令可以直接从XMD控制台调出这些命令的详细列表。为将XMD控制台用于多处理器系统的下载和调试,可使用命令connect mb mdm –debugdevice cpunr ,将处理器经由MicroBlaze调试模块(MDM)连接到XMD控制台。其中,参数用于定义每个处理器的标识符。在完成所有处理器的连接后,使用命令Target ,选择一个Microblaze用于处理当前的目标连接。“Target”命令可显示已连接目标的列表。要将.elf文件下载到特定的目标处理器上,开发人员可使用“dow”命令输入完整的路径和文件名:dow 。用户既可以运行“run”命令启动被选中目标上的软件,也可以使用“stp”命令单步调试运行代码。如果MDM具有PLB连接XMD控制台报告,可使用命令Read_uart start输出JTAG UART。在定义端口后,JTAG UART服务器即可接收这些输出,并使本地主机上的输出可供终端程序使用(例如:HTerm或者Tera Term):Terminal jtag_uart_server 。 流水线系统 我们逐步设计实现的双处理器平台系统,由两个得到Xilkernel支持的MicroBlaze处理器构成,它们通过FSL共享两个通信接口,并访问共享存储器。每个处理器都配置了运行在外部DDR2 SDRAM模块中独立存储区上的指令和数据高速缓存。而且,XPS Mutex模块能够对共享存储器访问进行同步,以保证数据一致性。此外,我们还为两个MicroBlaze调整了链接脚本,以便将专用存储区分配给两个处理器的指令段和存储段,以及一个共享数据段。 表1是在默认综合约束条件下,Spartan-3A DSP 1800A和Virtex-6 XC6VLX240T FPGA的资源分配和使用情况。即便是中等大小的Spartan器件,也能够为与双MicroBlaze系统PLB或FSL接口相连的额外加速器IP提供大量slice资源。
/*定义microblaze_0的堆和栈大小*/
表1:双MicroBlaze Xilkernel系统的资源使用情况。
这些尚未利用的FPGA资源,让我们能够为激光扫描仪的原始数据增加一个加速器处理单元。接下来我们的工作重点是,将基于QNX的防碰撞应用和线程任务分配给两个处理器。
由于障碍物识别、环境建模和远程控制构成了一系列的条件和顺序计算,所以我们选择了流水线处理系统。在今后的工作中,我们准备后续集成摄像头行车道检测功能,自动停放功能,以及其它所推荐的组件,比如:车辆测距和巡航控制。
双MicroBlaze 汽车应用 Xilkernel 相关文章:
- LED背光灯用驱动器技术(12-16)
- 分享汽车应用中的新型传感技术(11-14)
- 基于xilkernel的嵌入式应用程序设计方法(12-23)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)