Перейти к содержанию
    

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

 

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

 

UPD:

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

 

UPD2:

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

 

Вызываю скрипт из GEL, что должно всё включить, но эффекта не наблюдаю.

hotmenu
Setup_Psc_All_On( )
{
    .......

    PSC1_lPSC_enable(0, 3);   // GPIO

    ......
}

Значения регистров прилагаю, они?

post-63539-1403699169_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значения регистров прилагаю, они?

 

Не, не совсем они. Нужного MDSTAT тут нет. Его адрес 01E2780Ch

 

( MDSTAT0 - 01E27800h )

( MDSTAT1 - 01E27804h )

( MDSTAT2 - 01E27808h )

( MDSTAT3 - 01E2780Ch )

( MDSTAT4 - 01E27810h )

....

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, не совсем они. Нужного MDSTAT тут нет. Его адрес 01E27810h

Счас посмотрим этот.

Сделал ещё такую проверку. Запускаю на выполнение скрипт из GEL с кодом

#define SYS_BASE            0x01C14000
#define KICK0R              *(unsigned int*)(SYS_BASE + 0x038)  
#define KICK1R              *(unsigned int*)(SYS_BASE + 0x03c)  
#define PINMUX17            *(unsigned int*)(SYS_BASE + 0x164)  //PINMUX17

hotmenu
Setup_System_Config( )
{
    GEL_TextOut( "Setup PINMUX Registers... " );
    KICK0R = 0x83e70b13;  // Kick0 register + data (unlock)
    KICK1R = 0x95a4f1e0;  // Kick1 register + data (unlock)

    PINMUX17  = 0x22222222;  // LCDIO
   
    GEL_TextOut( "[My test is done!!!]\n" );
}

, как понимаю, в Memory Browser по адресу должен увидеть 0x22222222, но там нет изменений при выполнении скрипта?

В консоли только вижу "ARM9_0: GEL Output: Setup PINMUX Registers...ARM9_0: GEL Output: [My test is done!!!]"

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

, как понимаю, в Memory Browser по адресу должен увидеть 0x22222222, но там нет изменений при выполнении скрипта?

В консоли только вижу "ARM9_0: GEL Output: Setup PINMUX Registers...ARM9_0: GEL Output: [My test is done!!!]"

 

Во первых, я там ошибся с адресом, исправил, сорри.

 

Во вторых - да, должны увидеть 0x22222222. Но, если это сделано до PSC1_LPSС_ENABLE для GPIO, то и не должны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, не совсем они. Нужного MDSTAT тут нет. Его адрес 01E2780Ch

Но это что-то очень близкое по значению, вот то, что по адресам лежит

post-63539-1403700937_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ой. Был не прав. PINMUX это же SYSCFG, а не GPIO.

 

Ну GPIO включен. Так что разбирайтесь, скорее всего, с memory protection, чего это он не дает туда записывать из ARM.

 

После выполнения скрипта, возможно надо обновить содержимое browser, он может автоматом не обновляться, и увидеть там 22222222

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во вторых - да, должны увидеть 0x22222222. Но, если это сделано до PSC1_LPSС_ENABLE для GPIO, то и не должны.

При подключении к Target Configuration GEL и выполнении Target Connect, автоматом выполняется скрипт

OnTargetConnect( )
{
   GEL_TextOut( "\nAM1808 ARM Startup Sequence\n\n" );

   Setup_System_Config( );         // Setup Pin Mux and other system module registers
   Setup_Psc_All_On( );            // Setup All Power Domains
   Setup_PLL0();                   // Setup PLL0 (300MHZ ARM, 300MHz DSP, 133MHz EMIFs
   Setup_EMIFA();                  // Async EMIF
   Setup_PLL1();                   // PLL for DDR Clock
   DDRConfig(132);                 // Setup DDR

   GEL_TextOut( "\nStartup Complete.\n\n" );
}

, где в теле Setup_Psc_All_On( ) прописано

hotmenu
Setup_Psc_All_On( )
{
   int i;
   GEL_TextOut( "Setup Power Modules (All on)... " );

   // PSC0
   PSC0_lPSC_enable(0, 0);   // EDMA_CC0
   PSC0_lPSC_enable(0, 1);   // EDMA_TC0
   PSC0_lPSC_enable(0, 2);   // EDMA_TC1
   PSC0_lPSC_enable(0, 3);   // EMIFA
   PSC0_lPSC_enable(0, 4);   // SPI0
   PSC0_lPSC_enable(0, 5);   // MMCSD0
   PSC0_lPSC_enable(0, 6);   // ARM_AINTC
   PSC0_lPSC_enable(0, 7);   // ARM_RAMROM
   // #8 not used
   PSC0_lPSC_enable(0, 9);   // UART0
   PSC0_lPSC_enable(0, 10);  // SCR0
   PSC0_lPSC_enable(0, 11);  // SCR1
   PSC0_lPSC_enable(0, 12);  // SCR2
   // #13 not used
//    PSC0_lPSC_enable(0, 14);  // ARM

   // PSC1
   PSC1_lPSC_enable(0, 0);   // EDMA_CC1
   PSC1_lPSC_enable(0, 1);   // USB20
   PSC1_lPSC_enable(0, 2);   // USB11
   PSC1_lPSC_enable(0, 3);   // GPIO
   PSC1_lPSC_enable(0, 4);   // UHPI
   PSC1_lPSC_enable(0, 5);   // EMAC
   PSC1_lPSC_enable(0, 6);   // DDR
   PSC1_lPSC_enable(0, 7);   // MCASP0
       PSC1_LPSC_force(8);
   PSC1_lPSC_enable(0, 8);   // SATA

   PSC1_lPSC_enable(0, 9);   // VPIF
   PSC1_lPSC_enable(0, 10);  // SPI1
   PSC1_lPSC_enable(0, 11);  // I2C1
   PSC1_lPSC_enable(0, 12);  // UART1
   PSC1_lPSC_enable(0, 13);  // UART2
   PSC1_lPSC_enable(0, 14);  // MCBSP0
   PSC1_lPSC_enable(0, 15);  // MCBSP1
   PSC1_lPSC_enable(0, 16);  // LCDC
   PSC1_lPSC_enable(0, 17);  // EPWM
   PSC1_lPSC_enable(0, 18);  // MMCSD1
   PSC1_lPSC_enable(0, 19);  // UPP
   PSC1_lPSC_enable(0, 20);  // ECAP
   PSC1_lPSC_enable(0, 21);  // EDMA_TC2
   // #22 & 23 not used
   PSC1_lPSC_enable(0, 24);  // SCR_F0
   PSC1_lPSC_enable(0, 25);  // SCR_F1
   PSC1_lPSC_enable(0, 26);  // SCR_F2
   PSC1_lPSC_enable(0, 27);  // SCR_F6
   PSC1_lPSC_enable(0, 28);  // SCR_F7
   PSC1_lPSC_enable(0, 29);  // SCR_F8
   PSC1_lPSC_enable(0, 30);  // BR_F7
   PSC1_lPSC_enable(0, 3);  // SHARED_RAM

   GEL_TextOut( "[Done]\n" );
}

