Bläddra i källkod

o finish first poc

optixx 15 år sedan
förälder
incheckning
0354b82c8e
3 ändrade filer med 67 tillägg och 148 borttagningar
  1. 4 19
      poc/avr_sdcard/Makefile
  2. 59 128
      poc/avr_sdcard/main.c
  3. 4 1
      snes/simpletest/Makefile

+ 4 - 19
poc/avr_sdcard/Makefile

@@ -181,11 +181,10 @@ LDFLAGS += $(PRINTF_LIB_MIN) $(SCANF_LIB) $(MATH_LIB)
 AVRDUDE_PROGRAMMER = stk500v2
 
 # com1 = serial port. Use lpt1 to connect to parallel port.
-AVRDUDE_PORT = /dev/tty.PL2303-00001324   # programmer connected to serial device
 
-AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+AVRDUDE_PORT = /dev/tty.PL2303-00002006    
 
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
 
 # Uncomment the following if you want avrdude's erase cycle counter.
 # 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 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.  
 
 
-#flash: $(TARGET).hex $(TARGET).eep
-#	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
-
-
+flash: $(TARGET).hex $(TARGET).eep
+	sudo $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
 
 # Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
 COFFCONVERT=$(OBJCOPY) --debugging \

+ 59 - 128
poc/avr_sdcard/main.c

@@ -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 <util/delay.h>
@@ -11,6 +7,10 @@
 #include "mmc.h"
 #include "fat.h"
 
+// Debug
+#define debug(x, fmt) printf("%s:%u: %s=" fmt, __FILE__, __LINE__, #x, x)
+extern FILE uart_stdout;
+
 //SREG defines
 #define S_MOSI 	PB5
 #define S_MISO	PB6
@@ -28,55 +28,30 @@
 #define RAM_DIR		DDRA
 #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 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_DIR	DDRB
 
 #define SPI_PORT	PORTB
 #define SPI_DIR		DDRB
 
-
 #define LED_PORT	PORTD
 #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
-#define BLOCKS 510
+uint8_t read_buffer[BUFFER_SIZE];
 
-#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){
 	uint16_t i,j;
-	uint16_t sum =0;
+	uint16_t sum = 0;
+	uint8_t clear=0;
+	
 	for (i=0;i<len;i+=16) {
 		
 		sum = 0;
@@ -84,15 +59,14 @@ void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
 			sum +=packet[i+j];
 		}
 		if (!sum){
-			//printf(".");
+			clear=1;
 			continue;
-<<<<<<< HEAD:poc/avr_sdcard/main.c
-		
-		dprintf("%08lx:", addr + i);
-=======
 		}
+		if (clear){
+			printf("*\n");
+			clear = 0;
+		}	
 		printf("%08lx:", addr + i);
->>>>>>> sdcard_m32:poc/avr_sdcard/main.c
 		for (j=0;j<16;j++) {
 			printf(" %02x", packet[i+j]);
 		}
@@ -103,11 +77,7 @@ void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){
 			else
 				printf(".");
 		}
-<<<<<<< HEAD:poc/avr_sdcard/main.c
-		dprintf("|\r\n");
-=======
 		printf("|\n");
->>>>>>> sdcard_m32:poc/avr_sdcard/main.c
 	}
 }
 
@@ -201,13 +171,17 @@ void  sram_init(void){
 	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){
 
 	uint32_t i;
 	for (i=addr; i<(addr + len);i++ ){
 		if (0==i%0xfff)
-	    	dprintf("sram_clear %lx\n\r",i);
+	    	printf("sram_clear %lx\n\r",i);
 		sram_write(i, 0x00);
 	}
 }
@@ -229,7 +203,13 @@ void sram_read_buffer(uint32_t addr,uint8_t *dst, uint32_t len){
 		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)
 {
 
@@ -237,120 +217,71 @@ int main(void)
     uint8_t 	fat_attrib = 0;
     uint32_t 	fat_size = 0;
     uint32_t 	rom_addr = 0;
-    uint8_t 	done = 0;
-
-
-
+    uint32_t 	skip_block = 0;
+ 
     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;
 	
     sram_init();
-	printf("sram_init\n");
+	printf("SRAM Init\n");
 
 	spi_init();
-	printf("spi_init\n");
-/*
-	sram_clear(0x000000, 0x400000);
-	printf("sram_clear\n");
-*/
+	printf("SPI Init\n");
+
+	
+	//sram_clear(0x000000, 0x400000);
+	//printf("sram_clear\n");
 
 	//printf("read 0x0f0f\n");
 	//sram_read(0x0f0f);
 	//printf("write 0x0f0f\n");
 	//sram_write(0x0f0f,0xaa);
 	//while(1);
-
->>>>>>> sdcard_m32:poc/avr_sdcard/main.c
 	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);
-    printf("fat_init\n");
-
-
+    printf("FAT Init done.\n");
     rom_addr = 0x000000;
-<<<<<<< HEAD:poc/avr_sdcard/main.c
-	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++) {
-	        	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");
+    printf("Look for %s\n",FILENAME);
 
-    if (fat_search_file((uint8_t*)"sprite.smc",
+    if (fat_search_file((uint8_t*)FILENAME,
 						&fat_cluster,
 						&fat_size,
 						&fat_attrib,
 						read_buffer) == 1) {
 	   
 
-        for (uint16_t block_cnt=0; block_cnt<BLOCKS+1; block_cnt++) {
+        for (uint16_t block_cnt=0; block_cnt<BLOCKS; 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);
+			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("\nDone %lx\n",rom_addr);
->>>>>>> sdcard_m32:poc/avr_sdcard/main.c
+		printf("Done 0x%lx Skipped %li\n",rom_addr,skip_block);
 	}
-	
-    dprintf("Dump memory\n\r");
-
+    printf("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++) {
->>>>>>> sdcard_m32:poc/avr_sdcard/main.c
     	sram_read_buffer(rom_addr,read_buffer,512);
     	dump_packet(rom_addr,512,read_buffer);
 		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);
+	return 0 ;
+	
+}
+
 
 
-	while(1);
 
-	return(0);
-}
 

+ 4 - 1
snes/simpletest/Makefile

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