o finish first poc

This commit is contained in:
optixx 2009-04-05 15:29:09 +02:00
parent 9d38af4267
commit 0354b82c8e
3 changed files with 68 additions and 149 deletions

View File

@ -181,11 +181,10 @@ LDFLAGS += $(PRINTF_LIB_MIN) $(SCANF_LIB) $(MATH_LIB)
AVRDUDE_PROGRAMMER = stk500v2 AVRDUDE_PROGRAMMER = stk500v2
# com1 = serial port. Use lpt1 to connect to parallel port. # com1 = serial port. Use lpt1 to connect to parallel port.
AVRDUDE_PORT = /dev/tty.PL2303-00001324 # programmer connected to serial device
AVRDUDE_PORT = /dev/tty.PL2303-00002006
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
# Uncomment the following if you want avrdude's erase cycle counter. # Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn, # Note that this counter needs to be initialized first using -Yn,
@ -210,15 +209,6 @@ AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
# avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -U lfuse:w:0xfe:m # avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -U lfuse:w:0xfe:m
# avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -U hfuse:w:0xd9:m # avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -U hfuse:w:0xd9:m
<<<<<<< HEAD:poc/avr_sdcard/Makefile
#flash_mac: $(TARGET).hex
# uisp -dprog=avr910 -dpart=ATmega8 -dserial=/dev/tty.PL2303-00001004 --erase -v --upload if=$(TARGET).hex
=======
>>>>>>> sdcard_m32:poc/avr_sdcard/Makefile
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@ -333,13 +323,8 @@ gccversion :
# Program the device. # Program the device.
#flash: $(TARGET).hex $(TARGET).eep flash: $(TARGET).hex $(TARGET).eep
# sudo $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) sudo $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
#flash_uisp:
# sudo uisp -dprog=avr910 -dpart=ATmega8 -dserial=/dev/ttyUSB0 --verify --erase -v --upload if=$(TARGET).hex
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. # Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \ COFFCONVERT=$(OBJCOPY) --debugging \

View File

