Romanello 0 27 ноября, 2007 Опубликовано 27 ноября, 2007 · Жалоба Беру Keilовский пример делаю инициализацию MAC, когда доходит до MAC_MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; то уходит на DAbt_Handler, кто может подсказать почему так происходит и что делать? void Init_EMAC(void) { // Keil: function modified to access the EMAC // Initializes the EMAC ethernet controller unsigned int regv,tout,id1,id2; /* Enable P1 Ethernet Pins. */ PINSEL2 = 0x55555555; PINSEL3 = (PINSEL3 & ~0x0000000F) | 0x00000005; /* Power Up the EMAC controller. */ PCONP |= 0x40000000; /* Reset all EMAC internal modules. */ MAC_MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES; MAC_COMMAND = CR_REG_RES | CR_TX_RES | CR_RX_RES; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба data abort - следствие обращения к несуществующему адресу. Пройдите в отладчике непосредственно до иструкции, которая приводит к исключению. Посмотрите, к какому адресу происходит обращение. Разберитесь, почему он неправильный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Romanello 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Любое обращение к регистрам Ethernet контроллера, чтение или запись вызывает это прерывание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iShustov 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Любое обращение к регистрам Ethernet контроллера, чтение или запись вызывает это прерывание. смотрите тогда как эти регистры определены в .h файле Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Romanello 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Да определены они по документации правильно, более того я беру Keilовский пример работы с Ethernet, и происходит такая хня. Неужели никто не пробовал работать с Ethernetом на Keil. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Да определены они по документации правильно, более того я беру Keilовский пример работы с Ethernet, и происходит такая хня. Неужели никто не пробовал работать с Ethernetом на Keil. Я подключал PHY по RMII. Били 2 проблемы: Первая вот здесь: PINSEL2 = 0x50151105; /* selects P1[0,1,4,8,9,10,14,15] */ Позже вышла эррата версии 1,2 и там для разных ревизий в этот регистр нужно писать разные значения. Причем если перепутать - процессор вылетал в DataAbort или в Prefeth(давно было, точно не помню, в эррате все написано). Вторая более уникальная. При выполнении программы из флэшь наблюдался улет в функции инициализации MAC: EMAC_TxDisable(); EMAC_RxDisable();``//* вот после этого вылетал в неопределенное состояние Причем при выполнении кода из RAM все было нормально. Решилась проблема не совсем удачно. Просто закоментировал и все заработало. Потом стоит функция разрешения работы и подпрограмма используется всего один раз при инициализации микроконтроллера, поэтому данная строка не влияет на дальнейшую работу. Контроллер LPC2468, rev A, код пробовал компилировать в обоих режимах. Компилятор IAR. Может это вам чем-нибудь поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться