Merge SD stuff into fusee-secondary. Switch diskio to single-sector reads temporarily

This commit is contained in:
Michael Scire
2018-05-04 11:47:05 -06:00
parent 299b020ecc
commit 4199be2460
42 changed files with 27485 additions and 172 deletions

View File

@@ -51,7 +51,12 @@ DRESULT disk_read (
UINT count /* Number of sectors to read */
)
{
return sdmmc_read(&sd_mmc, buff, sector, count) == 0 ? RES_OK : RES_ERROR;
for (unsigned int i = 0; i < count; i++) {
if (sdmmc_read(&sd_mmc, buff + 0x200 * i, sector + i, 1) != 0) {
return RES_ERROR;
}
}
return RES_OK;
}

View File

@@ -18,6 +18,7 @@
/
/----------------------------------------------------------------------------*/
#pragma GCC diagnostic ignored "-Wunused-function"
#include "ff.h" /* Declarations of FatFs API */
#include "diskio.h" /* Declarations of device I/O functions */

View File

@@ -102,6 +102,7 @@ int main(void) {
args->lfb = (uint32_t *)lfb_base;
args->console_col = video_get_col();
args->console_row = video_get_row();
save_sd_state(&args->sd_mmc, &args->sd_fs);
/* Jump to Stage 2. */

View File

@@ -10,6 +10,17 @@ FATFS sd_fs;
static int initialized_sd = 0;
static int mounted_sd = 0;
void save_sd_state(void **mmc, void **ff) {
*mmc = &sd_mmc;
*ff = &ff;
}
void resume_sd_state(void *mmc, void *ff) {
sd_mmc = *(struct mmc *)mmc;
sd_fs = *(FATFS *)ff;
initialized_sd = 1;
mounted_sd = 1;
}
int initialize_sd(void) {
if (initialized_sd) {
return 1;

View File

@@ -2,6 +2,11 @@
#define FUSEE_SD_UTILS_H
#include "utils.h"
#include "sdmmc.h"
#include "ff.h"
void save_sd_state(void **mmc, void **ff);
void resume_sd_state(void *mmc, void *ff);
size_t read_sd_file(void *dst, size_t dst_size, const char *filename);

View File

@@ -26,6 +26,8 @@ typedef struct {
uint32_t *lfb;
uint32_t console_row;
uint32_t console_col;
void *sd_mmc;
void *sd_fs;
} stage2_args_t;
const char *stage2_get_program_path(void);