реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> TI AM1808, разные вопросы
doom13
сообщение Jun 25 2014, 08:21
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Не работает кусок кода для настройки регистра , в чём может быть проблема:
Код
unsigned int *pPinMux = (unsigned int *) PINMUX_REG_ADDR;

void SetPinMux(void)
{
     unsigned int savePinmux = 0;

     savePinmux = *pPinMux;
     savePinmux |= 1;
     *pPinMux = savePinmux;
}

Если указатель на обычный кусок памяти - всё гуд.
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 25 2014, 08:39
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Как вариант, этому блоку, в котором находится регистр, не включен клок, или он не выведен из состояния резета (по аналогии с другими АРМ-ами TI)


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 25 2014, 09:04
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 25 2014, 11:39) *
Как вариант, этому блоку, в котором находится регистр, не включен клок, или он не выведен из состояния резета (по аналогии с другими АРМ-ами TI)

Я могу записать данные по этому адресу через Memory Browser и прочитать. Могу сделать вывод, что клок есть и из ресета выведен!?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 25 2014, 09:30
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(doom13 @ Jun 25 2014, 11:21) *
в чём может быть проблема
Думаю, что проблема в уровне подготовки программиста. Оптимизатор мог выкинуть этот код как не делающий никакой полезной работы. Для объяснения, что подобные действия программиста имеют смысл, создатели языка придумали квалификатор volatile.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 25 2014, 09:40
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 25 2014, 13:04) *
Я могу записать данные по этому адресу через Memory Browser и прочитать. Могу сделать вывод, что клок есть и из ресета выведен!?


Именно в тот момент, когда "этот код не работает" ? То есть, поставив туда точку останова, и после ее срабатывания?

Еще попробуйте убрать в скобки "PINMUX_REG_ADDR" - может быть он объявлен как арифметика без скобок в дефайне, и тогда результат от (unsigned int*) может быть непредсказуем.


2 Сергей Борщ - Ну раз "Если указатель на обычный кусок памяти - всё гуд" - то, вроде, volatile тут не причем. Да и не должен оптимизатор такое выкидывать, когда работа через указатель, объявленный глобально.

Сообщение отредактировал SAURIS GmbH - Jun 25 2014, 09:42


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 25 2014, 09:50
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Сергей Борщ @ Jun 25 2014, 12:30) *
Думаю, что проблема в уровне подготовки программиста. Оптимизатор мог выкинуть этот код как не делающий никакой полезной работы. Для объяснения, что подобные действия программиста имеют смысл, создатели языка придумали квалификатор volatile.

Это пример того, что должен делать код. Сам код из либы TI и написан через макросы. Оптимизатор выключен и он тут не при чём,
читайте внимательнее
Цитата(doom13 @ Jun 25 2014, 11:21) *
Если указатель на обычный кусок памяти - всё гуд.

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 25 2014, 10:13
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(doom13 @ Jun 25 2014, 12:50) *
Это пример того, что должен делать код.
А, так вопрос был адресован телепатам?
Цитата(doom13 @ Jun 25 2014, 12:50) *
Сам код из либы TI и написан через макросы.
В либах тоже могут быть ошибки. И часть из них даже может не проявляться на тех версиях компилятора, которые используют разработчики либы.
Цитата(doom13 @ Jun 25 2014, 12:50) *
Оптимизатор выключен и он тут не при чём,
А, ну тогда успехов в отладке. И еще раз успехов в повторной отладке, которая понадобится после включения оптимизатора.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 25 2014, 10:46
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 25 2014, 12:40) *
Еще попробуйте убрать в скобки "PINMUX_REG_ADDR" - может быть он объявлен как арифметика без скобок в дефайне, и тогда результат от (unsigned int*) может быть непредсказуем.

Нет, проблема не в скобках, что-то другое.
Цитата(SAURIS GmbH @ Jun 25 2014, 12:40) *
Именно в тот момент, когда "этот код не работает" ? То есть, поставив туда точку останова, и после ее срабатывания?

Поставить точку останова перед записью, пройти запись, не увидеть результат в Memory Browser.
Поставить точку останова перед чтением, через Memory Browser записать значение в память, пройти чтение и в переменной вижу верное значение. Т.е. с чтением всё ок, писать не хочет.


Цитата(Сергей Борщ @ Jun 25 2014, 13:13) *
А, так вопрос был адресован телепатам?

Просто программисты с достаточным (ну или крайне высоким) уровнем сначала вникают в суть задачи, а потом пишут достойный код, а не всякую чушь не прочитав задачу до конца. Остальным, смотрю, вопрос оказался понятен, на основании чего и могу судить об их уровне.
Цитата(Сергей Борщ @ Jun 25 2014, 13:13) *
В либах тоже могут быть ошибки. И часть из них даже может не проявляться на тех версиях компилятора, которые используют разработчики либы.

Это известно, поэтому и попробовал переписать их макросы и проверить, что же там не так, ошибка, вижу, не в либе, а где-то глубже.
Цитата(Сергей Борщ @ Jun 25 2014, 13:13) *
А, ну тогда успехов в отладке. И еще раз успехов в повторной отладке, которая понадобится после включения оптимизатора.

