Здравствуйте, господа хорошие.
Попробую получить информацию здесь.
При освоении TI RM48-DRV-KIT столкнулся с некоторыми вещами:
1. при использовании CCS и примитивнейшего XDS100v2, встроенного в RM48CTRLCARD, совместно со встроенными в CCS драйверами, есть возможность, не прерывая процессор, прочитать/изменить любую ячейку памяти, а также при прерывании процессора не запрещать IRQ (что чрезвычайно важно при отладке алгоритма управления моторами, я из-за отсутствия такой возможности в других отладчиках пару моторов спалил).
2. JLink (в том числе GDB) типа имеет возможность считывания памяти без прерывания процессора для ядер Cortex, однако, переписывание с разработчиками привело к тому, что для ядра Cortex-R4 данная функциональность будет недоступна, потому как "в общем случае ядро R4 имеет кэш-память, и могут быть прочитаны не те данные", хотя для платформы Hercules кэша нет. Разработчики драйверов Segger не хотят детектировать, что чип -- один из Hercules, и разрешать такие операции
3. Обсуждение на e2e привело к пониманию, что GCC (GDB) там в весьма примитивном виде, и никто ничего мне не ответит
4. Также "объявленная в стадии бета-тестирования" служба поддержки JLink на e2e для родной среды CCS не работает. Я сначала хотел туда об глюке написать. Описанная невозможность останова при работающем IRQ или чтения памяти является ошибкой, потому что для TI имеется много примеров с алгоритмами управления двигателями, и они все используют данную возможность (и они работают при CCS + любой XDS, в отличие от CCS + JLink)
Ну и вопрос. Имеют ли свободные тулчейны (GDB) в принципе возможность вывода информации через JTAG без останова процессора? Имеют ли они возможность не отключать IRQ/FIQ при срабатывании точек останова?
Я сейчас использую eclipse + gnu arm toolchain + jlink, но, похоже, придётся переходить на XDS (200 или 560v2, после определения необходимых требований по трассировке) и CCS, что меня несколько напряжёт по причине отвлечения на освоение нового инструментария.