Absender: Simon Siemens
Datum: Di, 17.05.2011 19:18:30
In-reply-to:
<1305221409.10999.72.camel@wbam-laptop>
References:
<1305221409.10999.72.camel@wbam-laptop>
Hi Timo, anbei der verbesserte Patch. Damit wird ct-Bot.elf nun mit Hilfe von libctbot.a gebaut, wenn man make verwendet. Der neue Patch behebt auch zwei kleine Fehler im alten Patch. Herzliche GrÃÃe, Simon Am Donnerstag, den 12.05.2011, 19:30 +0200 schrieb Simon Siemens: > Hi Timo, > > dieser Patch enthÃlt ein neues make-Target. Es baut eine statische > Bibliothek aus den C-Datei in > > * ct-Bot (auÃer ct-Bot.c), > * mcu, > * pc und > * ui. > > Dieser Patch fÃgt nur das make-Target hinzu. Eine entsprechende > Konfiguration fÃr die Eclipse-Buildumgebung kommt im nÃchsten Patch. > > Im Moment wird die Bibliothek nur gebaut, aber noch nicht genutzt. (Man > kÃnnte sie ja dazu nutzen, ct-Bot.elf usw. zu erzeugen.) Sie zu nutzen > wÃrde nur etwa 3 Zeilen Ãnderung im Makefile erfordern. Ich kann sie > gerne nachliefern. Nun aber zuerst zum Weshalb und Wozu. > > Der ct-Bot-Code bietet eine umfangreiche Infrastruktur fÃr verschiedene > Roboterverhalten. Wenn man diese aber nicht nutzen will, ist der Ãbrige > Teil dennoch generell einsetzbar. Er bietet einige Hilfskomponenten und > die MÃglichkeit, einen Simulator zu nutzen. Wir wollen unsere Studenten > damit experimentieren lassen, ohne dass sie die volle > ct-Bot-Infrastruktur brauchen, verstehen und einrichten mÃssen. (Es sind > komplette ProgrammieranfÃnger.) Deshalb arbeiten wir gerade daran, von > der Infrastruktur eine Bibliothek (je eine Archivdatei fÃr die PC- und > die MCU-Variante) zu erstellen und fÃr verschiedene Linux-Distributionen > (im Moment OpenSUSE und Ubuntu) mit Hilfe des OpenSUSE Build Service zu > paketieren. > > GruÃ, Simon > > _______________________________________________ > ct-bot-entwickler Mailingliste > ct-bot-entwickler@xxxxxxxxxxxxxxxxx > http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler
Index: Makefile =================================================================== --- Makefile (Revision 1786) +++ Makefile (Arbeitskopie) @@ -41,6 +41,9 @@ # Target file name (without extension). TARGET = ct-Bot +# Name of the library that contains the hardware abstraction layer +LIBRARY = libctbot.a + # Target Device, either pc or mcu, usually defined on commandline DEVICE ?= MCU #DEVICE ?= PC @@ -52,7 +55,10 @@ SRCPC = pc/bot-2-sim_pc.c pc/botfs_pc.c pc/botfs-low_pc.c pc/botfs-tools_pc.c pc/cmd-tools_pc.c pc/delay_pc.c pc/display_pc.c pc/eeprom_pc.c pc/ena_pc.c pc/init-low_pc.c pc/ir-rc5_pc.c pc/led_pc.c pc/mini-fat_pc.c pc/mmc-emu_pc.c pc/motor-low_pc.c pc/mouse_pc.c pc/os_thread_pc.c pc/sensor-low_pc.c pc/tcp-server.c pc/tcp.c pc/timer-low_pc.c pc/trace.c -SRCCOM = bot-2-bot.c botfs.c command.c $(TARGET).c fifo.c init.c log.c map.c math_utils.c minilog.c mmc-vm.c motor.c pos_store.c sensor.c timer.c +SRCCOM = bot-2-bot.c botfs.c command.c fifo.c init.c log.c map.c math_utils.c minilog.c mmc-vm.c motor.c pos_store.c sensor.c timer.c + +SRCMAIN = $(TARGET).c + SRCUI = ui/gui.c ui/misc.c ui/rc5.c SRCLOGIC = bot-logic/behaviour_avoid_border.c bot-logic/behaviour_avoid_col.c bot-logic/behaviour_calibrate_pid.c bot-logic/behaviour_calibrate_sharps.c bot-logic/behaviour_cancel_behaviour.c bot-logic/behaviour_catch_pillar.c bot-logic/behaviour_classify_objects.c bot-logic/behaviour_delay.c bot-logic/behaviour_drive_area.c bot-logic/behaviour_drive_chess.c bot-logic/behaviour_drive_distance.c bot-logic/behaviour_drive_square.c bot-logic/behaviour_drive_stack.c bot-logic/behaviour_follow_line_enhanced.c bot-logic/behaviour_follow_line.c bot-logic/behaviour_follow_object.c bot-logic/behaviour_follow_wall.c bot-logic/behaviour_get_utilization.c bot-logic/behaviour_goto_obstacle.c bot-logic/behaviour_goto_pos.c bot-logic/behaviour_goto.c bot-logic/behaviour_gotoxy.c bot-logic/behaviour_hang_on.c bot-logic/behaviour_line_shortest_way.c bot-logic/behaviour_measure_distance.c bot-logic/behaviour_olympic.c bot-logic/behaviour_pathplaning.c bot-logic/behaviour_remotecall.c bot-logic/behaviour_scan.c bot-logic/behaviour_scan_beacons.c bot-logic/behaviour_servo.c bot-logic/behaviour_simple.c bot-logic/behaviour_solve_maze.c bot-logic/behaviour_transport_pillar.c bot-logic/behaviour_turn.c bot-logic/behaviour_ubasic.c bot-logic/bot-logic.c bot-logic/tokenizer.c bot-logic/ubasic_call.c bot-logic/ubasic_cvars.c bot-logic/ubasic_ext_proc.c bot-logic/ubasic.c @@ -65,7 +71,8 @@ #else # SRC = $(TARGET).c $(SRCCOM) $(SRCPC) #endif -SRC =$(SRCCOM) $(SRCUI) $(SRCPC) $(SRCMCU) $(SRCLOGIC) +SRCLIBRARY = $(SRCCOM) $(SRCUI) $(SRCPC) $(SRCMCU) +SRCBEHAVIOUR = $(SRCMAIN) $(SRCLOGIC) # List Assembler source files here. @@ -258,7 +265,10 @@ ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) +# Flags for the library archiver (ar) +ARFLAGS = r + # Define Messages # English MSG_ERRORS_NONE = Errors: none @@ -276,12 +286,14 @@ MSG_COMPILING = Compiling: MSG_ASSEMBLING = Assembling: MSG_CLEANING = Cleaning project: +MSG_CREATING_LIBRARY = Creating library: # Define all object files. -OBJ = $(ASRC:.S=.o) $(SRC:.c=.o) +OBJLIBRARY = $(ASRC:.S=.o) $(SRCLIBRARY:.c=.o) +OBJBEHAVIOUR = $(SRCBEHAVIOUR:.c=.o) # Define all listing files. LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) @@ -319,6 +331,7 @@ lss: $(TARGET).lss sym: $(TARGET).sym +library: $(LIBRARY) # Eye candy. # AVR Studio 3.x does not check make's exit code but relies on @@ -381,6 +394,11 @@ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof +$(LIBRARY): $(OBJLIBRARY) + @echo + @echo $(MSG_CREATING_LIBRARY) $@ + $(AR) $(ARFLAGS) $@ $^ + ranlib $@ # Create final output files (.hex, .eep) from ELF output file. %.hex: %.elf @@ -410,11 +428,11 @@ # Link: create ELF output file from object files. .SECONDARY : $(TARGET).elf -.PRECIOUS : $(OBJ) -%.elf: $(OBJ) +.PRECIOUS : $(OBJBEHAVIOUR) +%.elf: $(OBJBEHAVIOUR) $(LIBRARY) @echo @echo $(MSG_LINKING) $@ - $(CC) --output $@ $(LDFLAGS) $(OBJ) $(MATH_LIB) + $(CC) --output $@ $(LDFLAGS) $^ $(MATH_LIB) # Compile: create object files from C source files. @@ -454,10 +472,14 @@ $(REMOVE) $(TARGET).sym $(REMOVE) $(TARGET).lnk $(REMOVE) $(TARGET).lss - $(REMOVE) $(OBJ) + $(REMOVE) $(LIBRARY) + $(REMOVE) $(OBJBEHAVIOUR) + $(REMOVE) $(OBJLIBRARY) $(REMOVE) $(LST) - $(REMOVE) $(SRC:.c=.s) - $(REMOVE) $(SRC:.c=.d) + $(REMOVE) $(SRCBEHAVIOUR:.c=.s) + $(REMOVE) $(SRCLIBRARY:.c=.s) + $(REMOVE) $(SRCBEHAVIOUR:.c=.d) + $(REMOVE) $(SRCLIBRARY:.c=.d) $(REMOVE) .dep/* Index: Changelog.txt =================================================================== --- Changelog.txt (Revision 1786) +++ Changelog.txt (Arbeitskopie) @@ -1,2 +1,4 @@ CHANGELOG fuer c't-Bot ====================== +2011-05-12 Simon Siemens [simon.siemens@xxxxxxxx]: Neues make-Target library fÃr eine Bibliothek der Infrastrukturkomponenten (Hardwareabstraktion, OS, ...). +