新闻中心

EEPW首页 > 物联网与传感器 > 设计应用 > 多核处理器下智能车载平台的设计与实现

多核处理器下智能车载平台的设计与实现

——
作者:卢朝洪 金曦 唐岳东 杨国青时间:2013-06-26来源:电子产品世界收藏

  资源分区方案

本文引用地址:http://www.eepw.com.cn/article/146841.htm

  本文采用OMAP4430型开发板作为硬件平台。在该处理器上两个同构的核上分别部署Android OS和SmartOSEK OS。

  用户在应用设计阶段,对SmartOSEK OS进行静态配置,确定其占用的内存情况,从而在系统初始化阶段将固定的一段物理内存空间分配给SmartOSEK的实时内核。通过修改Android OS中Linux内核的页表项,将该段物理空间对于Android OS是不可见的,使得虚拟地址空间无法映射到该段物理地址。另外预留出一段物理内存作为两个操作系统的共享内存空间,以方便二者的通信。

  对于各种硬件外设资源,将其分为三种不同的类型。第一类是硬件不同内核私有的外设资源,如时钟源。第二类是将公用的硬件外设资源分配到各自的操作系统上,将其视为该操作系统的私有资源。第三类是Android OS和SmartOSEK OS共享的硬件外设资源,在资源分配时要尽可能避免使用第三类资源,针对这种类型的资源需要一定的锁机制对其统一管理。

  内核通信方式

  Android OS与SmartOSEK OS之间提供同步和异步两种通信方式。

  同步的通信方式只应用于从Android内核向SmartOSEK内核的消息发送。当Android系统通过同步方式发送消息时,首先将消息发送到共享内存的同步数据缓冲区中,然后向SmartOSEK发送同步信号进行通知,SmartOSEK内核在接收到这个同步的数据接收信号后,需要立即响应,读取共享内存中同步数据缓冲区存储的消息,并在读取结束后通知Android发送方数据接收成功或接收失败。

  异步的通信方式支持Android和SmartOSEK内核双向通信。当一方向另一方发送消息时,发送方首先将数据拷贝到该方的共享内存中的异步消息队列中,完成该操作后向接收方发送异步通信请求的信号。此时接收方只需要更新异步消息队列的状态信息。读取队列中消息的工作由一个周期性查询异步消息队列的进程或任务完成,以缓冲Android内核和SmartOSEK内核实时性的差异。

  平台实现

  平台实现的主要工作为以下三部分:在编译阶段实现SmartOSEK OS的存储映射;在双操作系统的启动过程中实现包括内存、中断、外设等资源的分配;通过共享内存、核间中断等手段实现两个操作系统之间相互通信。

  SmartOSEK OS存储映射

  存储器分区是实现两个操作系统资源分区的关键之处。在编译阶段利用MMU机制减少两个操作系统数据在存储空间上的耦合性,使每个操作系统静态分配的内存空间尽可能连续,简化资源分区的难度。SmartOSEK OS是完全静态的操作系统,在目标链接文件vmlinux.lds.S中新建物理段osek,通过使用GNU C编译器的编译指令将SmartOSEK OS的数据定义归于此段中。

  双核系统启动

  在U-boot完成对系统镜像文件的引导加载后,主核cpu0处于SVC模式,cpu1执行WFI指令循环等待cpu0触发的核间中断。此时,将在主核cpu0上基于分区的机制执行对各种资源进行初始化分配。图2描述了双核启动及资源分配的具体流程。  

 
linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