Toradex 嵌入式软件版本迭代

Thursday, August 9, 2018

作为嵌入式计算领域的领导者之一,Toradex 致力于为客户提供前沿、稳定、易用的硬件、软件方案。帮助客户完成产品概念验证、设计研发以及最终量产整个过程。产品的生命周期短则数年,长则超过十年,期间的各种因素可能会导致用户使用产品的硬件或者软件发生变化,Toradex 努力缓和这种变化带来的影响,尽可能使用户无缝过渡。尽管如此,对于有些变更,用户也可能不得不做对应的调整。下面将举例介绍关于 Toradex 嵌入式软件迭代,WinCE、Linux 用户需要注意的地方。

Windows Embedded Compact

Toradex 自第一代产品 Colibri PXA 270 开始就支持 WinCE,并继续为最新的处理器如 iMX6、iMX7提供WinCE支持。在这十多年的时间里,Windows Embedded Compact 也从 WinCE5发展到Windows Embedded Compact 2013。Toradex 为其产品系列推出了不同版本的 WinCE,并结合微软发布的补丁以及 Toradex 客户的需求,提供版本更新。大部分的版本更新不会影响用户使用,只需升级至新版即可,原来的应用也能够直接运行。但是部分更新,则需要用户重新编译应用,或者在更新 WinCE 镜像时使用制定的工具或者命令。

SDK 更新

WinCE 用户都会采用 Visual Studio Toradex SDK 来编译应用程序。Toradex 曾于数年前升级过SDK,因此用户在使用新的 WinCE BSP 时,需要重新安装 SDK 并编译。

https://developer.toradex.com/software/windows-embedded-compact/t20-t30-wec-software/release-details?view=all&issue=10302

https://developer.toradex.cn/knowledge-base/windows-embedded-compact-sdk#updating-from-older-sdks

NAND ECC 升级

为了提高 Colibri T20 NAND Flash 可靠性,从 V1.4b2 WinCE 开始,ECC 算法由原来的 RS4 升级到 BCH16。这意味着用户需要设置新的 ECC 算法,或者使用最新的 updatetool 工具才能使用 BCH16 算法。而重要的是,如果用户需要将出场预装V1.4 WinCE及后续版本的模块降到早期的版本,就需要将 ECC 算法重新配置为 RS4,否者将无法启动老版本的WinCE 镜像。

https://developer.toradex.com/software/windows-embedded-compact/t20-t30-wec-software/release-details?view=all&issue=10351

Toradex CE Libraries

WinCE 用户如果在使用诸如 CAN、SPI、PWM、GPIO 等功能时,往往需要用到Toradex CE Libraries。Toradex 提供了两个版本的库文件,分别用于传统的 PXA和Tegra系列模块,以及基于新的 SoC 模块(Colibri T20、T30、VFxx、iMX6、iMX7 以及 Apalis T30 和 iMX6)。

库文件涉及诸多外设以及系统功能本身,因此相比于 Windows Embedded Compact 的更新频率会更高一些。但是每次更新的发布,不一定影响到所有模块的外设功能和使用。例如早期发布的Toradex CE Libraries尚未支持 Colibri iMX6 的 Flexcan 功能,用户需要直接调用 WinCE 内核中 CAN API。当后续发布的库文件添加针对 iMX6 模块 Flexcan 后,用户可以更加方便得使用 CAN 通讯。但此时,通过库文件使用 CAN API和WinCE 内核中 CAN API命名并不一致,如由 CANOpenHandle(LPCWSTR lpDevName) 变更为Can_Open (HANDLE hPort)。同时新发布的  WinCE镜像也不再允许用户直接调用这些 API。这就导致了原来的应用无法再继续使用。

针对 API 的问题,新版的库文件在设计之初也考虑到了版本迭代和跨平台对用户的影响。在新的库文件中,每一种外设一般都有一个顶层的API,这是所有平台上统一命名的。以CAN 为例,顶层的 API

iMX6 和 Tegra 平台对应实现了 API

因此,当用户使用了顶层 CAN API 时,如果相应平台的驱动出现变更,那么用户将可以免受影响。这对使用不同平台的情况也一样,用户无需修改代码,即可在不同 SoC 的平台上运行同一个代码。

https://developer.toradex.cn/software/windows-embedded-compact/toradex-ce-libraries-and-code-samples

Linux

对于使用开源 Linux 环境的用户,会更易于受到软件版本变更带来的影响。Toradex Linux BSP V2.6 使用了 gcc-linaro-5.2 编译工具,V2.7b2 开始使用 gcc-linaro-6.2 编译工具,V2.8 使用 gcc-linaro-7.3 编译工具。尽管不同版本的编译工具可以实现兼容,但是还是建议针对不同版本的 BPS 使用相应的 GCC 编译工具重新编译应用。

Linux 内核镜像格式,随着 Toradex Linux BSP 升级同样也发生了变换。自 V2.8b2 Linux BSP 开始,Apalis TK1、Apalis iMX6、Colibri iMX6 模块都开始采用了压缩的zImage 格式,之前的BSP 中则使用传统 U-Boot 类型的 uImage 格式。如果用户在升级 BSP 过程中,没有清除之前U-Boot 的环境变量(仍然使用 uImage),那么会导致系统无法启动。对于使用 V1.6 Toradex Easy Installer 之后版本升级 BSP 的用户,则不受影响。该版本开始 U-Boot 的环境变量在更新 BSP 的会被重新配置。

https://developer.toradex.com/software/linux/linux-software/release-details?view=all&issue=17925

除了上面由于 Linux 系统本身的变更外,影响用户更多则是第三方软件的版本升级。一个应用可能依赖于诸多第三方软件,这些软件可能出于安全原因或者性能优化调整 API参数,或者重新命名API,甚至变更库文件名字。以常见的 gstreamer 为例,该组件被许多视频、音频应用所有采用。SoC 厂商也往往会发布针对其系统的 gst 组件,便于用户利用其多媒体硬件如 GPU、VPU实现硬件加速处理。在早期的 BSP,如 V2.4 Beta 1,此时采用 gstreamer-0.1 版本,用户可以通过下面命令使用摄像头。

root@colibri-imx6:~# gst-launch tvsrc ! mfw_v4lsink

而到 V2.5 Beta 2,iMX6 的Vivante多媒体驱动,mfw_v4lsink 也变为 imxv4l2sink,因此用户需要调整命令

root@colibri-imx6:~# gst-launch tvsrc ! imxv4l2sink

目前使用 Linux BSP 则已经使用 gstreamer-1.0,对应的命令也发生变化

root@apalis-imx6:~# gst-launch-1.0 imxv4l2videosrc ! imxipuvideosink use-vsync=true

这些组件的升级变更,给用户提供了新的功能,或者提高运行效率,最终使用户收益。但也意味着,用户需要重新了解新软件的特性,尤其是发生变更的内容可能影响到原有应用的正常执行。

嵌入式软件都会经历一个逐步完善的过程,即使是稳定版本的软件,在特殊的应用场景下也可能出现异常情况。而软件更新迭代就是为了修复期间出现的各种问题。Toradex 为其产品承诺超过10年的生命周期,这不仅包括硬件产品,还有其所使用的软件。这期间用户有可能遇到原有应用无法在新的软件平台上运行。我们建议用户关注我们的产品路线图库文件发布说明,或者订阅我们的新闻简讯,获得关于软件发布的最新信息。

Author 胡珊逢,FAE,韬睿(上海)

Leave a comment

Your email ID will be kept confidential. Required fields are marked *


Please enter the letters as they are shown in the image above. Letters are not case-sensitive.



* Your comment will be reviewed and then added. Thank you.