@ -1,7 +1,3 @@
<<<<<<< HEAD:poc/avr_sdcard/main.c
//#define F_CPU 8000000
=======
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c
#include <avr/io.h> #include <avr/io.h>
#include <util/delay.h> #include <util/delay.h>
@ -11,6 +7,10 @@
#include "mmc.h" #include "mmc.h"
#include "fat.h" #include "fat.h"
// Debug
#define debug(x, fmt) printf("%s:%u: %s=" fmt, __FILE__, __LINE__, #x, x)
extern FILE uart_stdout;
//SREG defines //SREG defines
#define S_MOSI PB5 #define S_MOSI PB5
#define S_MISO PB6 #define S_MISO PB6
@ -28,55 +28,30 @@
#define RAM_DIR DDRA #define RAM_DIR DDRA
#define RAM_REG PINA #define RAM_REG PINA
<<<<<<< HEAD:poc/avr_sdcard/main.c
#define READ_BUFFER_SIZE 512
#define DEBUG_BUFFER_SIZE 256
#define BLOCK_CNT 512
//uint8_t debug_buffer[DEBUG_BUFFER_SIZE];
uint8_t read_buffer[READ_BUFFER_SIZE];
=======
#define CTRL_PORT PORTB #define CTRL_PORT PORTB
#define CTR_DIR DDRB #define CTR_DIR DDRB
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c
<<<<<<< HEAD:poc/avr_sdcard/main.c
//va_list args;
//va_start(args, fmt);
//vsnprintf(debug_buffer,DEBUG_BUFFER_SIZE-1, fmt, args);
//va_end(args);
//uart_puts(debug_buffer);
uart_puts(fmt);
}
=======
#define LATCH_PORT PORTB #define LATCH_PORT PORTB
#define LATCH_DIR DDRB #define LATCH_DIR DDRB
#define SPI_PORT PORTB #define SPI_PORT PORTB
#define SPI_DIR DDRB #define SPI_DIR DDRB
#define LED_PORT PORTD #define LED_PORT PORTD
#define LED_DIR DDRD #define LED_DIR DDRD
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c
#define FILENAME "sprite.raw"
#define BUFFER_SIZE 512
#define BLOCKS 512
#define MEMSIZE 0x80000
#define READ_BUFFER_SIZE 512 uint8_t read_buffer[BUFFER_SIZE];
#define BLOCKS 510
#define debug(x, fmt) printf("%s:%u: %s=" fmt, __FILE__, __LINE__, #x, x)
extern FILE uart_stdout;
uint8_t read_buffer[READ_BUFFER_SIZE];
void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){ void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
uint16_t i,j; uint16_t i,j;
uint16_t sum =0; uint16_t sum = 0;
uint8_t clear=0;
for (i=0;i<len;i+=16) { for (i=0;i<len;i+=16) {
sum = 0; sum = 0;
@ -84,15 +59,14 @@ void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
sum +=packet[i+j]; sum +=packet[i+j];
} }
if (!sum){ if (!sum){
//printf("."); clear=1;
continue; continue;
<<<<<<< HEAD:poc/avr_sdcard/main.c }
if (clear){
dprintf("%08lx:", addr + i); printf("*\n");
======= clear = 0;
} }
printf("%08lx:", addr + i); printf("%08lx:", addr + i);
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c
for (j=0;j<16;j++) { for (j=0;j<16;j++) {
printf(" %02x", packet[i+j]); printf(" %02x", packet[i+j]);
} }
@ -103,11 +77,7 @@ void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
else else
printf("."); printf(".");
} }
<<<<<<< HEAD:poc/avr_sdcard/main.c
dprintf("|\r\n");
=======
printf("|\n"); printf("|\n");
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c
} }
} }
@ -201,13 +171,17 @@ void sram_init(void){
LED_PORT |= (1<<D_LED0); LED_PORT |= (1<<D_LED0);
} }
void sram_snes_mode(void){
CTRL_PORT |= (1<<R_WR);
CTRL_PORT &= ~(1<<R_RD);
}
void sram_clear(uint32_t addr, uint32_t len){ void sram_clear(uint32_t addr, uint32_t len){
uint32_t i; uint32_t i;
for (i=addr; i<(addr + len);i++ ){ for (i=addr; i<(addr + len);i++ ){
if (0==i%0xfff) if (0==i%0xfff)
dprintf("sram_clear %lx\n\r",i); printf("sram_clear %lx\n\r",i);
sram_write(i, 0x00); sram_write(i, 0x00);
} }
} }
@ -229,7 +203,13 @@ void sram_read_buffer(uint32_t addr,uint8_t *dst, uint32_t len){
ptr++; ptr++;
} }
} }
uint8_t sram_check(uint8_t *buffer, uint32_t len){
for (uint16_t cnt=0; cnt<len; cnt++)
if (buffer[cnt])
return 1;
return 0;
}
int main(void) int main(void)
{ {
@ -237,120 +217,71 @@ int main(void)
uint8_t fat_attrib = 0; uint8_t fat_attrib = 0;
uint32_t fat_size = 0; uint32_t fat_size = 0;
uint32_t rom_addr = 0; uint32_t rom_addr = 0;
uint8_t done = 0; uint32_t skip_block = 0;
uart_init(); uart_init();
<<<<<<< HEAD:poc/avr_sdcard/main.c
dprintf("uart_init\n\r");
sram_init();
dprintf("sram_init\n\r");
spi_init();
dprintf("spi_init\n\r");
/*
#ifdef 0
sram_clear(0x000000, 0x400000);
dprintf("sram_clear\n\r");
#endif
*/
=======
stdout = &uart_stdout; stdout = &uart_stdout;
sram_init(); sram_init();
printf("sram_init\n"); printf("SRAM Init\n");
spi_init(); spi_init();
printf("spi_init\n"); printf("SPI Init\n");
/*
sram_clear(0x000000, 0x400000);
printf("sram_clear\n"); //sram_clear(0x000000, 0x400000);
*/ //printf("sram_clear\n");
//printf("read 0x0f0f\n"); //printf("read 0x0f0f\n");
//sram_read(0x0f0f); //sram_read(0x0f0f);
//printf("write 0x0f0f\n"); //printf("write 0x0f0f\n");
//sram_write(0x0f0f,0xaa); //sram_write(0x0f0f,0xaa);
//while(1); //while(1);
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c
while ( mmc_init() !=0) { while ( mmc_init() !=0) {
printf("no sdcard..\n"); printf("No sdcard...\n");
} }
printf("mmc_init\n"); printf("MMC Init sone\n");
fat_init(read_buffer); fat_init(read_buffer);
printf("fat_init\n"); printf("FAT Init done.\n");
rom_addr = 0x000000; rom_addr = 0x000000;
<<<<<<< HEAD:poc/avr_sdcard/main.c printf("Look for %s\n",FILENAME);
while (!done){
dprintf("Look for sprite.smc\n\r");
if (fat_search_file((uint8_t*)"sprite.smc",
&fat_cluster,
&fat_size,
&fat_attrib,
read_buffer) == 1) {
dprintf("Start loading sprite.smc\n\r");
for (uint16_t block_cnt=0; block_cnt<BLOCK_CNT; block_cnt++) { if (fat_search_file((uint8_t*)FILENAME,
fat_read_file (fat_cluster,read_buffer,block_cnt);
dprintf("Read Block %i addr 0x%lx\n\r",block_cnt,rom_addr);
sram_copy(rom_addr,read_buffer,512);
//dump_packet(rom_addr,512,read_buffer);
rom_addr += 512;
}
dprintf("Done 0x%lx\n\r",rom_addr);
done = 1;
}
=======
printf("look for sprite.smc\n");
if (fat_search_file((uint8_t*)"sprite.smc",
&fat_cluster, &fat_cluster,
&fat_size, &fat_size,
&fat_attrib, &fat_attrib,
read_buffer) == 1) { read_buffer) == 1) {
for (uint16_t block_cnt=0; block_cnt<BLOCKS+1; block_cnt++) {
fat_read_file (fat_cluster,read_buffer,block_cnt);
if (block_cnt==0){
// Skip Copier Header
printf("Copier Header \n",block_cnt,rom_addr);
dump_packet(rom_addr,512,read_buffer);
printf("Read Blocks ");
}
printf(".",block_cnt,rom_addr);
sram_copy(rom_addr,read_buffer,512);
rom_addr += 512;
}
printf("\nDone %lx\n",rom_addr);
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c
}
dprintf("Dump memory\n\r");
rom_addr = 0x000000;
<<<<<<< HEAD:poc/avr_sdcard/main.c
for (uint16_t block_cnt=0; block_cnt<BLOCK_CNT; block_cnt++) {
dprintf("Read memory addr %lx\n\r",rom_addr);
=======
for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) { for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
>>>>>>> sdcard_m32:poc/avr_sdcard/main.c fat_read_file (fat_cluster,read_buffer,block_cnt);
if (block_cnt % 16 == 0)
printf("Write Ram 0x%lx Skipped %li\n",rom_addr,skip_block);
if (sram_check(read_buffer,512))
sram_copy(rom_addr,read_buffer,512);
else
skip_block +=1;
rom_addr += 512;
}
printf("Done 0x%lx Skipped %li\n",rom_addr,skip_block);
}
printf("Dump Memory\n\r");
rom_addr = 0x000000;
for (uint16_t block_cnt=0; block_cnt<BLOCKS; block_cnt++) {
sram_read_buffer(rom_addr,read_buffer,512); sram_read_buffer(rom_addr,read_buffer,512);
dump_packet(rom_addr,512,read_buffer); dump_packet(rom_addr,512,read_buffer);
rom_addr += 512; rom_addr += 512;
} }
printf("Done\n",rom_addr); printf("\nDone 0x%lx\n",rom_addr);
sram_snes_mode();
printf("\nEnter Snes mode\n");
while(1); while(1);
return 0 ;
return(0);
} }

View File

@ -10,12 +10,15 @@ APP=sprite.raw
SWC=sprite.swc SWC=sprite.swc
GFX=biker.pic GFX=biker.pic
EMU=/Applications/ZSNES.app/Contents/MacOS/ZSNES EMU=/Applications/ZSNES.app/Contents/MacOS/ZSNES
DEBUG=wine /Users/david/Devel/arch/snes/tools/snes9x1/Snes9X1.43.ep9r8.exe
all: clean $(APP) raw all: clean $(APP) raw
run: run:
$(EMU) $(APP) $(EMU) $(APP)
debug:
$(DEBUG) $(APP)
raw: $(APP) raw: $(APP)
dd if=$(APP) of=raw bs=512 skip=1 dd if=$(APP) of=raw bs=512 skip=1