Hallo
Danke für die schnelle Antwort.
Ich verwende KamAVR welches sein eigenes Makefile automatisch erstellt:
Code:
################################################################################
################################################################################
## ##
## NOTE: This makefile uses GNU make syntax. ##
## ===== It may not work when called by other make utilities ##
## ##
################################################################################
################################################################################
################################################################################
### ###############################################################
### PROJECT NAME ###############################################################
### ###############################################################
################################################################################
PROJECT = sd-card-test
################################################################################
## #########################################################################
## CPU #########################################################################
## #########################################################################
################################################################################
CPU = atmega2560
################################################################################
### ####################################################################
### SOURCES ####################################################################
### ####################################################################
################################################################################
OBJ = RP6M256Lib.o
OBJ += RP6M256uart.o
OBJ += RP6M256_WIFIlib.o
OBJ += sdc\partition.o
OBJ += sdc\sd_raw.o
OBJ += sd-card-test.o
OBJ += sdc\fat.o
OBJ += sdc\byteordering.o
################################################################################
## #######################################################################
## TOOLS #######################################################################
## #######################################################################
################################################################################
COMPILER = avr-gcc
ASSEMBLER = avr-gcc
LINKER = avr-gcc
ROMIZER = avr-objcopy
DUMPER = avr-objdump
################################################################################
## #######################################################################
## FLAGS #######################################################################
## #######################################################################
################################################################################
COMMON_FLAGS = -std=c99
COMMON_FLAGS += -mmcu=$(CPU)
COMMON_FLAGS += -Os
COMMON_FLAGS += -mno-interrupts
COMMON_FLAGS += -funsigned-char
COMMON_FLAGS += -funsigned-bitfields
COMMON_FLAGS += -Wall
COMMON_FLAGS += -Wstrict-prototypes
LINK_FLAGS = $(COMMON_FLAGS) -ggdb
COMPILE_FLAGS = $(LINK_FLAGS) -c -DF_CPU=16000000UL
ASSEMBLE_FLAGS = $(COMMON_FLAGS) -c -I. -x assembler-with-cpp
EEPROM_FLAGS = -j .eeprom
EEPROM_FLAGS += --change-section-lma .eeprom=0
FLASH_FLAGS = -j .text
FLASH_FLAGS += -j .data
ELF_FLAGS = --cref
ELF_FLAGS += -lm
################################################################################
## #####################################################################
## ACTIONS #####################################################################
## #####################################################################
################################################################################
COMPILE = $(COMPILER) $(COMPILE_FLAGS)
ASSEMBLE = $(ASSEMBLER) $(ASSEMBLE_FLAGS)
LINK = $(LINKER) $(LINK_FLAGS)
REMOVE = rm -f
################################################################################
## #######################################################################
## BUILD #######################################################################
## #######################################################################
################################################################################
all: elf flash eep
rebuild: clean all
clean:
$(REMOVE) $(PROJECT).hex
$(REMOVE) $(PROJECT)_eeprom.hex
$(REMOVE) $(PROJECT).elf
$(REMOVE) $(PROJECT).map
$(REMOVE) $(PROJECT).cof
$(REMOVE) $(PROJECT).lst
$(REMOVE) $(OBJ:.o=.lst)
$(REMOVE) $(OBJ)
eep: $(PROJECT)_eeprom.hex
flash: $(PROJECT).hex
elf: $(PROJECT).elf
################################################################################
## ########################################################################
## LINK ########################################################################
## ########################################################################
################################################################################
$(PROJECT)_eeprom.hex: $(PROJECT).elf
$(ROMIZER) $(EEPROM_FLAGS) -O ihex $(PROJECT).elf $(PROJECT)_eeprom.hex
$(PROJECT).hex: $(PROJECT).elf
$(ROMIZER) $(FLASH_FLAGS) -O ihex $(PROJECT).elf $(PROJECT).hex
$(PROJECT).elf: $(OBJ)
$(LINK) $(OBJ) -o $(PROJECT).elf $(ELF_FLAGS)
################################################################################
## #####################################################################
## COMPILE #####################################################################
## #####################################################################
################################################################################
%.o : %.c
$(COMPILE) $< -o $@
%.o : %.s
$(ASSEMBLE) $< -o $@
Inzwischen bin ich etwas weiter gekommen. Die union-Strucktur habe ich auskommentiert, asm habe ich in __asm__ umbenannt. Und siehe da: Es funktioniert!
Code:
_______________________
\| RP6 ROBOT SYSTEM |/
\_-_-_-_-_-_-_-_-_-_/
Hello World from RP6 CONTROL M256 WIFI!
Let's move it! :)
This message was sent via ***WLAN***!
(Kompiliert von mic 25.7.2012
Testing SD Card. Please wait (SDHC Cards will take longer)...
SD INIT OK!
opening filesystem OK!
opening root directory OK!
manuf: 0x27
oem: PH
prod: SD04G
rev: 48
serial: 0xc202
date: 2/12
size: 3768MB
copy: 0
wr.pr.: 0/0
format: 0
free: 0/0
M256_SELFTEST_TESTFILE.txt 1455
###############################################################################
RP6 M256 SD CARD Testfile 01234567890
###############################################################################
If you can see the two 3D Triangles below and can read this text,
SD Card reading works fine!
###############################################################################
____ ____ ____ ____ ______________________
/\ \/\ \/\ \/\ \ /\ \
/ \___\ \___\ \___\ \___\ / \ _________________\
\ / __/_/ / / / / / \ \ \ /
\/_/\ \__/\/___/\/___/ \ \ \__________ /
/ \___\ / \___\ \ \ \ / / /
\ / __/_ _\ / / \ \ \ / / /
\/_/\ \/\ \/___/ \ \ \/ / /
/ \__/ \___\ \ \ / / /
\ / _\ / / \ \/ / /
\/_/\ \/___/ \ / /
/ \___\ \ / /
\ / / \ / /
\/___/ \/___/
###############################################################################
Juhu :)
Gruß
mic
P.S.: Hier klemmts noch:
sd-card-test.c:283: warning: pointer targets in passing argument 1 of 'strstr' differ in signednes
Code:
uint8_t buffer[160];
uint32_t offset = 0;
intptr_t count;
while((count = fat_read_file(fd, buffer, sizeof(buffer))) > 0)
{
if(offset == 0) {
// Briefly check if the contents are correct!
// Only one single line is checked.
char* ptr = strstr(&buffer[0], "RP6 M256"); <-- Zeile 283
if(strncmp(ptr, "RP6 M256 SD CARD Testfile 01234567890", 37) != 0) {
Lesezeichen