ikari cb859f3bfb Firmware: add SD debugging message преди 12 години
..
bootldr 3506cb0ba2 Firmware/bootldr: size reduction and stability measures преди 12 години
tests 5f87768a14 Firmware: remove unnecessary crc16.c from Makefile преди 12 години
utils cb202569d1 firmware: bootloader with firmware upgrade преди 13 години
Makefile 97aef4a2d3 Firmware: gather+display system information преди 12 години
README 65e26cb0c3 basic build instructions преди 12 години
bits.h 4bc455f12b SD acceleration, display file size in menu (fw side) преди 13 години
ccsbcs.c 40248e61af mk2 fw wip преди 13 години
cfgware.h 91d8637dfe Firmware: embed updated sd2sneslite into firmware преди 12 години
cic.c 97aef4a2d3 Firmware: gather+display system information преди 12 години
cic.h 97aef4a2d3 Firmware: gather+display system information преди 12 години
cli.c 97aef4a2d3 Firmware: gather+display system information преди 12 години
cli.h d4b7d9630b cic interface, cli for real this time... преди 13 години
clock.c bfe9a91d07 firmware: adjustments for Mk.II Rev.C; enable timesetting from SNES menu преди 13 години
clock.h 40248e61af mk2 fw wip преди 13 години
conf2h.awk e121b34cf4 Initial Commit преди 15 години
config a52638b4be Firmware: update version number to 0.1.2 преди 12 години
config.h a52638b4be Firmware: update version number to 0.1.2 преди 12 години
crc.S 31d9e1a1d2 some sanity checks, early status messages преди 13 години
crc.h 40248e61af mk2 fw wip преди 13 години
crc16.c bfe9a91d07 firmware: adjustments for Mk.II Rev.C; enable timesetting from SNES menu преди 13 години
crc16.h bfe9a91d07 firmware: adjustments for Mk.II Rev.C; enable timesetting from SNES menu преди 13 години
crc32.c 46a42fe5ac mk2 fw: iap preparation, so96 mapper, reduce db size, delay with real sleep mode, cli преди 13 години
crc32.h 220b8c32a4 SaveRAM+directory CRC16 -> CRC32 преди 13 години
diskio.h e2e628d6fb preliminary MSU-1 audio support преди 13 години
faulthandler.c fa28f6035e mk2 fw wip преди 13 години
ff.c b8f4c9b584 Firmware: optimize non-sector-aligned SD DMA reads (bugfix) преди 12 години
ff.h 3fda86125c firmware: speed up directory scanning преди 12 години
ffconf.h 90b91583a1 Firmware: use FatFS FASTSEEK option for MSU1 file access преди 12 години
fileops.c 3fda86125c firmware: speed up directory scanning преди 12 години
fileops.h 3fda86125c firmware: speed up directory scanning преди 12 години
filetypes.c 97aef4a2d3 Firmware: gather+display system information преди 12 години
filetypes.h 3fda86125c firmware: speed up directory scanning преди 12 години
flash.cfg d9abb0811e begin ARM firmware преди 13 години
flash.script c97278c3d6 Firmware: adjust to reduced bootloader size преди 12 години
fpga.c fcac85d19b Firmware: minor cleanups/comments преди 12 години
fpga.h 3bf7788693 Firmware: remove now unused mcu_ovr statements преди 12 години
fpga_spi.c b272a6fc1c Firmware: optimize non-sector-aligned SD DMA reads преди 12 години
fpga_spi.h afc26397b1 Firmware: region override (patch register $213f) преди 12 години
init.gdb 40248e61af mk2 fw wip преди 13 години
integer.h f063cb31f9 mk2 fw wip (cleanup indent+comment) преди 13 години
irq.c e99c5eb863 firmware: add missing irq.c преди 13 години
led.c bc28fed22a Firmware: correct LED PWM initialization преди 12 години
led.h b7654290a1 LED PWM преди 13 години
lpc1754.cfg 40a2ae00fb Firmware/build: Be more OpenOCD 0.4.0 friendly преди 13 години
lpc1754.ld c97278c3d6 Firmware: adjust to reduced bootloader size преди 12 години
main.c 3436ccf46a Firmware: improve map detection преди 12 години
memory.c afc26397b1 Firmware: region override (patch register $213f) преди 12 години
memory.h 97aef4a2d3 Firmware: gather+display system information преди 12 години
msu1.c da2386e453 Firmware/MSU1: stop DAC at end of audio file преди 12 години
msu1.h 1183718234 Firmware: ST0010 support + peripheral enable switches преди 13 години
openocd-usb.cfg 40a2ae00fb Firmware/build: Be more OpenOCD 0.4.0 friendly преди 13 години
power.c 72b9444861 firmware: initial power management преди 13 години
power.h 72b9444861 firmware: initial power management преди 13 години
printf.c fa28f6035e mk2 fw wip преди 13 години
reset.cfg db45a5afaf mk2 fw wip преди 13 години
rle.c d7efa83e71 firmware: RLE преди 13 години
rle.h d7efa83e71 firmware: RLE преди 13 години
rtc.c bfe9a91d07 firmware: adjustments for Mk.II Rev.C; enable timesetting from SNES menu преди 13 години
rtc.h bfe9a91d07 firmware: adjustments for Mk.II Rev.C; enable timesetting from SNES menu преди 13 години
sdcard.h 83f3307680 mk2 fw wip преди 13 години
sdnative.c cb859f3bfb Firmware: add SD debugging message преди 12 години
sdnative.h 97aef4a2d3 Firmware: gather+display system information преди 12 години
smc.c 3436ccf46a Firmware: improve map detection преди 12 години
smc.h 3436ccf46a Firmware: improve map detection преди 12 години
snes.c 3bf7788693 Firmware: remove now unused mcu_ovr statements преди 12 години
snes.h 97aef4a2d3 Firmware: gather+display system information преди 12 години
snesboot.h 9eebd5cd73 Firmware: embed new SNES boot message code преди 12 години
sort.c 4bc455f12b SD acceleration, display file size in menu (fw side) преди 13 години
sort.h fa28f6035e mk2 fw wip преди 13 години
spi.c fcac85d19b Firmware: minor cleanups/comments преди 12 години
spi.h d0e349a145 Firmware/SPI: move status register bit constants to spi.h преди 12 години
startup.S d9abb0811e begin ARM firmware преди 13 години
tests.h 747e04e010 firmware: add tests.h преди 13 години
timer.c bfe9a91d07 firmware: adjustments for Mk.II Rev.C; enable timesetting from SNES menu преди 13 години
timer.h 46a42fe5ac mk2 fw: iap preparation, so96 mapper, reduce db size, delay with real sleep mode, cli преди 13 години
uart.c e2e628d6fb preliminary MSU-1 audio support преди 13 години
uart.h 561477ec53 SD native write support (still needs error handling), DB creation update (display file sizes) преди 13 години
xmodem.c f6df5e1158 Firmware: remove magic number for XModem block size преди 12 години
xmodem.h f6df5e1158 Firmware: remove magic number for XModem block size преди 12 години

