From e0f2f338b83c4231b2f39c8369a8bcd23fb9a84b Mon Sep 17 00:00:00 2001 From: Manfred Steiner Date: Tue, 23 Jul 2024 19:00:42 +0200 Subject: [PATCH] software/test_2024-07-23 --- software/test_2024-07-23/.gdb_history | 9 ++ software/test_2024-07-23/.gdbinit | 2 + software/test_2024-07-23/.gitignore | 4 + .../.vscode/c_cpp_properties.json | 18 +++ software/test_2024-07-23/.vscode/launch.json | 37 +++++ .../test_2024-07-23/.vscode/settings.json | 26 ++++ software/test_2024-07-23/.vscode/tasks.json | 23 +++ software/test_2024-07-23/Makefile | 79 ++++++++++ software/test_2024-07-23/README.md | 1 + software/test_2024-07-23/src/main.c | 140 ++++++++++++++++++ 10 files changed, 339 insertions(+) create mode 100644 software/test_2024-07-23/.gdb_history create mode 100644 software/test_2024-07-23/.gdbinit create mode 100644 software/test_2024-07-23/.gitignore create mode 100644 software/test_2024-07-23/.vscode/c_cpp_properties.json create mode 100644 software/test_2024-07-23/.vscode/launch.json create mode 100644 software/test_2024-07-23/.vscode/settings.json create mode 100644 software/test_2024-07-23/.vscode/tasks.json create mode 100644 software/test_2024-07-23/Makefile create mode 100644 software/test_2024-07-23/README.md create mode 100644 software/test_2024-07-23/src/main.c diff --git a/software/test_2024-07-23/.gdb_history b/software/test_2024-07-23/.gdb_history new file mode 100644 index 0000000..3339046 --- /dev/null +++ b/software/test_2024-07-23/.gdb_history @@ -0,0 +1,9 @@ +target remote :1234 +layout split +stepi +quit +target remote :1234 +layout split +stepi +b *main+9 +quit diff --git a/software/test_2024-07-23/.gdbinit b/software/test_2024-07-23/.gdbinit new file mode 100644 index 0000000..139597f --- /dev/null +++ b/software/test_2024-07-23/.gdbinit @@ -0,0 +1,2 @@ + + diff --git a/software/test_2024-07-23/.gitignore b/software/test_2024-07-23/.gitignore new file mode 100644 index 0000000..a959910 --- /dev/null +++ b/software/test_2024-07-23/.gitignore @@ -0,0 +1,4 @@ +.depend +**/build +**/dist +**/sim diff --git a/software/test_2024-07-23/.vscode/c_cpp_properties.json b/software/test_2024-07-23/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..3a57c79 --- /dev/null +++ b/software/test_2024-07-23/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "Linux AVR", + "includePath": [ + "/usr/lib/avr/include/**", + "/usr/lib/gcc/avr/**" + ], + "defines": [], + "compilerPath": "/usr/bin/avr-gcc", + "compilerArgs": [ "-mmcu=atmega644p", "-DF_CPU=12000000", "-Os" ], + "cStandard": "gnu11", + "cppStandard": "gnu++11", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} diff --git a/software/test_2024-07-23/.vscode/launch.json b/software/test_2024-07-23/.vscode/launch.json new file mode 100644 index 0000000..f29cf2e --- /dev/null +++ b/software/test_2024-07-23/.vscode/launch.json @@ -0,0 +1,37 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Build", + // "request": "launch", + "type": "node-terminal", + "preLaunchTask": "build" + },{ + "name": "Flash", + // "request": "launch", + "type": "node-terminal", + "preLaunchTask": "flash" + },{ + "name": "Clean", + // "request": "launch", + "type": "node-terminal", + "preLaunchTask": "clean" + },{ + // es muss mit simuc --board arduino dist/programm.elf der Simulator + // gestartet werden. Dessen gdb-stub öffnet auf localhost:1234 einen Port + "name": "Debug (simuc)", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/sim/atmega328p.elf", + "cwd": "${workspaceFolder}", + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "/usr/bin/avr-gdb", + "miDebuggerServerAddress": ":1234", + "preLaunchTask": "build" + } + ] +} diff --git a/software/test_2024-07-23/.vscode/settings.json b/software/test_2024-07-23/.vscode/settings.json new file mode 100644 index 0000000..b2e94c9 --- /dev/null +++ b/software/test_2024-07-23/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "[c]": { + "editor.insertSpaces": true, + "editor.tabSize": 3, + "editor.detectIndentation": false + }, + "[cpp]": { + "editor.insertSpaces": true, + "editor.tabSize": 3, + "editor.detectIndentation": false + }, + "[h]": { + "editor.insertSpaces": true, + "editor.tabSize": 3, + "editor.detectIndentation": false + }, + "[hpp]": { + "editor.insertSpaces": true, + "editor.tabSize": 3, + "editor.detectIndentation": false + }, + "cSpell.words": [], + "cSpell.ignorePaths": [ + "**/*.json", "**/*.c", "**/*.h", "**/*.cpp", "**/*.hpp", "**/Makefile" + ] +} diff --git a/software/test_2024-07-23/.vscode/tasks.json b/software/test_2024-07-23/.vscode/tasks.json new file mode 100644 index 0000000..74fb1c7 --- /dev/null +++ b/software/test_2024-07-23/.vscode/tasks.json @@ -0,0 +1,23 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [{ + "label": "build", + "type": "shell", + "command": "make", + "problemMatcher":[ + "$gcc" + ] + },{ + "label": "clean", + "type": "shell", + "command": "make", + "args": [ "clean" ], + },{ + "label": "flash", + "type": "shell", + "command": "make", + "args": [ "flash" ], + }] +} \ No newline at end of file diff --git a/software/test_2024-07-23/Makefile b/software/test_2024-07-23/Makefile new file mode 100644 index 0000000..93bc697 --- /dev/null +++ b/software/test_2024-07-23/Makefile @@ -0,0 +1,79 @@ +.PHONY: all info flash picocom clean +$(shell mkdir -p dist >/dev/null) +$(shell mkdir -p build >/dev/null) +$(shell mkdir -p sim >/dev/null) + +NAME="test_2024-07-23_nano-644" +SRC= $(wildcard src/*.c src/*.cpp) +OBJ = $(SRC:src/%.c=build/%.o) +OBJ_SIM = $(SRC:src/%.c=sim/%.o) + +DEVICE=atmega644p + +CC= avr-gcc +CFLAGS= -Wall -mmcu=$(DEVICE) -Os -DF_CPU=12000000 -c +LFLAGS= -Wall -mmcu=$(DEVICE) -Os -DF_CPU=12000000 + +CFLAGS_SIM= -Wall -mmcu=$(DEVICE) -Og -DF_CPU=12000000 -g -c +LFLAGS_SIM= -Wall -mmcu=$(DEVICE) -Og -DF_CPU=12000000 -g + + +all: dist/$(NAME).elf dist/$(NAME).s dist/$(NAME).hex sim/$(NAME).elf sim/$(NAME).s info + +info: + @echo + @avr-size --mcu=$(DEVICE) --format=avr dist/$(NAME).elf + +.depend: $(SRC) + $(CC) -MM $(SRC) > .depend + +-include $(DEPENDFILE) + +dist/$(NAME).elf: .depend $(OBJ) + $(CC) $(LFLAGS) -o $@ $(OBJ) + +dist/%.s: dist/%.elf + avr-objdump -d $< > $@ + +dist/%.hex: dist/%.elf + avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ + +sim/$(NAME).elf: .depend $(OBJ_SIM) + $(CC) $(LFLAGS_SIM) -o $@ $(OBJ_SIM) + + +build/%.o: src/%.c + $(CC) $(CFLAGS) -o $@ $< + +sim/%.o: src/%.c + $(CC) $(CFLAGS_SIM) -o $@ $< + +sim/%.s: sim/%.elf + avr-objdump -d $< > $@ + +simuc: sim/$(NAME).elf + simuc --board arduino $< + +gdb: sim/$(NAME).elf + avr-gdb $< + +isp-flash: dist/$(NAME).elf all + avrdude -c usbasp -p m644p -e -U flash:w:$< + +flash: dist/$(NAME).elf all + avrdude -c arduino -p m644p -P /dev/ttyUSB0 -b 115200 -e -U flash:w:$< + + +picocom: + # picocom sends CR for ENTER -> convert cr (\r) to lf (\n) + picocom -b 115200 --omap crlf /dev/ttyUSB0 + +fuse: + avrdude -c usbasp -p m644p -U lfuse:w:0xEE:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m + +clean: + @rm -r dist + @rm -r build + @rm -r sim + @find . -type f -name ".depend" -exec rm {} \; + @echo "clean done" diff --git a/software/test_2024-07-23/README.md b/software/test_2024-07-23/README.md new file mode 100644 index 0000000..c4d5e14 --- /dev/null +++ b/software/test_2024-07-23/README.md @@ -0,0 +1 @@ +# Testprogramm diff --git a/software/test_2024-07-23/src/main.c b/software/test_2024-07-23/src/main.c new file mode 100644 index 0000000..a737afa --- /dev/null +++ b/software/test_2024-07-23/src/main.c @@ -0,0 +1,140 @@ +#include +#include +#include +#include + +int uart_putchar(char c, FILE *stream) { + if (c == '\n') { + uart_putchar('\r', stream); + } + if (stream == stdout) { + loop_until_bit_is_set(UCSR0A, UDRE0); + UDR0 = c; + } else if (stream == stderr) { + loop_until_bit_is_set(UCSR1A, UDRE1); + UDR1 = c; + } + return 0; +} + +static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); +static FILE mystderr = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); + +int main () { + + DDRC = 0x1C; + PORTC = 0x3C; + + UCSR0A = (1 << U2X0); + UCSR0B = (1 << RXCIE0) | (1 << RXEN0) | (1 <= 1000) { +// PORTC ^= (1 << PC4); +// timer = 0; +// } +// } + -- 2.39.5