STM32 Programmier Sammelfaden

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Benutzeravatar
Chefbastler
Beiträge: 2686
Registriert: Mo 12. Aug 2013, 20:21
Wohnort: Südbayern

STM32 Programmier Sammelfaden

Beitrag von Chefbastler »

Reiße hier mal nen allgemeinen Sammelfaden für STM32 Programmierung auf.

Bin grad am basteln mit Ethernet am STM32 und lwIP lib und soll spähter dann nen HTTP Webserver spielen.

Läuft im Moment auf nem STM32F429 mit LAN8742 PHY

HTML Webseite anzeigen tut schon.
CGI Handler funktioniert auch schon soweit.
SSI Handler bekomme ich noch nicht durch den Compiler mit der Fehlermeldung:

Code: Alles auswählen

'FS_FILE_FLAGS_SSI' undeclared here (not in a function)	fsdata.c	/Ethernet-Test-1/Middlewares/Third_Party/LwIP/src/apps/httpd	line 6694	C/C++ Problem
Vermute dass ich in der lib noch was vergessen hab zu aktivieren?
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 Programmier Sammelfaden

Beitrag von Fritzler »

Das sieht aber nicht nach einem GCC Error aus?

FS_FILE_FLAGS_SSI ist wohl ein globales define.
Guck doch mal ind er lwip config ob das richtig gesetzt wird.

Wird es ind er Zeile als #ifdef oder #if abgegfragt?

Guck mal in
lwip/src/include/lwip/apps/fs.h
da ist die definiert.
Benutzeravatar
Chefbastler
Beiträge: 2686
Registriert: Mo 12. Aug 2013, 20:21
Wohnort: Südbayern

Re: STM32 Programmier Sammelfaden

Beitrag von Chefbastler »

Code: Alles auswählen

/*
 * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
 * All rights reserved. 
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission. 
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 * OF SUCH DAMAGE.
 *
 * This file is part of the lwIP TCP/IP stack.
 * 
 * Author: Adam Dunkels <adam@sics.se>
 *
 */
#ifndef LWIP_HDR_APPS_FS_H
#define LWIP_HDR_APPS_FS_H

#include "httpd_opts.h"
#include "lwip/err.h"

#ifdef __cplusplus
extern "C" {
#endif

#define FS_READ_EOF     -1
#define FS_READ_DELAYED -2

#if HTTPD_PRECALCULATED_CHECKSUM
struct fsdata_chksum {
  u32_t offset;
  u16_t chksum;
  u16_t len;
};
#endif /* HTTPD_PRECALCULATED_CHECKSUM */

#define FS_FILE_FLAGS_HEADER_INCLUDED     0x01
#define FS_FILE_FLAGS_HEADER_PERSISTENT   0x02

struct fs_file {
  const char *data;
  int len;
  int index;
  void *pextension;
#if HTTPD_PRECALCULATED_CHECKSUM
  const struct fsdata_chksum *chksum;
  u16_t chksum_count;
#endif /* HTTPD_PRECALCULATED_CHECKSUM */
  u8_t flags;
#if LWIP_HTTPD_CUSTOM_FILES
  u8_t is_custom_file;
#endif /* LWIP_HTTPD_CUSTOM_FILES */
#if LWIP_HTTPD_FILE_STATE
  void *state;
#endif /* LWIP_HTTPD_FILE_STATE */
};

#if LWIP_HTTPD_FS_ASYNC_READ
typedef void (*fs_wait_cb)(void *arg);
#endif /* LWIP_HTTPD_FS_ASYNC_READ */

err_t fs_open(struct fs_file *file, const char *name);
void fs_close(struct fs_file *file);
#if LWIP_HTTPD_DYNAMIC_FILE_READ
#if LWIP_HTTPD_FS_ASYNC_READ
int fs_read_async(struct fs_file *file, char *buffer, int count, fs_wait_cb callback_fn, void *callback_arg);
#else /* LWIP_HTTPD_FS_ASYNC_READ */
int fs_read(struct fs_file *file, char *buffer, int count);
#endif /* LWIP_HTTPD_FS_ASYNC_READ */
#endif /* LWIP_HTTPD_DYNAMIC_FILE_READ */
#if LWIP_HTTPD_FS_ASYNC_READ
int fs_is_file_ready(struct fs_file *file, fs_wait_cb callback_fn, void *callback_arg);
#endif /* LWIP_HTTPD_FS_ASYNC_READ */
int fs_bytes_left(struct fs_file *file);

#if LWIP_HTTPD_FILE_STATE
/** This user-defined function is called when a file is opened. */
void *fs_state_init(struct fs_file *file, const char *name);
/** This user-defined function is called when a file is closed. */
void fs_state_free(struct fs_file *file, void *state);
#endif /* #if LWIP_HTTPD_FILE_STATE */

#ifdef __cplusplus
}
#endif

