скрытое меню

содержание сайта

Для создания содержания вашего сайта надо смотреть каталоги LWIP (1.4.1):

makefsdata
project
www

Находятся каталоги на одном уровне , точнее должны находится.

Если запустить в каталоге makefsdata файл htmlgen.exe , то вывод на консоль будет такой :


makefsdata - HTML to C source converter
     by Jim Pettinato               - circa 2003 
     extended by Simon Goldschmidt  - 2009 

HTTP 1.0 header will be statically included.

Processing all files in directory ..\www and subdirectories...

processing subdirectory /img/...

processing /img/favicon.ico...
processing /404.html...
processing /command.shtml...
processing /index.html...
processing /state.shtml...
processing /zepto.min.js...

Creating target file...

Processed 6 files - done.

В результате в каталоге project появится файл fsdata.c. Этот файл и надо использовать в вашем проекте. Тут на языке С представлен ваш контент.

first defined here

При компиляции проекта можно получить непонятную ошибку "first defined here". Среда разработки и компилятор подсвечивают эту ошибку в районе :
err_t fs_open ( struct fs_file *file , const char *name )

Это ругань на fs_open в файле fs.c . Ругань не на параметры этой функции, а именно на присутствие самой функции fs_open. Приметно , что fs_open по коду является первой функцией по порядку следования.

Обратите внимание как раз в этом в начале в текущий файл включается наш файл #include "fsdata.c" .

Есть такой нюанс в Atollic True Studio , что если файл помечен как исключенный для сборки , то на действие #include "fsdata.c" это НЕ влияет . В результате создается объектный файл fs.o.

Если файл fsdata.c не исключить из сборки , то компилятор создаст естественно fsdata.o .

А теперь вопрос - что общего в файлах fsdata.o и fs.o ? И там и там будут присутствовать одни и те же данные (массивы) :
static const unsigned int dummy_align__img_favicon_ico = 0;
static const unsigned char data__img_favicon_ico[] = {.....
И это даже не смотря на то ,что массивы объявлены с префиксом static .

Короче обратите внимание на файл fsdata.o . Удалите его обязательно. И исключите его из сборки обязательно тоже.

И вот теперь возвращаясь к первоначальной ошибке в данном месте :
err_t fs_open ( struct fs_file *file , const char *name )
как вообще догадаться , в чем причина?...
То есть оказывается , что причина не в fs_open , а выше по коду в #include "fsdata.c".