账号:
密码:
CTIMES / 文章 /   
在嵌入式Linux硬体上执行处理器??圈模拟
 

【作者: Lars Rosqvist等人】2017年11月17日 星期五

浏览人次:【4240】
  


进行处理器??圈(processor-in-the-loop,PIL)模拟时,从Simulink模型产生的程式码可直接在目标硬体上执行,代表着可以利用与主机相同的测试案例在硬体上测试模型。PIL测试是为了要揭露在嵌入式环境上执行发生的问题而设计,比如,你的控制??圈是否符合嵌入式处理器的可执行时间?


本文将以Raspberry Pi为例,介绍一个以Simulink支援的客制目标硬体为基础的PIL测试工作流程,并示范如何实现一个客制的工具链让编译及连结变得更容易。(注)


PIL处理概述

PIL模拟让人可以自动地在目标硬体下载与执行测试。图1简要说明了这些步骤。开始模拟时,先从模型?动程式码生成。再从工具链(toolchain)中的工具链资料(toolchaininfo)自动编译及连结程式码之後,模拟便在目标硬体下载及启动执行档。接下来,还能在MATLAB分析测试结果。



图1 : PIL处理概述
图1 : PIL处理概述

开发PIL架构

Simulink内建了建立客制化PIL实现的支援。我们将进行以下几个步骤来建立一个客制的PIL架构:


1.实现一个连接架构类别


2.注册该连接架构


Raspberry Pi的PIL执行范例的资料夹结构是这样的:


实现连接架构

连接架构就是用来指定所有需要在PIL上执行的动作的地方。它收集了建构器(builder)、发射器(launcher)、通讯器(communicator)的实例。


本连接架构类别进行下列几个动作:


1.设置目标通讯

目标应用架构类别,TargetApplicationFramework,装配了目标端的通讯驱动。它建立一个具备PIL限定档案的BUILDINFO物件,资料夹内的main.c档之後将被合并到PIL元件库来建立PIL应用。


这个架构类别的第一个动作是要实现一个呼叫超类别的结构,rtw.pil.RtIOStreamApplicationFramework。在这之後,新增一个主要的档案以及其它通讯中必要的档案。


在这个Raspberry Pi范例,我们增加了利用TCP/IP进行通讯所需要的档案。


2.建构器实例化

本建构器是透过呼叫超类别的rtw.connectivity.MakefileBuilder来实例化。


3.发射器实例化

在发射器的类别,Launcher,支援开始及终止与建构器物件关联的应用程式,必须包含两种方法:startApplication和stopApplication。


这个发射器实例化了结构中的超类别 rtw.connectivity.Launcher。


在Raspberry Pi的范例,我们已经利用第三方工具把Launcher连到硬体。为了让范例更简单一点,我们也下载了startApplication中的应用。


4.设置主通讯

如果通讯协定是TCP/IP或串列通讯,可以把现有的函式库档案用在主通讯,如果是其他的协定,可以执行自有的rtiostream。由於rtiostream函式的API设计是独立於资料传送目的地的实体层,它可以被客制化来管理其他的通讯。


在范例中,我们采用TCP/IP作为通讯协定,并重复利用MATLAB TCP/IP函式库libmwrtiostreamtcpip。


5.呼叫超类别结构来注册元件

接着到了呼叫超类别结构并将建构器、发射器及主通讯物件传送到rtw.connectivity.Config的时候了。


6.注册一个特定硬体的计时器

执行PIL模拟的其中一项优点,就是可以在目标取得一个执行档。若要进行这个动作,必须在结构类别注册一个特定硬体的计时器。以Raspberry Pi来说,计时器已经被包在rtlib函式库。我们只需要利用程式码替换表来替换code_profile_read_timer函式。


注册连接

为了要使用新的PIL架构,我们已经把它注册在一个sl_customization.m档。


这个连接结构是透过呼叫registerTargetInfo来注册的。一个连接结构需要具备一个独特的名字,并且关联到已开发好的连接实现类别,ConnectivityConfig。结构的属性定义了系统目标档案,toolchain,及与连接实现类别相容的硬体。


在Raspberry Pi的范例,系统目标档案必须设定到嵌入式程式码转码器(Embedded Coder),而且工具链(toolchain)必须为Raspberry Pi toolchain。


开发一个客制工具链

工具链收集了在编译、连结、下载、在特定平台上执行所需要的各项工具。客制的工具链简化了编译到可执行的工作。透过工具链,不需要建立一个makefile的模板;makefile是藉由工具链中指定的资料来建立。客制工具链在编译、链接、归档的整合变得更快又更简单。


我们可以很容易地在模型结构设定选择一个客制工具链(图2)。



图2 : 透过工具链选择的模型结构设定
图2 : 透过工具链选择的模型结构设定

当程式码已经产生并编译到稍早提到的流程,嵌入式程式码转换器便可自动地利用工具链资料。


工具链资料指定了makefile如何被建立,包括除错用的编译器叁数,像是档案以及??档名。


在Raspberry Pi范例所使用的是一个gcc arm-linux cross-compiler来编译C程式码。如同之前提到的,我们为了使用到的硬体计时器新增了rtlib 函式库。当新增了rtlib,可把它写成lrt。这个工具链让人可以指定用来编译的工具,并可以依使用案例设定不同的工具链叁数。举例来说,可以在”fast runs”或”fast builds”有不同的设定。


总结与下一步

现在有了一个PIL架构及一个支援目标硬体的工具链,因此可以:


*在目标硬体直接从Simulink测试演算法。


*为函式取得执行设定档。


*比较模型层级模拟与利用编译的物建程式码和目标驱动进行的模拟(对许多安全标准来说是重要的验证步骤)的结果。


有了工具链,不需要将makefile客制化就可以进行编译。工具链在执行PIL模拟,以及在将模型布署在嵌入式Linux硬体时都存在着优势。如果「只要产生程式码」不在结构设定的程式码产生标签,就可以直接为目标硬体建立一个执行档。


(本文由??思科技提供;作者Lars Rosqvist、Roger Aarenstrup、Kristian Lindqvist任职於MathWorks公司)


注:本范例所使用的程式码可从https://www.mathworks.com/matlabcentral/fileexchange/54172-raspberrypipil 下载。


相关文章
如何透过Simulink进行ISO 26262专案
工程软体开发:敏捷与模型化基础设计
利用模型化基础设计将通讯协定布署至FPGA
利用MATLAB报告产生器自动产生客制化报告
开发以PLC为基础之车辆控制与管理系统
comments powered by Disqus
相关讨论
  相关新闻
» 西门子叁加「台北101智慧趋势展」 运用虚拟实境与数位建筑模型
» OnRobot亮相中国国际工业博览会 展示协作机器人应用实力
» 概念与看法不尽相同 欧亚两地运动控制市场有别
» 浩亭专注於以风电行业作为目标市场
» 市场需求多元 PLC效能持续进化
  相关产品
» 凌华推支援四核心6MB缓存之模组化电脑
» KYMCOWJI4503B2B、B2G市场 推出Ionex车能网商业版
» SCHURTER推出用於智能配电单元(PDU)的新款16A IEC电源??座 4710-5
» Audi「第25小时」 预见零塞车的未来城市
» Vicor 将出席 2018 年汽车 48V 电源及电气化系统论坛

AD