Makefile для последовательной связи между двумя процессорами (gcc)

мне нужно запрограммировать два процессора (STM 32 и MSP 430). алгоритм такой:

Процесс 1: выполнить алгоритм 1

Процесс 1: отправить привет процессу 2

Процесс 2: ответ на сообщение для процесса 1

Процесс 2: выполните свой алгоритм 2, когда закончите, отправьте сообщение процессу 1 (обмен данными)

Процесс 1: прочитать данные и выполнить алгоритм 1

Процессоры связаны проводами (UART). компилятор gcc. у меня такая же ОС (contiki).

У меня есть разные API, файлы устройств и протоколы связи для каждого уровня.

Мой вопрос: как запрограммировать эти процессоры для связи через UART? написать один файл .c? или два?

Могу ли я написать make-файл или мне нужно написать два make-файла?

Пожалуйста, мне нужна помощь. Я искал решение, но у меня не было четкого решения. Я очень ценю вашу помощь.

С наилучшими пожеланиями.


person Nabiha Saidi    schedule 09.09.2014    source источник
comment
Вам нужно отредактировать теги с соответствующими. Почему юникс? В вашем вопросе не упоминается Unix. SoC не подходит. Обычно ни STM32, ни MSP430 не считаются SoC, поскольку они не имеют MMU, а скорее классифицируются как микроконтроллеры.   -  person sawdust    schedule 12.09.2014
comment
Все нормально. я изменил теги :)   -  person Nabiha Saidi    schedule 23.09.2014


Ответы (1)


Вам нужно изучить правильную терминологию, значение технических терминов и осознание того, что у вас есть две разные аппаратные системы.

Процессоры связаны проводами (UART).

При соединении двух UART друг с другом устанавливается последовательный канал связи.

компилятор gcc.

STM32 и MSP430 имеют разные архитектуры ЦП, поэтому они не могут использовать один и тот же (кросс)компилятор. Вы можете использовать набор инструментов GNU GCC, но вам нужен один, созданный только для STM32, и другой, созданный только для MSP430.

у меня такая же ОС.

Который является то, что? Что-то вроде FreeRTOS или NuttX RTOS или uClinux?

Могу ли я написать make-файл или мне нужно написать два make-файла?

У вас есть две разные аппаратные системы, поэтому вам нужны две цепочки инструментов.
Вам нужны два make-файла.

Мой вопрос: как запрограммировать эти процессоры для связи через UART? написать один файл .c? или два?

У вас есть две разные аппаратные системы, поэтому вам нужны две программы.
Если вы грамотно выбрали ОС для каждого микроконтроллера, то на эталонной плате будет установлен базовый порт (версия) и некоторые драйверы устройств для микроконтроллера. . Если вы используете какую-то другую плату, вам, вероятно, придется внести изменения (например, изменить контакты и/или назначить порты).

алгоритм такой:

Процесс 1: выполнить алгоритм 1

Процесс 1: отправить привет процессу 2

Процесс 2: ответ на сообщение для процесса 1

Процесс 2: выполните свой алгоритм 2, когда закончите, отправьте сообщение процессу 1 (обмен данными)

Процесс 1: прочитать данные и выполнить алгоритм 1

Вы не четко описали, что вы ожидаете получить.
Мы можем предположить, что Процесс 1 и алгоритм 1 выполняются на одном микроконтроллере, а Процесс 2 и алгоритм 2 выполняются на другом микроконтроллере.
Возможно, Процесс x на самом деле должен означать процессор x или микроконтроллер x?

Вы должны осознавать, что каждый микроконтроллер работает полностью независимо от другого микроконтроллера. Для правильной работы обмена сообщениями требуется синхронизация, а это значит, что должны быть способы восстановления, если сообщение повторяется или поступает не по порядку. Вы не можете ожидать идеального мира, в котором оба микроконтроллера запускаются одновременно и естественным образом поддерживают синхронизацию сообщений. Хорошо спроектированная и надежная система должна позволять перезапускать любой микроконтроллер в любое время, а затем восстанавливать синхронизацию сообщений.

Я искал решение, но у меня не было четкого решения.

Вам нужно разбить этот проект на более мелкие части.

A.
Установите набор инструментов для STM32.
Запустите RTOS на STM32.
Проверьте работу последовательного порта с помощью простой программы обратной связи, используя программу-эмулятор терминала. на ПК.

B.
Установите набор инструментов для MSP430.
Запустите RTOS на MSP430.
Проверьте работу последовательного порта с помощью простой программы обратной связи, используя программу-эмулятор терминала. на ПК.

C.
Разработайте протокол обмена сообщениями. Ваше первоначальное предложение похоже на одноранговую схему. Это может затруднить надежность конструкции.
Взаимоотношения между двумя микроконтроллерами ведущий-ведомый делают систему более простой и надежной. Мастер всегда на связи. Ведомый никогда ничего не отправляет, если только ведущий не запрашивает его. Ведущее устройство будет периодически опрашивать ведомое устройство с помощью сообщения опроса. Это возможность подчиненного устройства ответить своим статусом или результатами вычислений.

D.
Узнайте о машинах состояний. .
Узнайте, как написать программу для реализации конечного автомата.
Преобразуйте протокол обмена сообщениями в конечный автомат.
Преобразуйте шаги или фазы, которые должен выполнять каждый микроконтроллер. для обмена сообщениями в конечный автомат для каждой стороны.

E.
Реализовать каждую сторону. Контрольная работа. Интегрировать. Контрольная работа.

person sawdust    schedule 12.09.2014
comment
Спасибо большое за ответ и советы. Используемая ОС - contiki. На нем установлены два компилятора STM32 и MSP430. у меня есть некоторые драйверы устройств, установленные в contiki, но я должен установить другие (надеюсь, что у меня не возникнет проблем в этой части). Что касается моих слов, которые я использовал, процесс 1 - это микропроцессор 1, который будет выполнять алгоритм 1 (программу и функции). Теперь я изучаю синхронизацию между микроконтроллерами и конечными автоматами, чтобы иметь надежную систему и иметь хорошую стратегию. - person Nabiha Saidi; 17.09.2014