, т.е. строка PSC1_lPSC_enable(0, 3) есть в наличии, и я должен был увидеть мои 0х22222222?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

, т.е. строка PSC1_lPSC_enable(0, 3) есть в наличии, и я должен был увидеть мои 0х22222222?

 

Это не важно, я же поправился, тут речь про SYSCFG, а не GPIO. Вы должны увидеть 0x22222222, если откроете memory browser ПОСЛЕ исполнения вашего "hotmenu", или если вручную обновите в нем данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не важно, я же поправился, тут речь про SYSCFG, а не GPIO. Вы должны увидеть 0x22222222, если откроете memory browser ПОСЛЕ исполнения вашего "hotmenu", или если вручную обновите в нем данные.

Проверил для регистра PLL0_PLLCTL, этот обновляется после записи через скрипт.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно это. Жаль я не могу проверить это сейчас.

 

Ну тут как вариант, надо включить сначала LCDC в PSC1. А попробуйте другие PINMUX писать, например EMIF. Попробуйте туда записать 22222222 прямо через memory browser, и потом обновить его, для проверки "а записалось ли".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну GPIO включен. Так что разбирайтесь, скорее всего, с memory protection, чего это он не дает туда записывать из ARM.

Почитал про механизм защиты записи регистров, реализуется через регистры KICK0R-KICK1R. В скрипте прописан unlock, но не помогает, ещё нашёл, что со 2 ревизии кремния этот механизм отменён, т.е. в моём случае это никак не влияет (AM1808B). Про memory protection units (MPU1 and MPU2) понял, что один для защиты On-Chip RAM, другой - для DDR2/mDDR SDRAM, т.е. влиять на память для моего PINMUX17 не должно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про memory protection units (MPU1 and MPU2) понял, что один для защиты On-Chip RAM, другой - для DDR2/mDDR SDRAM, т.е. влиять на память для моего PINMUX17 не должно.

 

Возможно, но в любом случае, на сколько я помню, запись в эти регистры (SYSCFG) возможна только из Priveleged mode. В общем, тут моя память закончилась (на сколько я помню, эмулятор всегда в Privileged, поэтому писать должен. Да и тот же GEL, конфигурируя, например, EMIF, свободно меняет PINMUXы). Для дальнейших полезных подсказок надо иметь на столе систему на AM1808, к сожалению сейчас таковой у меня нет.

 

Вдогонку... У меня были похожие глюки на AM3517, когда я случайно запустил его на сильно запредельной частоте PLL... Вряд ли, конечно, у Вас такое же. Но тем не менее...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, но в любом случае, на сколько я помню, запись в эти регистры (SYSCFG) возможна только из Priveleged mode. В общем, тут моя память закончилась (на сколько я помню, эмулятор всегда в Privileged, поэтому писать должен. Да и тот же GEL, конфигурируя, например, EMIF, свободно меняет PINMUXы). Для дальнейших полезных подсказок надо иметь на столе систему на AM1808, к сожалению сейчас таковой у меня нет.

 

Вдогонку... У меня были похожие глюки на AM3517, когда я случайно запустил его на сильно запредельной частоте PLL... Вряд ли, конечно, у Вас такое же. Но тем не менее...

Со скриптом разобрался, оказалось половина исполняемой функции была закоментирована (блокнотом смотрел не заметил комент, после того, как сделал свою, всё записалось и тагда только заметил).

Но из программы по-прежнему не хочет пока писать, читает, как и ранее, нормально.

 

Счас ещё про Priveleged mode читну.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Счас ещё про Priveleged mode читну.

 

Если правильно помню, туда через SWI вход - либо System mode, либо Supervisor. Увидеть же, какой режим сейчас, можно в PSR (биты 4:0)

Изменено пользователем SAURIS GmbH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитал о том, что Вы говорили. Так и есть, написано, что доступ к PINMUX только в режиме Privileged Mode. При остановке на записи в регистр PINMUX смотрю PSR[4:0], там значение 10000b - User Mode. Видимо, в этом-то и проблема. Не понятно, почему в примере от TI нет ничего, чтобы указывало на какие-то дополнительные действия, main начинается с настройки PSC, далее настройка PINMUX.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...