diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 6dc1654..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lwip"] - path = lwip - url = git@github.com:lwip-tcpip/lwip.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f6f367..ca743db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ project(stm32) add_subdirectory(bsp) #application add_subdirectory(lib) #stm32f4xx library -add_subdirectory(lwip) #lwip library +# add_subdirectory(lwip) #lwip library diff --git a/README.md b/README.md index e69de29..0f7e1d8 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,7 @@ +## Build +### Manual Build + $cmake -S . -B build + cmake --build build +### Auto Build + $./bld +The executables located in the bin directory diff --git a/bsp/CMakeLists.txt b/bsp/CMakeLists.txt index 3b15075..dd69774 100644 --- a/bsp/CMakeLists.txt +++ b/bsp/CMakeLists.txt @@ -4,21 +4,30 @@ project(${target_base_name}) set(elf_file ${target_base_name}.elf) -set(CMAKE_PREFIX_PATH ${CMAKE_SOURCE_DIR}/lwip) - -find_package(LwIP REQUIRED) +# set(LWIP_SOURCE_DIR ${CMAKE_SOURCE_DIR}/lwip) +# file(GLOB_RECURSE LWIP_SOURCES ${LWIP_SOURCE_DIR}/*.c) add_executable(${elf_file} ${CMAKE_SOURCE_DIR}/app/app.c bsp.c main.c syscalls.c + # ${CMAKE_SOURCE_DIR}/lwip/src/core/init.c + # ${LWIP_SOURCES} + # ${CMAKE_SOURCE_DIR}/lwip/src/core/netif.c + # ${CMAKE_SOURCE_DIR}/lwip/src/core/udp.c + # ${CMAKE_SOURCE_DIR}/lwip/src/core/mem.c + # ${CMAKE_SOURCE_DIR}/lwip/src/core/sys.c ) target_include_directories(${elf_file} PRIVATE ${CMAKE_SOURCE_DIR}/app ${CMAKE_SOURCE_DIR}/bsp - # ${CMAKE_SOURCE_DIR}/lwip/src/include/lwip + ${CMAKE_SOURCE_DIR}/lwip + # ${CMAKE_SOURCE_DIR}/lwip/src/include + # ${CMAKE_SOURCE_DIR}/lwip/src/include/lwip + # ${CMAKE_SOURCE_DIR}/lwip/src/include/netif + # ${CMAKE_SOURCE_DIR}/lwip/system/ ) target_compile_options(${elf_file} PRIVATE -Wall -Wextra -Os) diff --git a/bsp/bsp.c b/bsp/bsp.c index 7536079..d2c6ca0 100644 --- a/bsp/bsp.c +++ b/bsp/bsp.c @@ -1,6 +1,6 @@ #include #include "bsp.h" - + static uint32_t EthStatus = 0; void SysTick_Handler(void) @@ -94,37 +94,36 @@ void usart_init() { const uint8_t MAC_ADDR[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55}; const uint8_t PHY_ADDR = 0x00; +#define IP_ADDR0 192 +#define IP_ADDR1 168 +#define IP_ADDR2 0 +#define IP_ADDR3 5 + +#define NETMASK_ADDR0 255 +#define NETMASK_ADDR1 255 +#define NETMASK_ADDR2 255 +#define NETMASK_ADDR3 0 + +#define GW_ADDR0 192 +#define GW_ADDR1 168 +#define GW_ADDR2 0 +#define GW_ADDR3 1 + +// static struct udp_pcb *echo_pcb; +// static char echo_buffer[128]; +// static ip_addr_t ipaddr, netmask, gw; +// static struct netif gnetif; void eth_init() { - ETH_InitTypeDef ETH_InitStructure; + // lwip_init(); - ETH_DeInit(); - ETH_SoftwareReset(); - printf("Eth reseting...\r\n"); - while (ETH_GetSoftwareResetStatus() == SET); - printf("Done\r\n"); - ETH_MACAddressConfig(ETH_MAC_Address0, MAC_ADDR); + // IP4_ADDR(&ipaddr, IP_ADDR0, IP_ADDR1, IP_ADDR2, IP_ADDR3); + // IP4_ADDR(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3); + // IP4_ADDR(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3); - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC | RCC_AHB1Periph_ETH_MAC_Tx | RCC_AHB1Periph_ETH_MAC_Rx, ENABLE); - ETH_StructInit(Ð_InitStructure); - ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; - ETH_InitStructure.ETH_Speed = ETH_Speed_100M; - ETH_InitStructure.ETH_Mode = ETH_Mode_FullDuplex; - ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable; - ETH_InitStructure.ETH_RetryTransmission = ETH_RetryTransmission_Disable; - ETH_InitStructure.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; - ETH_InitStructure.ETH_ReceiveAll = ETH_ReceiveAll_Enable; - - ETH_InitStructure.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Enable; - ETH_InitStructure.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; - ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; - ETH_InitStructure.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; - - - EthStatus = ETH_Init(Ð_InitStructure, PHY_ADDR); - printf("Eth init with status: %d\r\n", EthStatus); - - ETH_Start(); + // netif_set_ipaddr(&gnetif, &ipaddr); + // netif_set_netmask(&gnetif, &netmask); + // netif_set_gw(&gnetif, &gw); } void board_init() { diff --git a/bsp/syscalls.c b/bsp/syscalls.c index c098400..445969a 100644 --- a/bsp/syscalls.c +++ b/bsp/syscalls.c @@ -60,7 +60,7 @@ int _getpid(void) int _kill(int pid, int sig) { - errno = EINVAL; + // errno = EINVAL; return -1; } @@ -79,7 +79,7 @@ int _read (int file, char *ptr, int len) *ptr++ = __io_getchar(); } -return len; + return len; } int _write(int file, char *ptr, int len) @@ -108,7 +108,7 @@ caddr_t _sbrk(int incr) { // write(1, "Heap and stack collision\n", 25); // abort(); - errno = ENOMEM; + // errno = ENOMEM; return (caddr_t) -1; } @@ -147,13 +147,13 @@ int _open(char *path, int flags, ...) int _wait(int *status) { - errno = ECHILD; + // errno = ECHILD; return -1; } int _unlink(char *name) { - errno = ENOENT; + // errno = ENOENT; return -1; } @@ -170,18 +170,18 @@ int _stat(char *file, struct stat *st) int _link(char *old, char *new) { - errno = EMLINK; + // errno = EMLINK; return -1; } int _fork(void) { - errno = EAGAIN; + // errno = EAGAIN; return -1; } int _execve(char *name, char **argv, char **env) { - errno = ENOMEM; + // errno = ENOMEM; return -1; }