Ответ достойный специалиста высочайшего уровня.
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 25 2014, 10:56
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 25 2014, 14:46) *
Поставить точку останова перед чтением, через Memory Browser записать значение в память, пройти чтение и в переменной вижу верное значение. Т.е. с чтением всё ок, писать не хочет.


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


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 25 2014, 11:02
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 25 2014, 12:40) *

Там есть такая штука, как PSC Module, может ли в ней быть проблема? В даташите написано, что касательно GPIO - Always ON, может ли что-либо быть в PSC отключено для GPIO?


Цитата(SAURIS GmbH @ Jun 25 2014, 13:56) *
Возможно, что-то с механизмами защиты памяти. Уровни доступа через эмулятор и у пользовательского кода - это, как говорится, две большие разницы.

Да, вот для c2000 и с6000 от TI были такие штуки как EALLOW и EDIS, которые и разрешают запись защищённых регистров. Но ведь здесь такого нет?!
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 25 2014, 11:04
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 25 2014, 14:59) *
В даташите написано, что касательно GPIO - Always ON, может ли что-либо быть в PSC отключено для GPIO?


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

Цитата(doom13 @ Jun 25 2014, 15:02) *
Но ведь здесь такого нет?!


Зато тут есть куда круче. Memory Protection Unit (MPU), режимы исполнения Supervisor и User, и в самом ARM еще есть MMU.


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 25 2014, 11:22
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 25 2014, 14:04) *
Ну Вы сами же это опровергли, когда я предполагал, что что-то не выведено из резета или обесклочено. Тогда бы и через эмулятор не писалось (хотя, возможно, вопрос еще в GEL, что при запуске под эмуляцией он что-то там сам проинициализировал, а без эмуляции - нет)

Я то может и опроверг, но процессор для меня новый и могу ошибаться. В примере из StarterWare на AM1808 для GPIO в самом начале идёт
Код
/* The Local PSC number for GPIO is 3. GPIO belongs to PSC1 module.*/
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);

, это и смущает, может ли PSC как-то влиять? Если в даташите написано Always ON зачем тогда эта функция?

Цитата(SAURIS GmbH @ Jun 25 2014, 14:04) *
Зато тут есть куда круче. Memory Protection Unit (MPU), режимы исполнения Supervisor и User, и в самом ARM еще есть MMU.

Об этом я пока ничего не знаю, надо читать.
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 25 2014, 11:32
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 25 2014, 15:22) *
Я то может и опроверг, но процессор для меня новый и могу ошибаться. В примере из StarterWare на AM1808 для GPIO в самом начале идёт


ну вообще документация говорит вот что:


20.2.9 Initialization
The following steps are required to configure the GPIO module after a hardware reset:
1. Perform the necessary device pin multiplexing setup (see your device-specific data manual).
2. Program the Power and Sleep Controller (PSC) to enable the GPIO module. For details on the PSC, see the Power and Sleep Controller (PSC) chapter.


А где сказано, что он "Always ON" ? Я вижу в разделе про PSC, что у него состояние по умолчанию "SwRstDisable" а не "Enable" Но, еще раз, раз эмулятор пишет в этот регистр, то это говорит, что он все же включен. Ну, либо, это какие-то глюки каких-то кешей, что эмулятор якобы пишет, но только якобы. Как перевести его в Enable читайте в "8.3.2 Module State Transitions" - там надо задать Enable в его MDCTLn и потом дать "GO" в PTCMD

Сообщение отредактировал SAURIS GmbH - Jun 25 2014, 11:40


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 25 2014, 11:37
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 25 2014, 14:32) *
ну вообще документация говорит вот что:


20.2.9 Initialization
The following steps are required to configure the GPIO module after a hardware reset:
1. Perform the necessary device pin multiplexing setup (see your device-specific data manual).
2. Program the Power and Sleep Controller (PSC) to enable the GPIO module. For details on the PSC, see the Power and Sleep Controller (PSC) chapter.


А где сказано, что он "Always ON" ? Я вижу в разделе про PSC, что у него состояние по умолчанию "SwRstDisable" а не "Enable" Но, еще раз, раз эмулятор пишет в этот регистр, то это говорит, что он все же включен. Ну, либо, это какие-то глюки каких-то кешей, что эмулятор якобы пишет, но только якобы.

Я вот на это смотрел (рисунок), счас попробую найти то, о чём Вы пишете. Регистр, который записать не могу, и отвечает за pin multiplexing.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 25 2014, 11:42
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 25 2014, 15:37) *
Я вот на это смотрел (рисунок),


Вот именно на этом рисунке и написано, что его состояние по умолчанию - SwRstDisable, что значит, что он без клока и в резете. Ну да, питание ему выключить нельзя... Но что это меняет, если ему обрублено все остальное sm.gif sm.gif

Эмулятором считайте регистр MDSTAT19 MDSTAT3 в PSC1 - будет видно, в каком состоянии GPIO

UPD:
По идее, его мог включить (если он включен) начальный загрузчик, который в ROM, если ему надо что-то делать через GPIO.

UPD2:
Его включает GEL файл, вызовом "PSC1_LPSC_enable(0, LPSC_GPIO);" - так что при запуске из-под эмулятора, если GEL подцеплен, то GPIO включен (и вообще, он там все что ни попадя включает).



Сообщение отредактировал SAURIS GmbH - Jun 25 2014, 12:07


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2024 - 06:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01505 секунд с 7
ELECTRONIX ©2004-2016