diff --git a/src/bootloader/Makefile b/src/bootloader/Makefile index bc13952..3c17647 100644 --- a/src/bootloader/Makefile +++ b/src/bootloader/Makefile @@ -37,22 +37,30 @@ libsys: startup_boot.S init_boot.S kernel_boot.S libsys_boot.c $(CC) $(CFLAGS) -c kernel_boot.S -o kernel.o $(CC) $(CFLAGS) -c libsys_boot.c -o libsys.o -bootloader: libsys bootloader.c test.c - $(CC) $(CFLAGS) -g -c bootloader.c test.c - $(LD) $(LFLAGS) $(LIB_DIRS) startup.o init.o kernel.o libsys.o bootloader.o test.o -o $@.elf $(LIBS) >$@.map +bootloader: libsys bootloader.c + $(CC) $(CFLAGS) -g -c bootloader.c + $(LD) $(LFLAGS) $(LIB_DIRS) startup.o init.o kernel.o libsys.o bootloader.o -o $@.elf $(LIBS) >$@.map $(OBJDUMP) -D $@.elf > $@.dis $(OBJCOPY) $@.elf -O binary $@.ROM.bin $(OBJCOPY) -O srec $@.elf $@.srec $(ROMGEN) $@.ROM.bin 10 $(ENDIAN_FLAGS) -bootloader_flash: libsys bootloader_with_flash.c test.c - $(CC) $(CFLAGS) -g -c bootloader_with_flash.c test.c +bootloader_flash: libsys bootloader_with_flash.c + $(CC) $(CFLAGS) -g -c bootloader_with_flash.c $(CC) $(CFLAGS) -g -c ../cfiflash.c - $(LD) $(LFLAGS) $(LIB_DIRS) startup.o init.o kernel.o libsys.o cfiflash.o bootloader_with_flash.o test.o -o $@.elf $(LIBS) >$@.map + $(LD) $(LFLAGS) $(LIB_DIRS) startup.o init.o kernel.o libsys.o cfiflash.o bootloader_with_flash.o -o $@.elf $(LIBS) >$@.map $(OBJDUMP) -D $@.elf > $@.dis $(OBJCOPY) $@.elf -O binary $@.ROM.bin $(OBJCOPY) -O srec $@.elf $@.srec $(ROMGEN) $@.ROM.bin 11 $(ENDIAN_FLAGS) +test: libsys test.c + $(CC) $(CFLAGS) -g -c test.c + $(LD) $(LFLAGS) $(LIB_DIRS) startup.o init.o kernel.o libsys.o test.o -o $@.elf $(LIBS) >$@.map + $(OBJDUMP) -D $@.elf > $@.dis + $(OBJCOPY) $@.elf -O binary $@.ROM.bin + $(OBJCOPY) -O srec $@.elf $@.srec + $(ROMGEN) $@.ROM.bin 10 $(ENDIAN_FLAGS) + clean: rm -rf *.o *.bin *.map *.dis *.srec *.elf *.vhd* *.tcl bootloader > /dev/null diff --git a/src/bootloader/init_boot.S b/src/bootloader/init_boot.S index 316917c..275b997 100644 --- a/src/bootloader/init_boot.S +++ b/src/bootloader/init_boot.S @@ -4,7 +4,6 @@ .globl _init .align 2 .extern end - .weak test _init: .set noreorder @@ -14,10 +13,6 @@ _init: addiu $27, $0, baudrate sw $27, 0($26) - la $26, test - jr $26 - nop - jr $ra .set reorder diff --git a/src/bootloader/test.c b/src/bootloader/test.c index 078277f..4fa1a91 100644 --- a/src/bootloader/test.c +++ b/src/bootloader/test.c @@ -1,11 +1,25 @@ #include "libsys_boot.h" -void test() +void main() { + uint32_t i; + volatile uint32_t *pGPIO = (uint32_t*)SYS_GPIO_0_DATA; volatile uint32_t *pGPIODIR = (uint32_t*)SYS_GPIO_0_DIR; - volatile uint32_t *pSDRAM32 = (uint32_t*)SDRAM_BASE; + volatile uint8_t *pRAM = (uint8_t*)SDRAM_BASE; + volatile uint32_t *pRAM32 = (uint32_t*)SDRAM_BASE; *pGPIODIR = GPIO_0_DFLT_DIR; + *pGPIO = 0; + + for (i=0; i < 1024; i++) + { + pRAM[i] = i; + } + for (i=0; i < 1024; i++) + { + *pGPIO = pRAM32[i]; + } *pGPIO = 1; + } diff --git a/tools/src/ramgen.c b/tools/src/ramgen.c index e5cef18..a1ecb69 100644 --- a/tools/src/ramgen.c +++ b/tools/src/ramgen.c @@ -249,8 +249,10 @@ int SaveRAM_V4LD(char *pFilenameIn, char *pFilenameOut, char *pArchName, char *p fprintf(pFileOut, "PROM_READ:\n", ARCH_NAME); fprintf(pFileOut, "\tprocess(clk)\n"); fprintf(pFileOut, "\tbegin\n"); - fprintf(pFileOut, "\t\tif rising_edge(clk) and ce = '1' then\n"); + fprintf(pFileOut, "\t\tif rising_edge(clk) then\n"); + fprintf(pFileOut, "\t\t\tif ce = '1' then\n"); fprintf(pFileOut, "\t\t\tdout <= word_array(to_integer(addr(%d downto 2)));\n", nbits_addr+1); + fprintf(pFileOut, "\t\t\tend if;\n"); fprintf(pFileOut, "\t\tend if;\n"); fprintf(pFileOut, "\tend process;\n"); fprintf(pFileOut, "\n"); diff --git a/tools/src/romgen.c b/tools/src/romgen.c index e1a073e..b988562 100644 --- a/tools/src/romgen.c +++ b/tools/src/romgen.c @@ -163,8 +163,10 @@ int SaveROM(char *pFilenameIn, char *pFilenameOut, char *pArchName, char *pEntNa fprintf(pFileOut, "PROM_READ:\n", ARCH_NAME); fprintf(pFileOut, "\tprocess(clk)\n"); fprintf(pFileOut, "\tbegin\n"); - fprintf(pFileOut, "\t\tif rising_edge(clk) and ce = '1' then\n"); - fprintf(pFileOut, "\t\t\tdout <= word_array(to_integer(addr(%d downto 2)));\n", nbits_addr+1); + fprintf(pFileOut, "\t\tif rising_edge(clk) then\n"); + fprintf(pFileOut, "\t\t\tif ce = '1' then\n"); + fprintf(pFileOut, "\t\t\t\tdout <= word_array(to_integer(addr(%d downto 2)));\n", nbits_addr+1); + fprintf(pFileOut, "\t\t\tend if;\n"); fprintf(pFileOut, "\t\tend if;\n"); fprintf(pFileOut, "\tend process;\n"); fprintf(pFileOut, "\n");