Вопрос такой. На Keil 4.72 работает все как надо. Железо рабочее. Пытаюсь сделать новый проект под 5-м кейлом. Там на выбор дают два драйвера. Я выбрал ST802RT1 и хочу его переработать для совместимости с RTL8201CP. Сменил ID и адрес. Переделал проверку ID чтоб проходила с нужной физикой. Всеравно не пингуется. Может кто уже проходил через подобное и подскажете где еще что искать? А физику читает правильно и линк есть. Дальше куда? Собственно вопрос в том, что через неделю подымать проект на работе но уже с F407. Нужен драйвер. Прошу помочь. Спасибо.
А какой кварц нужен? Кейл предлагает 12, а в файлах проекта упоминается 25. Какой нужен?
С драйвером разобрался более-менее. Но появилась неожиданно другая проблема. Сразу после включения коннектится и пингуется. Все нормально. Если я пробую зайти на веб-страничку, то успевает отобразить только маленький текст, а на картинке стопорится. Коннект пропадает и не пингуется. Повторно не коннектится. Что я упуситил? Может что-то в конфигурационных опциях? RTX_Conf_CM.c содержит клеточку, в которой указано 12МГц и 1000 мкС. Уменя кварц 25 МГц. В RTE_Device.h с виду правильно указано 25 МГц и т.п. Однако в свойствах проекта кварц 12 МГц. Помогите разобраться с частотами, где правильно где нет. Может и проблема по симптомам кому знакома. Спасибо.
Golikov A.
Feb 2 2015, 06:59
Проверьте реальную частоту в итоге. После того как все клоки настроили. считайте значения регистров и посчитайте реально полученную частоту. Если правильно, то и пофиг что в какой клеточке стояло.
А про коннект - там нет конфликта с фул-халф дуплекс? параметры сети правильно физикой определились? Надо регистры почитать и поглядеть, все она правильно понимает?
И еще вот что, в кейловском стеке все ошибки с выделением памяти стеку и посылкам и прочее заведены в одну функцию в конце которой стоит while (1). То есть если у вас по какой то причине не выделиться буфер данных для отправки картинки (предполагаб что она больше текста, потому на ней и затык), то вы влетите в эту функцию и проц повиснет в ней намертво. При этом если из нее выйти он бы продолжил пинговаться и так далее... Поглядите куда вы летите в случае ошибок с выделением pbufов
Integro
Feb 2 2015, 07:11
Согласен, 50/50 %, прошива вылитает либо в assert либо hard fault, что бы точнее сказать тут нужно отлачиком смотреть)
Клоки посчитаю, где подвисает посмотрю и отпишусь. В отношении физики я смотрел ее регисты и сопоставлял с проектом на Keil 4.72. Все полностью совпало и тот проект работает как часы. Вот новый проект на 5-м кейле чудит пока.
Integro
Feb 3 2015, 07:31
Цитата(smk @ Feb 2 2015, 11:27)

Клоки посчитаю, где подвисает посмотрю и отпишусь. В отношении физики я смотрел ее регисты и сопоставлял с проектом на Keil 4.72. Все полностью совпало и тот проект работает как часы. Вот новый проект на 5-м кейле чудит пока.
Если код тот же, можно проверить размер кучи и стека в startup.s
Посмотрел где стопорится.
/* Stack overflow detected for the currently running task. */
/* Thread can be identified by calling svcThreadGetId(). */
Получастся переполнен стек. Подскажите где поправить? Я так пноимаю это касается настроек ОС. И что на что менять?
Код
/*--------------------------- os_error --------------------------------------*/
/* OS Error Codes */
#define OS_ERROR_STACK_OVF 1
#define OS_ERROR_FIFO_OVF 2
#define OS_ERROR_MBX_OVF 3
extern osThreadId svcThreadGetId (void);
void os_error (uint32_t error_code) {
/* This function is called when a runtime error is detected. */
/* Parameter 'error_code' holds the runtime error code. */
/* HERE: include optional code to be executed on runtime error. */
switch (error_code) {
case OS_ERROR_STACK_OVF: //подвисает тут!!!
/* Stack overflow detected for the currently running task. */
/* Thread can be identified by calling svcThreadGetId(). */
break;
case OS_ERROR_FIFO_OVF:
/* ISR FIFO Queue buffer overflow detected. */
break;
case OS_ERROR_MBX_OVF:
/* Mailbox overflow detected. */
break;
}
for (;;);
}
Полагаю это там?
Нажмите для просмотра прикрепленного файла
vlad_new
Feb 6 2015, 23:50
стек увеличивай. с 200 байтами работать не будет. хотя бы 2 кило отведиди.
Цитата(vlad_new @ Feb 7 2015, 01:50)

стек увеличивай. с 200 байтами работать не будет. хотя бы 2 кило отведиди.
В выделенном поле установил 2048 байт. Заработало, Спасибо. Хочу спросить как по опыту обычно поступают и где какие значения в той табличке желательно использовать?
Добавил в проект файлы с расширением cgi. Проект отказался собираться. Как в 5-м кейле єто правильно делается?
дошло. префиксы в строчки прописал
При подключении к проекту файла .cgi перестает собираться веб-сайт. Пишет что FCARM не может найти Web.c хотя он есть. Если выкинуть cgi то все нормально. Как всне это правильно в 5-м кейле делается. Хелп читаю но не вполне понятно. Как бы правильно все делаю и не выходит. Подскажите идею как оно на самом деле. Спасибо.
Пока ждал помощи разобрался. Теперь такая проблема. Как вытянуть и поменять локальный айпи?
На вот такое ругается про имя типа не допускается.
Код
// MyIP[0] = LOCALM.IpAdr[0];
// MyIP[1] = LOCALM.IpAdr[1];
// MyIP[2] = LOCALM.IpAdr[2];
// MyIP[3] = LOCALM.IpAdr[3];
Код
/// Local Machine info
typedef struct localm {
uint8_t IpAdr[IP_ADDR_LEN]; ///< Local IP Address
uint8_t DefGW[IP_ADDR_LEN]; ///< Default GateWay
uint8_t NetMask[IP_ADDR_LEN]; ///< Net Mask
uint8_t PriDNS[IP_ADDR_LEN]; ///< Primary DNS Server
uint8_t SecDNS[IP_ADDR_LEN]; ///< Secondary DNS Server
} LOCALM;
Я правильно понимаю что все тут?
vlad_new
Feb 7 2015, 21:10
Ну на счет "все" - это смотря что надо. Лично мне нужны были ещё nlocalm[], lhost_name[], own_hw_adr[]. А так же мне пришлось подправить файл конфигурации Net_Config.c, поскольку там некоторые переменные были объявлены как константы, а мне их надо было менять. К примеру мне нужна была индикация наличия соединения по DHCP. Долго пришлось ковыряться. В результате получилась такая ф-ция: void dhcp_check(void){ if((*(unsigned int)&localm)!=0) LED_DHCP_ON; } Поскольку библиотека постоянно меняется от версии к версии, то и варианты её использования то же могут отличатся. Я пользую 4.73 и как там в 5.xx не знаю.
С версией 4,73 проблем нет, все работает. С версией 5 нужно. Смотрел кейловский хелп. В одном месте написано, что можно менять на лету, но в другом месте упомянутая структура юзером использоваться не должна, что собственно и вижу. Потому и спрашиваю может кто уже дальше продвинулся в этом вопросе и может подсказать что?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.