在这篇文章中,尽管事实上它是纯粹的PR并谈论了我们的新产品(作者的观点),但我还是试图描述我们的有用经验。
我们和我们的客户在组织设备软件的远程开发时遇到了哪些问题,如何解决这些问题,以及嵌入式系统远程软件开发的软件和硬件组合Redd从何而来? 为什么会出现这个“盒子”,以及生活(再次,作者的观点)将如何改变数百万嵌入式系统,物联网设备,汽车,飞机,通讯设备开发人员的生活。

我为一家名叫
MIR的公司工作。 不要与支付系统混淆,我们与之无关。
在我们的案例中,WORLD代表开发工具工作室。
我们为俄罗斯和外国客户开发系统软件。 典型的客户是微控制器和微处理器的制造商,通常具有一些非标准的,相对于标准的扩展,并且可能具有自己的体系结构。
我们为他们开发了开发工具:IDE,编译器,实时操作系统,调试器,模拟器,分析器和其他SDK组件。
同时,我们还致力于嵌入式系统软件的开发。 例如,对于德国汽车制造商,我们生产用于现代仪表板的软件。 我们还从事航空电子项目,开发用于组织“智能仪表”和无人机的网状网络的软件,为访问控制系统定制软件,并在IoT市场(例如智能插座)上工作。 通常,有许多有趣的项目证明在解决新兴问题方面获得了相当不标准的经验。

对于客户,我们是外部开发人员。 此外,我们位于圣彼得堡,诺夫哥罗德和克拉斯诺亚尔斯克,我们的客户分别在莫斯科,泽列诺格勒,图拉,沃罗涅日,德国和韩国。
同时,我们为设备开发软件。 为了对特定设备进行编程,程序员必须拥有该设备。
如果某人突然对“技术”不熟悉:您需要一台工作的计算机,其中安装了必要的开发工具,例如IDE。 设备必须连接到同一台计算机上:调试板,仪表板(如果我们在谈论汽车的开发)。 看起来像图片中的样子:

开发人员在计算机上编写代码并将其下载到执行该代码的设备上。
显然,如果没有设备本身,就不可能检查可操作性,也就不可能调试或优化。 此外,对于程序员而言,重要的是要物理地查看设备发生了什么:哪些LED闪烁,屏幕上显示的内容,轮子在哪里旋转。
开发者问题
问题就从这里开始。 我们遇到
的第一个问题是设备的可用性。
许多企业在生产初期就制造出独特的作品。 在世界上,它们实际上只是一,二或五件。 对于客户而言,将它们转让给外部开发人员(对我们而言)是一个大问题,也是一项艰巨的任务。 可能根本就没有免费的设备。
例如,JSC PKK Milander的新处理器1967044就是这种情况。 它仍然处于OCD的完成状态,但是现在需要完成开发工具。
第二个问题是 ,当产品很少时,其中会出现很多硬件问题。 而且,如果该产品是从莫斯科来的,而我们发现硬件有误,则可以在一天之内将产品移交给制造商进行更正。 如果产品来自德国? 您需要将产品发送回开发人员,等待更正并返回。 所有这些既不快速也不昂贵。 在我们等待更正的设备时,程序员仍然有停机时间,并且项目截止日期有所改变。 还有一些客户出于安全原因仅亲自运输设备。 但是,硬件错误通常比它们所能承受的更为常见。
总的来说,世界上边界的存在是不断造成不便的严重障碍之一。 甚至从我们附近的欧洲来的设备交付也变成了一种追求,但是从韩国或美国来的设备交付成为了一项追求。我不会具体说明出现的问题以及如何解决这些问题,我只能说它们都会增加客户的项目时间和成本。 这意味着它们会降低我们的竞争力。
另一个问题是设备可能会损坏。 运输会增加设备损坏的风险,并增加时间和物流成本的损失。 设备必须断开,包装,转移,拆箱,连接和配置,包括在支架中。
现在,假设您正在开发一种气体分析仪,该气体分析仪配有几个大而重的气瓶...

或直升机的喷雾系统。


现在,这类系统的调试必须在仿真器上完成,尽管远程检查某些内容会更加方便(例如,喷雾发动机的PID控制,当客户在本赛季开始时尝试安装喷射或化油器发动机或在其控制系统中扭曲可变电阻器时) 。
但是,即使程序员在同一建筑物中,也会出现问题。
如果没有正式的转移流程,并且设备在项目中的程序员之间流动,则设备可能会“丢失”。 或者,如果有正式流程,但设备可以官僚作风,则设备可以在很长一段时间内“转到”开发人员手中。 我不能说我们真的失去了客户的设备,但是在某些情况下,目前尚不清楚谁确切地拥有调试板,以及还有多长时间仍在忙。 情况并不紧急,仅需五分钟即可解决,但是有许多项目。 为什么要花额外的时间?
程序员非常上瘾,这一事实使问题更加复杂。 因此,如果他们之间为获得相同的费用而竞争(这种情况经常发生,因为我们主要使用独特的硬件),那么不可避免的是临时的“覆盖”和等待服务的员工的停机时间。
即使您是一个出色的领导者,并建立了出色的流程和物流,您仍然会通过解决一个远程编程解决方案而无动于衷地失去效率。
例如,在这种情况下。 在开发的最后阶段,测试开始。 它不是一个周期,而是与开发同步进行。 测试人员检查所做的功能,查找错误,然后程序员修复错误,然后需要测试,依此类推。 开发人员和测试人员都需要同一项目中的设备。 而且,例如,如果您的办公室位于克拉斯诺亚尔斯克(Krasnoyarsk)和大诺夫哥罗德(Veliky Novgorod),则该设备几乎可以全天候工作。 白天(晚上)(在莫斯科),诺夫哥罗德的程序员编写了代码,然后在清晨(由于时差为4个小时),克拉斯诺亚尔斯克的测试人员在工作时间内连接并完全测试了同一设备。
传统解决方案
结论很明显-远程使用铁可能会非常有利。 您需要将所有硬件放在一处,并为团队提供远程访问权限。
开发人员轮流连接到该设备,进行操作,完成任务并断开连接,从而为下一个设备腾出空间。
而且,该方案中的所有内容都很棒,但是无法使用对与产品连接的计算机的标准远程访问。
大多数情况下,
不可能使用不同的接口来连接硬件:通常,计算机的设置有限,并且没有适配器就无法直接连接到调试板。 例如,您将需要购买允许远程连接的编程器。
如果您仍然可以连接,那么开发人员仍然
将无法控制设备的
电源设置 :老实说不重启设备。 要按开/关按钮或拔下电源线的插头,您必须给办公室的同事打电话,以便他亲自去做。
然后,一位程序员“敲定一个念头”的一位同事将不得不回到原先5-10分钟,这还不算他正在跑步的时间,而且他在电话中被告知要拉动哪个开关。 因此,请在与当前项目无关的多个项目上一次闲置工时和数十个工时。
此外,
尚不清楚设备在物理上会发生什么 。 屏幕上显示的内容或已开发设备的指示器上的指示灯如何闪烁。 并非总是必要的,但是这种需求通常在最不适当的时刻出现。
当然,可以尝试绕过这些限制。 购买遥控继电器,以便可以重新启动设备,用于监视的网络摄像头,安装所有设备并进行配置。 此外,如果我们设法向所有人传达如何使用它,在哪里“进入”以及以正确的顺序进行操作,那么我们将更接近解决方案...
除了当开发人员的数量超过设备的数量时,
访问过程没有集中且清晰的组织 。 在与团队合作时,您将必须以某种方式分别商定谁和何时使用设备。
Redd-远程编程复合体
全面解决所有问题的想法浮出水面,甚至起初我们也无法理解为什么当我们开始寻找竞争者时却没有人做过这样的事情。 我们找到了一些解决方案,但在某些方面次等。 每个人都在各自的领域中做一些事情:纯粹是调试JTAG,有人模拟,但是您还需要调试,保持现状,观察,增强功能以及访问控制。 在综合大楼中,没有人分别这样做,也没有完全有效的解决方案。
因此,我们开始开发Redd(代表远程开发设备)。 这是一个硬件-软件复合体,它使用许多标准和自定义通信协议来组织通过Internet或局域网对微电子设备的访问。

我们没有追求“纳米创新”。 实际上,Redd是一种简单易懂的技术,并且将简单的技术组合在一个设备中,总的来说,它可以为我上文所述的问题提供解决方案。
Redd可以通过各种接口连接到设备,从而消除了使用大量设备的问题,可以管理电源,现在您可以在没有任何帮助的情况下重新启动设备。 有一个摄像机,开发人员可以通过它实时查看设备发生了什么。

另外,产品的服务器部分允许您通过日历界面预订设备并控制访问。

从技术上讲,Redd由两个相关组件组成:“远程终端”和服务器软件。
远程终端是基于Intel处理器的PC兼容计算机,配有我们自己正在开发的接口扩展板。 在第一个版本(三月份)中,将提供以太网和USB主机(JTAG)。 在第二个(六月)– UART,以太网,GPIO,SPI(+ SPI闪存),SDIO(带有用于SD卡仿真器的适配器),I2C,USB 2.0 OTG,PCIe,LVDS,RS232 CMOS,用于电源开关和逻辑的电源开关激活键,例如按钮。

该器件具有最常用的一组接口,此外还有一个用于实现任何非标准功能的FPGA。 由于系统是在复杂的系统中设计的,因此可以确保没有相互冲突。 界面将与项目一起在整个项目中进行,而无需额外购买。
UPD:这是带有Redd接口连接器的外部板的外观。 它“粘”在前面板上的连接器中,并允许使用标准接口。 尽管也可以有变体,如其他照片中所示,没有板。

发达的设备通常不可能在战斗条件下不断进行测试。 一架直升机只需支付50欧元即可获得起飞和降落的调度支持。 一直开着车是不现实的。 船舶并不总是在海上。 通常,我们需要模拟器。
系统如何与外界通信? 通过连接到各种总线的传感器。 嗯,执行器的信号也在总线上发出。 当前的轮胎范围很广。 可以是CAN,UART(在CMOS,RS232,RS485版本中),以太网,MODBUS(通过相同的UART或以太网),不同级别的数字线路等等,依此类推。
一种典型的解决方案是通过将传感器和执行器仿真器连接到总线来制造它们。 开发中的设备将考虑它收到的真实信息,而开发人员将模仿实际工作的各种场景,调试工作算法。 当然,对于每个项目,您都可以购买各种接口的控制器并进行连接。
或者,您可以连接Redd而不是这些传感器和执行器,编写其工作的模拟器(即它们,即,我们模拟外部环境),然后调试认为在汽车或其他地方的正在开发的设备,然后执行调试目标逻辑。 通过这种机制,测试人员将能够检查边界线,甚至是故意的错误情况,这些情况在普通测试中很难或完全不可能再现。
组合系统的服务器部分直接位于终端上。 开发人员可以通过网络查看哪些设备以及何时可用。 可以在日历上预订它们,以便自动授予他访问权限。 它通过ssh协议连接到终端,并通过它与调试器和设备仿真器的管理连接。 此外,Redd的操作模式不仅可以是多用户的,而且可以同时连接多个设备。

因此,Redd允许组织内部或外部开发人员对设备(或一组设备,可以将多个设备连接到一个终端)的远程访问,规划和管理随时间的访问,而无需进行物理移动。

额外的好处-Redd也可以用于向外部客户展示产品,以及无需实际转移即可向客户展示产品。 或用于组织远程学习设备编程,这可能对微处理器制造商或教育机构很感兴趣。
现在呢
现在我们正在完成第一个版本的开发,它将在三月初发布,并且已经
可以预订 (当然,是优惠价格)。
本文的主要目标(广告除外)是收集反馈。
如果您不同意本文中描述的问题,请写信,或者您可以命名我忘记的那些问题。
也许您知道我们尚未找到的解决方案,或者您以自己的方式解决了这些问题。
或者他们愿意在产品开发中以友好的言语(或可能不仅是)支持我们。
我很乐意发表评论。