Buenos días as todos, después de mucho leer y mucha prueba y error con el stack TCP/IP de microchip ya más o menos sé como se organizan los archivos y como editar los principales para configurar mi hardware pero tengo algunas dudas a ver si alguien me puede echar un cable.
Resulta que estoy intentando adaptar un PIC18F4620 al estack y sólo quiero meterle un servidor web, el servidor SNMP y el test para hacer ping, pero a la hora de compilar me da un error que creo que es porque el micro no tiene memoria suficiente y el implementado de la memoria 25LC1024 es solo para alojar la página web, alguna foto o algo así (creo).
El error que me da es este:
MPLINK 4.42, Linker
Device Database Version 1.7 Copyright (c) 1998-2011 Microchip Technology Inc.
Error - section '.code_Helpers.o' can not fit the section. Section '.code_Helpers.o'
length=0x00000abc
Errors : 1
Cómo este compilador no me dice el tamaño de memoria que ocupo en el chip mientras compilo, pues no sé si es que esta llena o que, o por lo menos yo no se la manera de mirarlo a ver si alguien sabe.
Si le saco al proyecto el servidor SNMP si compila bien, pero tengo un problema, estoy utilizando proteus para simular la aplicación y hay algún problema porque el micro se queda esperando la validación de la EEPROM que al parecer nunca llega y se queda el programa pillado en el archivo MainDemo.c en la parte del código que dice:
// Check EEPROM/Flash validitity. If it isn't valid, set a flag so
// that we will save the ROM default values on the next loop
// iteration.
if((NVMValidationStruct.wConfigurationLength != sizeof(AppConfig)) ||
(NVMValidationStruct.wOriginalChecksum != wOriginalAppConfigChecksum) ||
(NVMValidationStruct.wCurrentChecksum != CalcIPChecksum((BYTE*)&AppConfig, sizeof(AppConfig))))
{
// Check to ensure that the vNeedToSaveDefaults flag is zero,
// indicating that this is the first iteration through the do
// loop. If we have already saved the defaults once and the
// EEPROM/Flash still doesn't pass the validity check, then it
// means we aren't successfully reading or writing to the
// EEPROM/Flash. This means you have a hardware error and/or
// SPI configuration error.
if(vNeedToSaveDefaults)
{
while(1);
}
Se queda pillado en el while(1); y de ahí no sale.
¿Qué estoy haciendo mal, el hardware creo que está bien, yo he utilizado los mismos pines de CLK, SDO, SDI para la memoria que para el ENC28J60 y los mismos registros , no creo que sea por eso ¿no? Y para el CS he utilizado otro pin diferente al de ENC.
A la memoria en el proteus le cargo el .bin de la página demo que he generado con la aplicación de Microchip
Si le saco el servidor web y saco la memoria EEPROM, me compila bien y el hardware me hace pin perfectamente.
Otras dudas que tengo es que hay unos archivos demos para las aplicaciones y no sé si estos archivos son muy grandes y no caben todos, la verdad es que yo quiero hacer mi propia web muy básica sólo de información sin botones ni nada si no un texto en pantalla y el servidor SNMP sólo lo quiero para que el micro envíe cierta información que sólo será un dato de temperatura y una cadena, si el nivel de temperatura se excede de un setpoint, se enviaría la cadena a una dirección IP.
No sé muy bien que tendría que tocar, creo que serían los archivos CustomHTTPApp.c y CustomSNMPApp.c , si alguien me puede orientar, gracias a todos.
Espero que lo que pido no sea mucho, se que estáis muy liados y que supone un esfuerzo contestarme y mas a todo este tocho, por eso doy las gracias por vuestro tiempo, la ayuda será bien recibida y aprovechada.
Gracias de nuevo