Compare commits
	
		
			8 Commits
		
	
	
		
			d48ccf1612
			...
			2cd4847a57
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2cd4847a57 | |||
| e335cb42ac | |||
| 34c1c3db4e | |||
| df70238b36 | |||
| 2c2e4c1484 | |||
| 767aa75c25 | |||
| 745e7db78f | |||
| 9c0cbb107b | 
@@ -38,9 +38,8 @@ if (GIT_FOUND)
 | 
			
		||||
	)
 | 
			
		||||
	message("${BoldGreen}Git based version number: ${GIT_DESCRIBE}${ColorReset}")
 | 
			
		||||
else (GIT_FOUND)
 | 
			
		||||
	set(GIT_DESCRIBE "v0.0.0-unknown")
 | 
			
		||||
	message("${BoldRed}No git installation found. It is highly recommended using git to generate the version number")
 | 
			
		||||
	message("Version is set to: ${GIT_DESCRIBE}${ColorReset}")
 | 
			
		||||
	message(FATAL_ERROR "Git is required")
 | 
			
		||||
endif (GIT_FOUND)
 | 
			
		||||
 | 
			
		||||
find_program(PATCHELFCRC patchelfcrc)
 | 
			
		||||
@@ -60,8 +59,7 @@ add_compile_options(-Wall -Wextra -Wold-style-declaration -Wuninitialized -Wmayb
 | 
			
		||||
add_compile_options(-mlittle-endian -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostartfiles -Wimplicit-fallthrough=3 -Wsign-compare)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
set(GIT_DESCRIBE "${GIT_DESCRIBE}")
 | 
			
		||||
add_definitions(-DBASE64_LOOKUP_TABLE_SECTION=\".ccm.bss\" -DSHELLMATTA_HELP_ALIAS=\"?\" -DGIT_VER=${GIT_DESCRIBE} -DHSE_VALUE=8000000UL -DSTM32F407xx -DSTM32F4XX -DARM_MATH_CM4)
 | 
			
		||||
add_definitions(-DBASE64_LOOKUP_TABLE_SECTION=\".ccm.bss\" -DSHELLMATTA_HELP_ALIAS=\"?\" -DHSE_VALUE=8000000UL -DSTM32F407xx -DSTM32F4XX -DARM_MATH_CM4)
 | 
			
		||||
 | 
			
		||||
add_subdirectory(doxygen)
 | 
			
		||||
add_subdirectory(updater/ram-code)
 | 
			
		||||
@@ -101,18 +99,29 @@ aux_source_directory("shellmatta/src" SHELLMATTA_SRCS)
 | 
			
		||||
aux_source_directory("updater" UPDATER_SRCS)
 | 
			
		||||
aux_source_directory("temp-profile" PROFILE_SRCS)
 | 
			
		||||
 | 
			
		||||
set(GEN_VERSION_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/generated-version")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
add_custom_target(
 | 
			
		||||
	generate-version-header
 | 
			
		||||
	COMMAND mkdir -p ${GEN_VERSION_HEADER_PATH} && bash "${CMAKE_CURRENT_SOURCE_DIR}/create_version_header.sh" "${GEN_VERSION_HEADER_PATH}/version.h"
 | 
			
		||||
	WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 | 
			
		||||
	COMMENT "Generating version number using git"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_executable(${ELFFILE} ${MAIN_SOURCES} ${CFG_PARSER_SRCS} ${UI_SRCS}
 | 
			
		||||
			${FAT_SRCS} ${SDIO_SRCS} ${BOOT_SRCS} ${SETUP_SRCS}
 | 
			
		||||
			${STM_PERIPH_SRCS} ${SETTINGS_SRCS} ${SAFETY_SRCS}
 | 
			
		||||
			${SHELLMATTA_SRCS} ${UPDATER_SRCS} ${PROFILE_SRCS}
 | 
			
		||||
		)
 | 
			
		||||
	
 | 
			
		||||
add_dependencies(${ELFFILE} updater-ram-code-header-blob)		
 | 
			
		||||
add_dependencies(${ELFFILE} updater-ram-code-header-blob generate-version-header)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
target_include_directories(${ELFFILE} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/shellmatta/api ${CMAKE_CURRENT_SOURCE_DIR}/config-parser/include)
 | 
			
		||||
target_link_options(${ELFFILE} PRIVATE -mlittle-endian -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 --disable-newlib-supplied-syscalls -nostartfiles -T${LINKER_SCRIPT} -Wl,--print-memory-usage)
 | 
			
		||||
target_link_libraries(${ELFFILE} base64-lib linklist-lib)
 | 
			
		||||
target_include_directories(${ELFFILE} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/updater/ram-code/include/")
 | 
			
		||||
target_include_directories(${ELFFILE} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/updater/ram-code/include/" "${CMAKE_CURRENT_BINARY_DIR}/include/")
 | 
			
		||||
 | 
			
		||||
add_custom_command(
 | 
			
		||||
    TARGET ${ELFFILE}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								stm-firmware/create_version_header.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								stm-firmware/create_version_header.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
if [[ -z $1 ]]; then
 | 
			
		||||
	# Exit with error in case no output file is specified
 | 
			
		||||
	exit -1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
firmware_version=`git describe --tags --always --dirty`
 | 
			
		||||
commit=`git rev-parse HEAD`
 | 
			
		||||
 | 
			
		||||
echo "#ifndef _VERSION_GENERATED_H_" > $1
 | 
			
		||||
echo "#define _VERSION_GENERATED_H_" >> $1
 | 
			
		||||
echo "#define GIT_VERSION_STRING \"$firmware_version\"" >> $1
 | 
			
		||||
echo "#define GIT_FULL_COMMIT \"$commit\"" >> $1
 | 
			
		||||
echo "#endif /* _VERSION_GENERATED_H_ */" >> $1
 | 
			
		||||
							
								
								
									
										29
									
								
								stm-firmware/include/reflow-controller/version.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								stm-firmware/include/reflow-controller/version.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
/* Reflow Oven Controller
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2022  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of the Reflow Oven Controller Project.
 | 
			
		||||
 *
 | 
			
		||||
 * The reflow oven controller is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * The Reflow Oven Control Firmware is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with the reflow oven controller project.
 | 
			
		||||
 * If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _VERSION_H_
 | 
			
		||||
#define _VERSION_H_
 | 
			
		||||
 | 
			
		||||
extern const char *version_git_version_string;
 | 
			
		||||
extern const char *version_git_full_commit_string;
 | 
			
		||||
extern const char *version_compile_date;
 | 
			
		||||
extern const char *version_compile_time;
 | 
			
		||||
 | 
			
		||||
#endif /* _VERSION_H_ */
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
* If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include "reflow-controller/version.h"
 | 
			
		||||
#include <reflow-controller/ui/gui.h>
 | 
			
		||||
#include <reflow-controller/ui/gui-config.h>
 | 
			
		||||
#include <reflow-controller/ui/menu.h>
 | 
			
		||||
@@ -167,9 +168,9 @@ static void gui_menu_about(struct lcd_menu *menu, enum menu_entry_func_entry ent
 | 
			
		||||
			break;
 | 
			
		||||
		last_page = 1;
 | 
			
		||||
		menu_lcd_output(menu, 0, "Version Number:");
 | 
			
		||||
		menu_lcd_outputf(menu, 1, "%.*s", LCD_CHAR_WIDTH, xstr(GIT_VER));
 | 
			
		||||
		if (strlen(xstr(GIT_VER)) > LCD_CHAR_WIDTH) {
 | 
			
		||||
			menu_lcd_outputf(menu, 2, "%s", &xstr(GIT_VER)[LCD_CHAR_WIDTH]);
 | 
			
		||||
		menu_lcd_outputf(menu, 1, "%.*s", LCD_CHAR_WIDTH, version_git_version_string);
 | 
			
		||||
		if (strlen(version_git_version_string) > LCD_CHAR_WIDTH) {
 | 
			
		||||
			menu_lcd_outputf(menu, 2, "%s", &version_git_version_string[LCD_CHAR_WIDTH]);
 | 
			
		||||
		}
 | 
			
		||||
#ifdef DEBUGBUILD
 | 
			
		||||
		menu_lcd_output(menu, 3, "Page 2/5 [DEBUG]");
 | 
			
		||||
 
 | 
			
		||||
@@ -49,13 +49,10 @@
 | 
			
		||||
#include <reflow-controller/ui/gui.h>
 | 
			
		||||
#include <reflow-controller/ui/shell-uart.h>
 | 
			
		||||
#include <reflow-controller/safety/flash-crc.h>
 | 
			
		||||
#include <reflow-controller/version.h>
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#ifndef GIT_VER
 | 
			
		||||
#define GIT_VER "VERSION NOT SET"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static shellmatta_instance_t shell;
 | 
			
		||||
static char shell_buffer[512];
 | 
			
		||||
static char IN_SECTION(.ccm.bss) history_buffer[512];
 | 
			
		||||
@@ -81,8 +78,9 @@ static shellmatta_retCode_t shell_cmd_ver(const shellmatta_handle_t   handle,
 | 
			
		||||
	stm_unique_id_get(&high_id, &mid_id, &low_id);
 | 
			
		||||
	stm_dev_rev_id_get(&stm_dev_id, &stm_rev_id);
 | 
			
		||||
 | 
			
		||||
	shellmatta_printf(handle, "Reflow Oven Controller Firmware " xstr(GIT_VER) "\r\n"
 | 
			
		||||
										   "Compiled: " __DATE__ " at " __TIME__ "\r\n");
 | 
			
		||||
	shellmatta_printf(handle, "Reflow Oven Controller Firmware %s\r\n"
 | 
			
		||||
				"Compiled: %s at %s\r\n",
 | 
			
		||||
				version_git_version_string, version_compile_date, version_compile_time);
 | 
			
		||||
	shellmatta_printf(handle, "Serial: %08X-%08X-%08X\r\n", high_id, mid_id, low_id);
 | 
			
		||||
 | 
			
		||||
	pcb_rev = get_pcb_hardware_version();
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@ add_executable(${ELFFILE} ${SRCS} ${FATFS_SRCS} ${SDIO_SRCS} ${STM_PERIPH_SRCS}
 | 
			
		||||
target_include_directories(${ELFFILE} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ../../include ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party)
 | 
			
		||||
target_compile_options(${ELFFILE} PRIVATE -Wall -Wextra -Wold-style-declaration -Wuninitialized -Wmaybe-uninitialized -Wunused-parameter)
 | 
			
		||||
target_compile_options(${ELFFILE} PRIVATE -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostartfiles -Wimplicit-fallthrough=3 -Wsign-compare -Os -g3)
 | 
			
		||||
target_compile_definitions(${ELFFILE} PRIVATE -DGIT_VER=${GIT_DESCRIBE} -DHSE_VALUE=8000000UL -DSTM32F407xx -DSTM32F4XX -DARM_MATH_CM4 -DSAFETY_MEMORY_STRIPOUT_DUMP)
 | 
			
		||||
target_compile_definitions(${ELFFILE} PRIVATE -DHSE_VALUE=8000000UL -DSTM32F407xx -DSTM32F4XX -DARM_MATH_CM4 -DSAFETY_MEMORY_STRIPOUT_DUMP)
 | 
			
		||||
target_link_options(${ELFFILE} PRIVATE -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork -mfloat-abi=hard -mfpu=fpv4-sp-d16 --disable-newlib-supplied-syscalls -nostartfiles -T${LINKER_SCRIPT} -Wl,--print-memory-usage)
 | 
			
		||||
set(GEN_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/generated")
 | 
			
		||||
set(GEN_HEADER_FILE "${GEN_HEADER_PATH}/${PROJECT_NAME}.bin.h")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								stm-firmware/version.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								stm-firmware/version.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
/* Reflow Oven Controller
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2022  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of the Reflow Oven Controller Project.
 | 
			
		||||
 *
 | 
			
		||||
 * The reflow oven controller is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * The Reflow Oven Control Firmware is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with the reflow oven controller project.
 | 
			
		||||
 * If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <reflow-controller/version.h>
 | 
			
		||||
#include <generated-version/version.h>
 | 
			
		||||
 | 
			
		||||
const char *version_git_version_string = GIT_VERSION_STRING;
 | 
			
		||||
const char *version_git_full_commit_string = GIT_FULL_COMMIT;
 | 
			
		||||
const char *version_compile_date = __DATE__;
 | 
			
		||||
const char *version_compile_time = __TIME__;
 | 
			
		||||
		Reference in New Issue
	
	Block a user