README

How to build:

a) Build requirements
* make
* Cortex M3 toolchain
* snescom/sneslink
* Xilinx FPGA synthesis tool (e.g. ISE WebPack)
* PIC assembler

b) Cortex M3 toolchain
* obtain the cm3-toolchain builder:
git clone http://snowcat.de/toolchain-cm3.git/
* build the cm3-toolchain. Some tools, libraries, and headers are required,
including but probably not limited to:
- libz-dev
- libcloog-ppl-dev
- texinfo
- libmpfr-dev
- libgmp3-dev
- gawk
- bison
- recode
- flex
- libncurses5-dev
- libexpat-dev
- make
- gcc
Newer gccs complain when compiling binutils, so you may have to add
'--disable-werror' to the compiler options for binutils in the Makefile.
The Makefile will install immediately so make sure you can write to the
installation directory.

c) snescom/sneslink
* http://bisqwit.iki.fi/source/snescom.html

d) ISE WebPack
* http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm

e) PIC assembler
* e.g. GPUTILS, http://gputils.sourceforge.net/

f) general order of operations
1) program the PIC (cic/supercic/supercic-key.asm)
2) build and program the bootloader.
3) build the firmware and copy it to the memory card
4) build the snes menu and copy it to the memory card
5) build and compress the FPGA configuration and copy it to the memory card
6) insert memory card, power on; the bootloader should begin flashing the
firmware and boot it

1) Programming the PIC
Use a PIC assembler + programmer of your choice and program a PIC12F629 with
cic/supercic/supercic-key.asm. Make sure that the clock source is set to
EC_OSC and MCLRE is disabled.
After programming you can solder the PIC to the board and short JP401.
Open JP401 in case you need to reprogram the PIC on board.

2) Building & programming the bootloader
The Makefile is prepared for JTAG programming using OpenOCD 0.4 and an FT2232
based USB-JTAG adapter.
Connect a JTAG cable to J401 (14-pin header). The pinout is printed on the
board. cd to src/bootldr and make && make program.

3) Building the firmware
cd to src/utils and make.
cd to src/ and make.
You should obtain a firmware file called obj/firmware.img. Copy this file to
/sd2snes/firmware.img.

4) Building the SNES menu
snescom is required.
cd to snes/ and make.
Copy the resulting file menu.bin to /sd2snes/menu.bin.

5) Building the FPGA configuration
Compile the RLE compressor in utils/rle.c:
$ gcc -Wall -o rle rle.c

Load verilog/sd2snes/sd2snes.xise in Xilinx ISE (or create your own project).
Target is a XC3S400-4PQ208.
Generate the programming file and compress it using utils/rle.c:
$ rle main.bit fpga_base.bit

Copy fpga_base.bit to /sd2snes/fpga_base.bit