我必须编程两个处理器(STM 32和MSP 430)。算法是:
过程1:做算法1
流程1:向流程2发送问候
流程2:将msg回复到流程1
过程2:完成后将算法2发送到进程1(数据交换)
过程1:读取数据并执行算法1
处理器通过电线(UART)链接。编译器是gcc。我有相同的操作系统(contiki)。
我有不同的API,设备文件和每层的通信协议。
我的问题是如何编程这些处理器通过UART进行通信?写一个.c文件?还是两个?
我可以写一个makefile,还是我必须编写两个makefile?
我需要帮助。我寻找解决方案,但我没有得到任何明确的解决方案。非常感谢你的帮助。
祝你好运。
答案 0 :(得分:2)
您需要学习正确的术语,技术术语的含义以及您拥有两种不同硬件系统的实现。
处理器通过电线(UART)链接。
将两个UART相互连接可建立串行通信链路。
编译器是gcc。
STM32和MSP430具有不同的CPU架构,因此它们不能使用相同的(交叉)编译器。您可以使用GNU GCC工具链,但是您需要一个专为STM32而构建的工具链,另一个仅为MSP430构建。
我有相同的操作系统。
这是什么? 像FreeRTOS或NuttX RTOS或uClinux这样的东西?
我可以写一个makefile,还是我必须编写两个makefile?
您有两种不同的硬件系统,因此需要两个工具链 你需要两个makefile。
我的问题是如何编程这些处理器通过UART进行通信?写一个.c文件?还是两个?
您有两种不同的硬件系统,因此需要两个程序 如果您明智地为每个微控制器选择了操作系统,那么将有一个基本端口(版本)和一些安装在参考板上的微控制器的设备驱动程序。如果您正在使用其他板,那么您可能需要进行修改(例如引脚更改和/或端口分配)。
算法是:
过程1:做算法1
流程1:向流程2发送问候
流程2:将msg回复到流程1
过程2:完成后将算法2发送到进程1(数据交换)
过程1:读取数据并执行算法1
你还没有清楚地描述你期望实现的目标 我们可以猜测"过程1"和"算法1"正在一个微控制器上执行,那个"过程2"和"算法2"正在另一个微控制器上执行 也许"过程x"实际上应该是指"处理器x"或者"微控制器x"?
您需要认识到每个微控制器的执行完全独立于其他微控制器。正确操作消息交换需要同步,这意味着如果消息重复或无序到达,则必须有恢复方法。您不能指望两个微控制器同时启动并自然保持消息同步的完美世界。一个设计良好且功能强大的系统应该允许任何时候重启微控制器,然后重新获得消息同步。
我寻找解决方案,但我没有得到任何明确的解决方案。
您需要将此项目分解为更小的部分。
一个。
为STM32安装工具链
在STM32上运行RTOS
使用PC上的终端仿真程序,通过简单的环回程序验证串口操作。
B中。
为MSP430安装工具链
在MSP430上运行RTOS
使用PC上的终端仿真程序通过简单的环回程序验证串行端口操作。
℃。
设计消息交换协议。
您的初始提案似乎是点对点方案。这可能使设计难以稳健
两个微控制器之间的主从关系可以实现更简单,更健壮的系统。主人总是在负责。奴隶从不发送任何东西,除非主人请求它。主设备将定期使用轮询消息查询从设备。这是奴隶应对其状态或计算结果的机会。
d。
了解state machines。
学习如何编写程序来实现状态机
将消息交换协议转换为状态机
将每个微控制器需要执行的步骤或阶段转换为消息交换到每一方的状态机。
电子。
实施每一方。测试。整合。测试