rubym
|
|
1 | |
Особенности работы с Keil uVision4 LogicAnalyzer12.02.2013, 18:19. Показов 9014. Ответов 6
Метки нет (Все метки)
Возникла необходимость посмотреть состояния на ногах микроконтроллера (STM32), причем в динамике - нужно видеть ход обмена по интерфейсу I2C. Внешнего логического анализатора нет, запоминающий осциллограф постоянно у кого-то на руках и нужен в другом месте. Но в MDK-ARM есть встроенный виртуальный логический анализатор, причем можно смотреть переменные не только в симуляции, но и через SWJ в реальной железке (правда с некоторыми ограничениями). Есть, общее требование - переменная должна быть определена как глобальная или статическая, временные переменные со стэка, например, он смотреть не может. Есть также ограничения на некоторые периферийные устройства и их регистры. Но конкретно к GPIO это вроде не относится. Переменную с принятыми по SPI значениями АЦП он отрисовывает, а вот регистр IDR (входная защелка порта ВВ) ни в какую. Причем эта же переменная ссылающаяся на входной регистр также добавлена в watch, там она изменяется, в SystemViewer/GPIOB/IDR разумеется тоже, физически обмен какой-то есть, судя по тому что мелькает на обычном осцилле, но на графике все глухо как в танке. Как я даю доступ к порту - создаю псевдопеременную, по сути это указатель:
#define DATA_IN (*((volatile uint32_t *)0x40010C08)) или uint32_t DATA_IN __attribute__((at(0x40010C08))); Keil, её принимает вполне нормально, не ругается - в анализатор тоже без проблем добавляет, но увы никакого обмена на графике не видно. Не могу сообразить где ошибка. Или может для этой цели надо действовать как-то иначе, или же не хватает скорости захвата данных. У АРМа/Кайла в хелпе эта тема освещается довольно скудно. Отладчик МТ-Линк, клон 8-й версии J-Link, по идее все должно работать, трассировка настроена в соответствии с рекомендациями к среде. Может кто имел дело с этим, может подсказать в чем загвоздка??? |
12.02.2013, 18:19 | |
Ответы с готовыми решениями:
6
Чего-то случилось с Keil uVision4. Ограничение объема кода Keil uVision4 LPC1768 Keil uVision4. Деление массивов Определение минимального элемента в массиве (Intel 8051, ASM, Keil uVision4) |
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
|
|
13.02.2013, 14:11 | 2 |
если бы Вы привели примеры ввиде скриншотов, то, думаю, интерес у остальных проснулся бы.
0
|
rubym
|
|
13.02.2013, 15:48 | 3 |
Можно и скриншоты привести, отчего же нет... только чуть позже, у меня отладчик и плата подключены к другой машине. А пока для затравки подброшу ссылочку - у мужика такая же проблема, и я так понял, что обсуждение зашло в тупик - по сути вопроса ему так никто и не посоветовал. Я все больше убеждаюсь, виртуальный логический анализатор в uVision больше рассчитан на работу с симулятором, чем для аппаратной отладки. Там есть даже какой-то скриптовый С-образный язык на котором можно прописать внешние воздействия, вроде тестбенчей в САПРах для ПЛИС. Что еще в Кайловской документации напрягает (ну в части ЛА), что в тех примерах которые у них приведены на скриншотах и по тексту не совсем ясно в каком окружении выполняется программа - симулируемом или аппаратном, и для каких процессорных ядер это вообще работает. Может у них допустим для 8051 или ARM7 скажем какие-то функции реализованы, а для Sortix-M3 их еще нет...
http://www.keil.com/forum/16821/ |
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
|
|
13.02.2013, 16:15 | 4 |
Сообщение от rubym
0
|
rubym
|
|
13.02.2013, 17:47 | 5 |
Например, такая ещё вещь - они в своей документации любят приводить примеры добавляя в ЛА Виртуальные Регистры Трассировки (VTREGs), они по идее должны уже быть предопределены в среде. Хочу я, допустим, посмотреть сигнал на каком-нибудь пине порта ВВ, я должен добавить что-то вроде PORT0.1 или PORT1.7, что по-видимому должно соответствовать GPIOA bit 1 и GPIOB bit 7, но анализатор такие переменные не принимает, говорит что таких сигналов нету - и он прав, их скорее всего действительно нет, т.к. есть подозрение, что конкретно эти примеры относятся к 51-му ядру, а не к Кортексам. Да и структура порта вывода стмки посложнее будет, две отдельные защелки - входная и выходная, не помню как было в 8051. И это не считая других регистров. У меня опять же есть всего несколько VTREG и они никакого отношения к портам не имеют, так же как и SFR, и содержимое вкладки Peripherals - это все или ядро или периферия ядра, но никак не периферия самого MCU. И опять же - во многих местах по тексту не известно точно, что из написанного будет справедливо именно в режиме аппаратной отладки, именно с Sortix-M3, именно с реализацией в младших STM32, именно с J-Linkом определенной версии (v.8x), именно с версией IDE 4.60, а не с 4.23, или 4.11, или 3.хх или ещё какой-нибудь. Они то упоминают, что есть определенные общие ограничения, плюс с некоторым железом еще и дополнительные, но с каким и в чем они состоят, и при каких условиях проявятся х.з. А по ихним скриншотам заметно, что странички файлов помощи писались в разное время, соответственно немножко (а где и множко) разные версии программы - окошки вроде и похожие, но все-таки местами заметно различные.))
http://www.keil.com/support/man/docs/uv ... _setup.htm http://www.keil.com/support/man/docs/uv ... etupex.htm http://www.keil.com/support/man/docs/uv ... phlvar.htm |
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
|
|
14.02.2013, 12:00 | 6 |
тему охотно с Вами поковыряю
Кстати, STM-Studyo как вариант рассматривали? Вроде, тоже позволяет следить за динамикой
0
|
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
|
|
11.03.2013, 19:28 | 7 |
0
|
11.03.2013, 19:28 | |
11.03.2013, 19:28 | |
Помогаю со студенческими работами здесь
7
Библиотека для работы с WG12864 в Keil особенности работы ViewState особенности работы @namelookup Особенности работы деструктора Особенности работы с QTableWidgetItem Особенности работы с обобщениями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |