doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Вот именно на этом рисунке и написано, что его состояние по умолчанию - 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 ...... } Значения регистров прилагаю, они? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sauris 0 25 июня, 2014 Опубликовано 25 июня, 2014 (изменено) · Жалоба Значения регистров прилагаю, они? Не, не совсем они. Нужного MDSTAT тут нет. Его адрес 01E2780Ch ( MDSTAT0 - 01E27800h ) ( MDSTAT1 - 01E27804h ) ( MDSTAT2 - 01E27808h ) ( MDSTAT3 - 01E2780Ch ) ( MDSTAT4 - 01E27810h ) .... Изменено 25 июня, 2014 пользователем SAURIS GmbH Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Не, не совсем они. Нужного 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!!!]" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sauris 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба , как понимаю, в Memory Browser по адресу должен увидеть 0x22222222, но там нет изменений при выполнении скрипта? В консоли только вижу "ARM9_0: GEL Output: Setup PINMUX Registers...ARM9_0: GEL Output: [My test is done!!!]" Во первых, я там ошибся с адресом, исправил, сорри. Во вторых - да, должны увидеть 0x22222222. Но, если это сделано до PSC1_LPSС_ENABLE для GPIO, то и не должны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Не, не совсем они. Нужного MDSTAT тут нет. Его адрес 01E2780Ch Но это что-то очень близкое по значению, вот то, что по адресам лежит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sauris 0 25 июня, 2014 Опубликовано 25 июня, 2014 (изменено) · Жалоба Ой. Был не прав. PINMUX это же SYSCFG, а не GPIO. Ну GPIO включен. Так что разбирайтесь, скорее всего, с memory protection, чего это он не дает туда записывать из ARM. После выполнения скрипта, возможно надо обновить содержимое browser, он может автоматом не обновляться, и увидеть там 22222222 Изменено 25 июня, 2014 пользователем SAURIS GmbH Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Во вторых - да, должны увидеть 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sauris 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба , т.е. строка PSC1_lPSC_enable(0, 3) есть в наличии, и я должен был увидеть мои 0х22222222? Это не важно, я же поправился, тут речь про SYSCFG, а не GPIO. Вы должны увидеть 0x22222222, если откроете memory browser ПОСЛЕ исполнения вашего "hotmenu", или если вручную обновите в нем данные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Это не важно, я же поправился, тут речь про SYSCFG, а не GPIO. Вы должны увидеть 0x22222222, если откроете memory browser ПОСЛЕ исполнения вашего "hotmenu", или если вручную обновите в нем данные. Проверил для регистра PLL0_PLLCTL, этот обновляется после записи через скрипт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sauris 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Странно это. Жаль я не могу проверить это сейчас. Ну тут как вариант, надо включить сначала LCDC в PSC1. А попробуйте другие PINMUX писать, например EMIF. Попробуйте туда записать 22222222 прямо через memory browser, и потом обновить его, для проверки "а записалось ли". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Ну GPIO включен. Так что разбирайтесь, скорее всего, с memory protection, чего это он не дает туда записывать из ARM. Почитал про механизм защиты записи регистров, реализуется через регистры KICK0R-KICK1R. В скрипте прописан unlock, но не помогает, ещё нашёл, что со 2 ревизии кремния этот механизм отменён, т.е. в моём случае это никак не влияет (AM1808B). Про memory protection units (MPU1 and MPU2) понял, что один для защиты On-Chip RAM, другой - для DDR2/mDDR SDRAM, т.е. влиять на память для моего PINMUX17 не должно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sauris 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Про memory protection units (MPU1 and MPU2) понял, что один для защиты On-Chip RAM, другой - для DDR2/mDDR SDRAM, т.е. влиять на память для моего PINMUX17 не должно. Возможно, но в любом случае, на сколько я помню, запись в эти регистры (SYSCFG) возможна только из Priveleged mode. В общем, тут моя память закончилась (на сколько я помню, эмулятор всегда в Privileged, поэтому писать должен. Да и тот же GEL, конфигурируя, например, EMIF, свободно меняет PINMUXы). Для дальнейших полезных подсказок надо иметь на столе систему на AM1808, к сожалению сейчас таковой у меня нет. Вдогонку... У меня были похожие глюки на AM3517, когда я случайно запустил его на сильно запредельной частоте PLL... Вряд ли, конечно, у Вас такое же. Но тем не менее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Возможно, но в любом случае, на сколько я помню, запись в эти регистры (SYSCFG) возможна только из Priveleged mode. В общем, тут моя память закончилась (на сколько я помню, эмулятор всегда в Privileged, поэтому писать должен. Да и тот же GEL, конфигурируя, например, EMIF, свободно меняет PINMUXы). Для дальнейших полезных подсказок надо иметь на столе систему на AM1808, к сожалению сейчас таковой у меня нет. Вдогонку... У меня были похожие глюки на AM3517, когда я случайно запустил его на сильно запредельной частоте PLL... Вряд ли, конечно, у Вас такое же. Но тем не менее... Со скриптом разобрался, оказалось половина исполняемой функции была закоментирована (блокнотом смотрел не заметил комент, после того, как сделал свою, всё записалось и тагда только заметил). Но из программы по-прежнему не хочет пока писать, читает, как и ранее, нормально. Счас ещё про Priveleged mode читну. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sauris 0 25 июня, 2014 Опубликовано 25 июня, 2014 (изменено) · Жалоба Счас ещё про Priveleged mode читну. Если правильно помню, туда через SWI вход - либо System mode, либо Supervisor. Увидеть же, какой режим сейчас, можно в PSR (биты 4:0) Изменено 25 июня, 2014 пользователем SAURIS GmbH Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 25 июня, 2014 Опубликовано 25 июня, 2014 · Жалоба Почитал о том, что Вы говорили. Так и есть, написано, что доступ к PINMUX только в режиме Privileged Mode. При остановке на записи в регистр PINMUX смотрю PSR[4:0], там значение 10000b - User Mode. Видимо, в этом-то и проблема. Не понятно, почему в примере от TI нет ничего, чтобы указывало на какие-то дополнительные действия, main начинается с настройки PSC, далее настройка PINMUX. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться