0

我必须对两个处理器(STM 32 和 MSP 430)进行编程。算法是:

流程一:做算法一

进程 1:向进程 2 发送 hello

进程2:回复消息到进程1

进程 2:完成后执行算法 2 向进程 1 发送消息(数据交换)

流程一:读取数据,做算法一

处理器通过电线 (UART) 链接。编译器是 gcc。我有相同的操作系统(续集)。

我有不同的 API、设备文件和每一层的通信协议。

我的问题是如何对这些处理器进行编程以通过 UART 进行通信?写一个.c文件?还是两个?

我可以写一个makefile还是我必须写两个makefile?

请我需要帮助。我寻找解决方案,但我没有任何明确的解决方案。我非常感谢您的帮助。

此致。

4

1 回答 1

2

您需要学习正确的术语、技术术语的含义以及意识到您拥有两个不同的硬件系统。

处理器通过电线 (UART) 链接。

将两个 UART 相互连接可建立串行通信链路

编译器是 gcc。

STM32 和 MSP430 属于不同的 CPU 架构,因此它们不能使用相同的(交叉)编译器。您可以使用 GNU GCC 工具链,但您需要一个专为 STM32 构建的工具链,以及另一个专为 MSP430 构建的工具链。

我有相同的操作系统。

哪个是什么?FreeRTOS 或 NuttX RTOS 或 uClinux 之类的东西?

我可以写一个makefile还是我必须写两个makefile?

你有两个不同的硬件系统,所以你需要两个工具链。
你需要两个makefile。

我的问题是如何对这些处理器进行编程以通过 UART 进行通信?写一个.c文件?还是两个?

你有两个不同的硬件系统,所以你需要两个程序。
如果您明智地为每个微控制器选择了操作系统,那么参考板上将安装一个基本端口(版本)和一些微控制器的设备驱动程序。如果您使用的是其他板,那么您可能需要进行修改(例如引脚更改和/或端口分配)。

算法是:

流程一:做算法一

进程 1:向进程 2 发送 hello

进程2:回复消息到进程1

进程 2:完成后执行算法 2 向进程 1 发送消息(数据交换)

流程一:读取数据,做算法一

你没有清楚地描述你期望完成什么。
我们可以猜测“进程 1”和“算法 1”正在一个微控制器上执行,而“进程 2”和“算法 2”正在另一个微控制器上执行。
也许“进程 x”实际上应该表示“处理器 x”或“微控制器 x”?

您需要认识到每个微控制器的执行完全独立于其他微控制器。消息交换的正确操作需要同步,这意味着如果消息重复或无序到达,则必须有恢复方法。您不能期望两个微控制器同时启动并自然保持消息同步的完美世界。一个设计良好且稳健的系统应该允许任何一个微控制器随时重新启动,然后重新获得消息同步。

我寻找解决方案,但我没有任何明确的解决方案。

你需要把这个项目分解成更小的部分。

A.
为 STM32 安装工具链。
让 RTOS 在 STM32 上运行。使用PC 上的终端仿真器程序
通过简单的环回程序验证串行端口操作。

B.
为 MSP430 安装工具链。
让 RTOS 在 MSP430 上运行。使用PC 上的终端仿真器程序
通过简单的环回程序验证串行端口操作。

C.
设计一个消息交换协议。您最初的提议似乎是一个点对点方案。这会使设计难以稳健。
两个微控制器之间的主从关系导致系统更简单、更健壮。主人总是在掌管。除非主请求,否则从永远不会发送任何内容。主设备将定期使用轮询消息查询从设备。那是从机响应其状态或计算结果的机会。

D.
了解状态机
学习如何编写程序来实现状态机。
将消息交换协议转换为状态机。
将每个微控制器需要为消息交换执行的步骤或阶段转换为每一侧的状态机。

E.
实施每一方。测试。整合。测试。

于 2014-09-12T06:05:39.243 回答