LINUX.ORG.RU

непонятные места в структуре libopencm3

 


0

1

Всем добра! Есть небольшое вопрос к инженерам-эмбеддерам. Решил поподробнее рассмотреть библиотеку libopencm3 и вдруг неожиданно стало непонятно несколько моментов:

  • В каждой папке с конкретным семейством микроконтроллеров есть файл irq.json (например, для STM32F1 он тут libopencm3/include/libopencm3/stm32/f1/) весьма упоротого содержания. Для чего он нужен (то, что в нём перечислены все прерывания, которые может обрабатывать конкретный камень, это и так ясно), не ясно зачем он в формате JSON, и как он влияет на весь проект.
  • Также не ясен такой момент: в директории каждого семейства микроконтроллеров есть заголовочные файлы для конкретной периферии, в которых уже на основе выбранного камня подключается соотвествующий хедер. Например в директории libopencm3/include/libopencm3/stm32/ смотрим в файл adc.h
    #include <libopencm3/cm3/common.h>
    #include <libopencm3/stm32/memorymap.h>
    
    #if defined(STM32F0)
    #       include <libopencm3/stm32/f0/adc.h>
    #elif defined(STM32F1)
    #       include <libopencm3/stm32/f1/adc.h>
    #elif defined(STM32F3)
    #       include <libopencm3/stm32/f3/adc.h>
    #elif defined(STM32F4)
    #       include <libopencm3/stm32/f4/adc.h>
    #elif defined(STM32L1)
    #       include <libopencm3/stm32/l1/adc.h>
    #else
    #       error "stm32 family not defined."
    #endif
    
    только где именно выбирается соотвествующий камень, например STM32L1 это так и не нашёл. В libopencm3/cm3/common.h и libopencm3/stm32/memorymap.h об этом умалчивается.

И в кратце вопросов два: зачем нужен irq.json (и каким образом он пишется) и где выбирать конкретный камень, например STM32L1?


Ответ на: комментарий от CYB3R

Нее, красивых эмбеддщиц не бывает (на моей памяти всего одна представительница прекрасного пола, которая прекрасной, к сожалению не являлась, и ещё она пишет для кортексов только на ассемблере:D)

А если к делу, то особенно интересен первый пункт (про irq.json), и пункт про эклипс:) Насчет второго пункта частично догнал в чем дело.

P.S. К счастью, я не эмбеддщица, а эмбеддер:) просто ава подозрительная:)

S9
() автор топика
Ответ на: комментарий от CYB3R

Лучше посоветуйте, как исправить описанную выше неприятную особенность.

P.S. А эклипс исключать нельзя, он удобный. А железо позволяет его комфортно использовать.

S9
() автор топика
Ответ на: комментарий от S9

Вообщем, эклипс починил. Если кому интересно, то надо было просто перейти Window -> Preferences -> C/C++ -> Editor и снять галочку «Highlight inactive code». И будет тогда счастья:)

P.S. Если кто-нибудь расскажет, зачем же всё таки irq.json в libopencm3, то моей радости не будет предела

S9
() автор топика

Не забивай голову всякой чушью! libopencm3 очень удобна, но т.к. содержит ряд костылей и подпорок, использовать ее стоит лишь при инициализации периферии, да для работы с USB.

По поводу того, где выбирается тип камня, смотри здесь Makefile'ы.

anonymous
()
Ответ на: комментарий от anonymous

Для генерирования документации и кода.

Тогда вопрос немного иначе: где найти описание, как создать свой файл irq.json?

S9
() автор топика
Ответ на: комментарий от S9

Зачем тебе это нужно? Собираешься расширить opencm3 на другой МК и автоматом надоксигенить документацию?

anonymous
()
Ответ на: комментарий от anonymous

Собираешься расширить opencm3 на другой МК и автоматом надоксигенить документацию?

Примерно это и собираюсь сделать:)

S9
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.