Цитата(xelax @ Nov 14 2007, 11:04)

контроллер sam7x
Пример компилируется, собирается и работает.
Решил поробовать на его основе сделать что-то своё в итоге программа стала падать (abort and undef).
Сначала решил, что в порыве оптимизации что-то сделал не так кривыми руками. Потратив уйму времени на поиск ошибки обнаружил, что указатели на функции передающиеся в процедуру
Код
struct netif *
netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask,
struct ip_addr *gw,
void *state,
err_t (* init)(struct netif *netif),
err_t (* input)(struct pbuf *p, struct netif *netif))
смещаются на 1 и указывают на нечётные адреса.
вот copy past дебаггера
Код
netif 0x00206704
ipaddr 0x0020176c
netmask 0x00201768
gw 0x00201764
state 0x00000000
init 0x110129 <ethernetif_init+1>
input 0x10be41 <tcpip_input+1>
netifnum 1
и что самое интересное точно такой же эффект наблюдается в самом примере с сайта. Удивительно то, что после исключительной ситуации программа каким-то чудом продолжает работать дальше и это при том что вектора исключительных ситуаций не определенны.
Кто-нибудь запускал этот пример у себя? Эта бага только у меня воспроизводится или это действительно ошибка в проекте?
З.Ы. компилер gcc 4.1.1
Попробуйте собрать в Тумб-моде.... И без оптимизаций...
У меня эта версия собралась и вроде заработала... Как минимум транспорт я проверил...
Но я не менял никаких исходных установок проекта для STR912...
Дальше из-за необходимости идти вперед в работе над изделием я отложил в сторону новую версию стека и работаю пока со старой... Изделие пока не требует новой версии и SNMP, которая реализована в новой версии... Допинфа будет после завершения работы над текущим макетом, когда я вернусь к этой отложенной версии...
Примерно со 2-й половины декабря или сразу после нового года...
Сообщение отредактировал Николай Z - Nov 14 2007, 09:35