Как Вы организуете код во встроенных проектах?

«Могу ли я программно очистить консоль в разделе« Сценарий или тест перед почтальоном »в Почтальоне?»

Еще нет, но он есть в списке желаний ...

https://github.com/postmanlabs/postman-app-support/issues/4690

15
задан JeffV 19 October 2008 в 13:49
поделиться

6 ответов

Я пытаюсь организовать его, как будто у меня были неограниченная RAM и ROM, и это обычно удается прекрасный. Как упомянуто в другом месте, не пытайтесь оптимизировать его, пока Вы абсолютно не должны будете.

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

2
ответ дан 1 December 2019 в 04:27
поделиться

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

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

После этих слов следующее довольно типично:

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

Обычно, разумно поддержать ряд платформы определенный код для инициализации и установки, которая выполняет всю конфигурацию и инициализацию до такой степени, когда, Ваш руководитель вступает во владение и запускает Ваше приложение. Это будет также включать платформу определенные hal стандартные программы.

руководитель/приложение, вероятно, сохраняется как отдельный модуль. Все аппаратные средства определенный код должны быть скрыты в hal (как упомянуто выше).

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

<час>

Исключительные обстоятельства, как мог бы быть наложен необычными ограничениями компилятора. например, я столкнулся с некоторыми компиляторами, которые ожидают, что все процедуры обработки прерывания будут скомпилированы в файле отдельного объекта.

2
ответ дан 1 December 2019 в 04:27
поделиться

Я записал и поддержал несколько встроенных продуктов (30 + и рассчитывающий) на разнообразии цели micros, включая MSP430. "Эмпирические правила", с которыми я был самым успешным:

  • Попытка построить универсальные понятия из модулей как можно больше (например, отдельный драйвер кодируют из кода приложения). - Это делает для более легкого обслуживания и повторного использования/портирования проекта к другой цели микро в будущем.
  • НЕ запускаются путем волнения об оптимизированном коде в самом начале. Попытайтесь решить проблему домена сначала и оптимизировать второй. - Ваша микро цель может обработать намного больше "материала", чем Вы могли бы ожидать.
  • Работа для обеспечения удобочитаемости. Хотя самые встроенные проекты, кажется, имеют короткие циклы разработки, проекты часто живут дольше, чем Вы могли бы ожидать, и другой разработчик должен будет, несомненно, работать с Вашим кодом.
7
ответ дан 1 December 2019 в 04:27
поделиться

Я работал с некоторыми датчиками как Небо Tmote, я также видел плохую организацию, и я должен признать, что способствовал ему. Так или иначе я сказал бы, что некоторый беспорядок должен быть, потому что загрузка слишком много модулей или слишком большого количества части программы будет (по моему скромному мнению), ресурсом, уничтожающим также, так попытайтесь знать о пороге между организацией и удобством использования на низких ресурсах.

, Очевидно, это не означает, позволяют главным администраторам начать, но например попытаться получить взгляд на организацию исходный код tinyOS и приложения, это - идея о том, что я пытаюсь сказать.

1
ответ дан 1 December 2019 в 04:27
поделиться

Я работал над 8-разрядными процессорами PIC с подобными ограничениями.

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

Другая подсказка должна разбить логический исходный файл еще в большее количество частей, чем Вы нуждаетесь, затем связываете их #include луг их в единице компиляции. Это позволяет Вам иметь много повторно используемого кода (даже одна стандартная программа на файл), но объединение в любом порядке Вам нужно. Это полезно, например, при попытке встретить ограничения размера единицы компиляции или привередничать, в каких общих подпрограммах Вы нуждаетесь на следующем проекте.

2
ответ дан 1 December 2019 в 04:27
поделиться

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

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

Этот вид игры не помогает вообще для заголовков, которые им можно счастливо оставить как единственные файлы.

1
ответ дан 1 December 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: