Взялся изучать возможности AT91SAM9260 на базе IAR, нужны были примеры работы с Ethernet. Взял пример IAR-овский basic-emac-uip-helloworld-project. Для начала изменит хендлер соединения в hello-world.c файле на следующий:
Код
static int
handle_connection(struct hello_world_state *s)
{
char buffer[1000];
int i;
for (i = 0; i < 250; i++)
buffer[i] = '1' + i % 10;
PSOCK_BEGIN(&s->p);
printf("%d %d\r\n", i, &buffer);
for (i = 0; i < 1000; i++){
printf("Bef:%d\r\n" , i);
PSOCK_SEND(&s->p, buffer, 250);
printf("Aft:%d\r\n" , i);
}
PSOCK_CLOSE(&s->p);
printf("%d %d\r\n", i, &buffer);
PSOCK_END(&s->p);
}
handle_connection(struct hello_world_state *s)
{
char buffer[1000];
int i;
for (i = 0; i < 250; i++)
buffer[i] = '1' + i % 10;
PSOCK_BEGIN(&s->p);
printf("%d %d\r\n", i, &buffer);
for (i = 0; i < 1000; i++){
printf("Bef:%d\r\n" , i);
PSOCK_SEND(&s->p, buffer, 250);
printf("Aft:%d\r\n" , i);
}
PSOCK_CLOSE(&s->p);
printf("%d %d\r\n", i, &buffer);
PSOCK_END(&s->p);
}
Скомпилировал и загрузил на плату SK-AT91SAM9XE512 U-boot'ом...
Через socket-соединение подключаюсь к плате и получаю следующие значения на консоли платы:
Цитата
=== DHCP Configurations ===
- IP : 192.168.0.54
- Mask : 255.255.255.0
- GW : 192.168.0.1
- DNS : 192.168.0.1
===========================
DNS NOT enabled in the demo
250 536881448
Bef:0
Aft:250
Bef:251
Aft:250
Bef:251
Aft:250
Bef:251
Aft:250
Bef:251
Aft:250
Bef:251
....
- IP : 192.168.0.54
- Mask : 255.255.255.0
- GW : 192.168.0.1
- DNS : 192.168.0.1
===========================
DNS NOT enabled in the demo
250 536881448
Bef:0
Aft:250
Bef:251
Aft:250
Bef:251
Aft:250
Bef:251
Aft:250
Bef:251
Aft:250
Bef:251
....
Вопрос следующий: почему?=) Как вызов функции меняет значение переменной, которая ей не передается? (принципиально конечно понятно - функция залезла не в свою память...если конечно я не ошибаюсь).
Более изменений в проект не вносилось.
Использованное IDE - IAR 5.41.0.51741.
Заранее спасибо за ответы.