#endif /* LWIP_HDR_APPS_FS_H */
Ist hier gar nicht definiert. Ich hab irgendwie immer wieder das Gefühl das was ST einem bereitstellt(Cube) buggy ist.
Werde da morgen nochmal weiter kramen.
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 Programmier Sammelfaden

Beitrag von Fritzler »

Chefbastler hat geschrieben: Do 17. Okt 2019, 22:45 Ist hier gar nicht definiert. Ich hab irgendwie immer wieder das Gefühl das was ST einem bereitstellt(Cube) buggy ist.
ACHWAS!!
Das ist der allerletzte Dreck was ST da einem an Software gibt, der dir dann direkt dicke Steine in den Weg wirft.
Das sieht erstmal einfach zusammenklickbar aus, aber über oirgendwass tolpert man dann.
Dann die umgebauten Libs zu debuggen dauert länger als es gleich richtig zu machen.

Die bauen gute Libs um bis sie kaputt gehen.
Das elmChan FatFs haben die auch komplett verunstaltet.

Nimm den originalen lwip und bau den nach dessen Doku ein.

Ich empfehl dir auch vom STM32 HAL wegzukommen, der besteht quasi nur aus BUgs und ist die reinste Bloatware.
Auf Registern trommeln ist garnicht so schwer und dann versteht man die STM32 auch.
Benutzeravatar
Chefbastler
Beiträge: 2686
Registriert: Mo 12. Aug 2013, 20:21
Wohnort: Südbayern

Re: STM32 Programmier Sammelfaden

Beitrag von Chefbastler »

Fritzler hat geschrieben: Do 17. Okt 2019, 22:49
Nimm den originalen lwip und bau den nach dessen Doku ein.

Ich empfehl dir auch vom STM32 HAL wegzukommen, der besteht quasi nur aus BUgs und ist die reinste Bloatware.
Auf Registern trommeln ist garnicht so schwer und dann versteht man die STM32 auch.
Ohne dem Cube Buggenerator schaffe ich in gewissen maßen zurecht zukommen und will das Ding auch nach möglichkeit nicht groß benutzen.

Allerdings Ethernet Peripherie mit lwIP lib selbst verheiraten tu ich mir halt doch noch etwas schwerer als du.
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 Programmier Sammelfaden

Beitrag von Fritzler »

Ich hätte da Code für dich, ist sogar fürn F429.
Du brauchst nur die CMSIS Header.
Ist aber noch nicht für den lwip, sondern packt UDP (Art-Net) selber aus.
Ist ja fürs Display gewesen :lol:

Der Ethmac ist durchaus komplexer als nötig, das stimmt.
Das hab ich woanders schöner gesehen.

lwip hab ich bisher nicht auf STM32 genutzt. nur direkt auf dickeren ARM SoCs mit Cortex-A.
Es kann auch keine IRQs, alles noch polling, aber es sollte als Basis zum Weitermachen genügen.

Achja, alles was aus meinem Bastelkeller kommt is GPLv3, nur so als Vorwarnung ;)


Mach "SRAM1BSS" weg, das packt die Pakete nur in ein Extra SRAM für den maximalen Durchsatz auf dem Bus.
Dateianhänge
ether.h
(1.65 KiB) 20-mal heruntergeladen
ether.c
(11.89 KiB) 25-mal heruntergeladen
ethmac.h
(4.86 KiB) 19-mal heruntergeladen
ethmac.c
(7.37 KiB) 17-mal heruntergeladen
Benutzeravatar
Chefbastler
Beiträge: 2686
Registriert: Mo 12. Aug 2013, 20:21
Wohnort: Südbayern

Re: STM32 Programmier Sammelfaden

Beitrag von Chefbastler »

Fritzler danke fürs Anhängen.

Hab da nochmal etwas Ursachenforschung betrieben.

Code: Alles auswählen

#define FS_FILE_FLAGS_SSI                 0x08
Giebt es erst ab der lwIP Version 2.1.0 im fs.h File.
ST hatt da eine historische lib version 2.0.3 welche das noch nicht beinhaltet. Da spielt dann natürlich auch der neuere HTML -> C converter nicht...
http://download.savannah.nongnu.org/releases/lwip/
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 Programmier Sammelfaden

Beitrag von Fritzler »

Was meine Aussage zum ST Cube Buggenerator bestätigt ;)
(Den muss ich mir merken!)
Antworten