o finish first poc
This commit is contained in:
parent
9d38af4267
commit
0354b82c8e
@ -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 \
|
||||||
|
|||||||
@ -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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user