mirror of
https://github.com/Polprzewodnikowy/SummerCart64.git
synced 2024-11-25 15:16:53 +01:00
small fixes
This commit is contained in:
parent
0f42c6e0d7
commit
4c7783f740
@ -7,7 +7,7 @@ SIZE = $(TOOLCHAIN)size
|
|||||||
PYTHON = python3
|
PYTHON = python3
|
||||||
|
|
||||||
FLAGS = -march=vr4300 -mtune=vr4300 $(USER_FLAGS)
|
FLAGS = -march=vr4300 -mtune=vr4300 $(USER_FLAGS)
|
||||||
CFLAGS = -Os -Wall -ffunction-sections -fdata-sections -ffreestanding -G 0 -MMD -MP
|
CFLAGS = -Os -Wall -ffunction-sections -fdata-sections -ffreestanding -MMD -MP
|
||||||
ASFLAGS = -Wa,-I$(N64_INST)/mips64-elf/lib
|
ASFLAGS = -Wa,-I$(N64_INST)/mips64-elf/lib
|
||||||
LDFLAGS = -lc -nostartfiles -Wl,--gc-sections
|
LDFLAGS = -lc -nostartfiles -Wl,--gc-sections
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
extern const uint32_t assets_sc64_logo_640_240_dimmed;
|
extern const uint32_t assets_sc64_logo_640_240_dimmed __attribute__((section(".assets")));
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include "io.h"
|
#include "io.h"
|
||||||
|
|
||||||
|
|
||||||
extern uint32_t ipl2;
|
extern uint32_t ipl2 __attribute__((section(".data")));
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
/ and optional writing functions as well. */
|
/ and optional writing functions as well. */
|
||||||
|
|
||||||
|
|
||||||
#define FF_FS_MINIMIZE 0
|
#define FF_FS_MINIMIZE 2
|
||||||
/* This option defines minimization level to remove some basic API functions.
|
/* This option defines minimization level to remove some basic API functions.
|
||||||
/
|
/
|
||||||
/ 0: Basic functions are fully enabled.
|
/ 0: Basic functions are fully enabled.
|
||||||
@ -25,7 +25,7 @@
|
|||||||
/ 3: f_lseek() function is removed in addition to 2. */
|
/ 3: f_lseek() function is removed in addition to 2. */
|
||||||
|
|
||||||
|
|
||||||
#define FF_USE_FIND 1
|
#define FF_USE_FIND 0
|
||||||
/* This option switches filtered directory read functions, f_findfirst() and
|
/* This option switches filtered directory read functions, f_findfirst() and
|
||||||
/ f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */
|
/ f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */
|
||||||
|
|
||||||
@ -52,7 +52,7 @@
|
|||||||
/ (0:Disable or 1:Enable) */
|
/ (0:Disable or 1:Enable) */
|
||||||
|
|
||||||
|
|
||||||
#define FF_USE_FORWARD 1
|
#define FF_USE_FORWARD 0
|
||||||
/* This option switches f_forward() function. (0:Disable or 1:Enable) */
|
/* This option switches f_forward() function. (0:Disable or 1:Enable) */
|
||||||
|
|
||||||
|
|
||||||
@ -153,7 +153,7 @@
|
|||||||
/ on character encoding. When LFN is not enabled, these options have no effect. */
|
/ on character encoding. When LFN is not enabled, these options have no effect. */
|
||||||
|
|
||||||
|
|
||||||
#define FF_FS_RPATH 1
|
#define FF_FS_RPATH 0
|
||||||
/* This option configures support for relative path.
|
/* This option configures support for relative path.
|
||||||
/
|
/
|
||||||
/ 0: Disable relative path and remove related functions.
|
/ 0: Disable relative path and remove related functions.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
.set noat
|
.set noat
|
||||||
.set noreorder
|
.set noreorder
|
||||||
|
|
||||||
.section .text.ipl2
|
.section .data.ipl2
|
||||||
ipl2:
|
ipl2:
|
||||||
.global ipl2
|
.global ipl2
|
||||||
lui $t5, 0xBFC0
|
lui $t5, 0xBFC0
|
||||||
|
@ -117,12 +117,12 @@ void sc64_get_time (rtc_time_t *t) {
|
|||||||
bool sc64_usb_write_ready (void) {
|
bool sc64_usb_write_ready (void) {
|
||||||
uint32_t result[2];
|
uint32_t result[2];
|
||||||
sc64_execute_cmd(SC64_CMD_USB_WRITE_STATUS, NULL, result);
|
sc64_execute_cmd(SC64_CMD_USB_WRITE_STATUS, NULL, result);
|
||||||
return result[0];
|
return (!(result[0] & (1 << 31)));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sc64_usb_write (uint32_t *address, uint32_t length) {
|
bool sc64_usb_write (uint32_t *address, uint8_t type, uint32_t length) {
|
||||||
while (!sc64_usb_write_ready());
|
while (!sc64_usb_write_ready());
|
||||||
uint32_t args[2] = { (uint32_t) (address), length };
|
uint32_t args[2] = { (uint32_t) (address), ((type << 24) | (length & 0xFFFFFF)) };
|
||||||
return sc64_execute_cmd(SC64_CMD_USB_WRITE, args, NULL);
|
return sc64_execute_cmd(SC64_CMD_USB_WRITE, args, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +146,7 @@ bool sc64_usb_read (uint32_t *address, uint32_t length) {
|
|||||||
}
|
}
|
||||||
do {
|
do {
|
||||||
sc64_execute_cmd(SC64_CMD_USB_READ_STATUS, NULL, result);
|
sc64_execute_cmd(SC64_CMD_USB_READ_STATUS, NULL, result);
|
||||||
} while(result[0] & (1 << 24));
|
} while(result[0] & (1 << 31));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ void sc64_get_boot_info (sc64_boot_info_t *info);
|
|||||||
void sc64_set_time (rtc_time_t *t);
|
void sc64_set_time (rtc_time_t *t);
|
||||||
void sc64_get_time (rtc_time_t *t);
|
void sc64_get_time (rtc_time_t *t);
|
||||||
bool sc64_usb_write_ready (void);
|
bool sc64_usb_write_ready (void);
|
||||||
bool sc64_usb_write (uint32_t *address, uint32_t length);
|
bool sc64_usb_write (uint32_t *address, uint8_t type, uint32_t length);
|
||||||
bool sc64_usb_read_ready (uint8_t *type, uint32_t *length);
|
bool sc64_usb_read_ready (uint8_t *type, uint32_t *length);
|
||||||
bool sc64_usb_read (uint32_t *address, uint32_t length);
|
bool sc64_usb_read (uint32_t *address, uint32_t length);
|
||||||
bool sc64_sd_card_init (void);
|
bool sc64_sd_card_init (void);
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
|
||||||
extern char _sheap;
|
extern char _sheap __attribute__((section(".data")));
|
||||||
extern char _eheap;
|
extern char _eheap __attribute__((section(".data")));
|
||||||
|
|
||||||
|
|
||||||
caddr_t _sbrk_r (struct _reent *prt, ptrdiff_t incr) {
|
caddr_t _sbrk_r (struct _reent *prt, ptrdiff_t incr) {
|
||||||
|
@ -6,7 +6,7 @@ OBJDUMP = $(TOOLCHAIN)objdump
|
|||||||
SIZE = $(TOOLCHAIN)size
|
SIZE = $(TOOLCHAIN)size
|
||||||
|
|
||||||
FLAGS = -mcpu=cortex-m0plus -mthumb -DSTM32G030xx $(USER_FLAGS) -g -ggdb3
|
FLAGS = -mcpu=cortex-m0plus -mthumb -DSTM32G030xx $(USER_FLAGS) -g -ggdb3
|
||||||
CFLAGS = -Og -Wall -ffunction-sections -fdata-sections -ffreestanding -MMD -MP -I./lib
|
CFLAGS = -Os -Wall -ffunction-sections -fdata-sections -ffreestanding -MMD -MP -I./lib
|
||||||
LDFLAGS = -nostartfiles -Wl,--gc-sections
|
LDFLAGS = -nostartfiles -Wl,--gc-sections
|
||||||
|
|
||||||
SRC_DIR = src
|
SRC_DIR = src
|
||||||
|
@ -402,12 +402,14 @@ void cfg_process (void) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'M':
|
case 'M':
|
||||||
if (cfg_translate_address(&args[0], args[1], false)) {
|
if (cfg_translate_address(&args[0], args[1] & 0xFFFFFF, false)) {
|
||||||
cfg_set_error(CFG_ERROR_BAD_ADDRESS);
|
cfg_set_error(CFG_ERROR_BAD_ADDRESS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
usb_create_packet(&packet_info, PACKET_CMD_DEBUG_OUTPUT);
|
usb_create_packet(&packet_info, PACKET_CMD_DEBUG_OUTPUT);
|
||||||
packet_info.dma_length = args[1];
|
packet_info.data_length = 4;
|
||||||
|
packet_info.data[0] = args[1];
|
||||||
|
packet_info.dma_length = args[1] & 0xFFFFFF;
|
||||||
packet_info.dma_address = args[0];
|
packet_info.dma_address = args[0];
|
||||||
packet_info.done_callback = cfg_set_usb_output_ready;
|
packet_info.done_callback = cfg_set_usb_output_ready;
|
||||||
if (usb_enqueue_packet(&packet_info)) {
|
if (usb_enqueue_packet(&packet_info)) {
|
||||||
@ -422,7 +424,7 @@ void cfg_process (void) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'U':
|
case 'U':
|
||||||
args[0] = p.usb_output_ready ? 1 : 0;
|
args[0] = p.usb_output_ready ? 0 : (1 << 31);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'i':
|
case 'i':
|
||||||
|
@ -286,16 +286,15 @@ static void hw_flash_unlock (void) {
|
|||||||
while (FLASH->SR & FLASH_SR_BSY1);
|
while (FLASH->SR & FLASH_SR_BSY1);
|
||||||
if (FLASH->CR & FLASH_CR_LOCK) {
|
if (FLASH->CR & FLASH_CR_LOCK) {
|
||||||
FLASH->KEYR = 0x45670123;
|
FLASH->KEYR = 0x45670123;
|
||||||
|
__ISB();
|
||||||
FLASH->KEYR = 0xCDEF89AB;
|
FLASH->KEYR = 0xCDEF89AB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void hw_flash_erase (void) {
|
void hw_flash_erase (void) {
|
||||||
hw_flash_unlock();
|
hw_flash_unlock();
|
||||||
FLASH->CR |= FLASH_CR_MER1;
|
FLASH->CR |= (FLASH_CR_STRT | FLASH_CR_MER1);
|
||||||
FLASH->CR |= FLASH_CR_STRT;
|
|
||||||
while (FLASH->SR & FLASH_SR_BSY1);
|
while (FLASH->SR & FLASH_SR_BSY1);
|
||||||
FLASH->CR &= ~(FLASH_CR_MER1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void hw_flash_program (uint32_t offset, hw_flash_t value) {
|
void hw_flash_program (uint32_t offset, hw_flash_t value) {
|
||||||
@ -305,9 +304,6 @@ void hw_flash_program (uint32_t offset, hw_flash_t value) {
|
|||||||
__ISB();
|
__ISB();
|
||||||
*(__IO uint32_t *) (FLASH_BASE + offset + 4) = ((value >> 32) & 0xFFFFFFFF);
|
*(__IO uint32_t *) (FLASH_BASE + offset + 4) = ((value >> 32) & 0xFFFFFFFF);
|
||||||
while (FLASH->SR & FLASH_SR_BSY1);
|
while (FLASH->SR & FLASH_SR_BSY1);
|
||||||
if (FLASH->SR & FLASH_SR_EOP) {
|
|
||||||
FLASH->SR |= FLASH_SR_EOP;
|
|
||||||
}
|
|
||||||
FLASH->CR &= ~(FLASH_CR_PG);
|
FLASH->CR &= ~(FLASH_CR_PG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -390,7 +390,7 @@ void usb_get_read_info (uint32_t *args) {
|
|||||||
args[0] = p.rx_args[0] & 0xFF;
|
args[0] = p.rx_args[0] & 0xFF;
|
||||||
args[1] = p.rx_args[1];
|
args[1] = p.rx_args[1];
|
||||||
}
|
}
|
||||||
args[0] |= (p.read_length > 0) ? (1 << 24) : 0;
|
args[0] |= (p.read_length > 0) ? (1 << 31) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void usb_init (void) {
|
void usb_init (void) {
|
||||||
|
@ -536,7 +536,14 @@ class SC64:
|
|||||||
print(data.decode('EUC-JP', errors='backslashreplace'), end='')
|
print(data.decode('EUC-JP', errors='backslashreplace'), end='')
|
||||||
|
|
||||||
def __handle_usb_packet(self, data: bytes) -> None:
|
def __handle_usb_packet(self, data: bytes) -> None:
|
||||||
print(data)
|
header = self.__get_int(data[0:4])
|
||||||
|
datatype = ((header >> 24) & 0xFF)
|
||||||
|
length = (header & 0xFFFFFF)
|
||||||
|
packet = data[4:]
|
||||||
|
if (datatype == 0x01):
|
||||||
|
print(packet.decode('UTF-8', errors='backslashreplace'), end='')
|
||||||
|
else:
|
||||||
|
print(f'Unhandled USB packet - datatype: [{datatype}], length: [{length}]')
|
||||||
|
|
||||||
def debug_loop(self, isv: bool=False, disks: Optional[list[str]]=None) -> None:
|
def debug_loop(self, isv: bool=False, disks: Optional[list[str]]=None) -> None:
|
||||||
dd = None
|
dd = None
|
||||||
|
Loading…
Reference in New Issue
Block a user