mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ブートファイル名をFS形式でHW_TWL_FS_BOOT_SRL_PATH_BUFに書いてみた
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@243 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
18fe41a3a9
commit
7b449b3834
@ -65,7 +65,7 @@ static int menu_fd = -1;
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
BOOL FATFS_OpenRecentMenu( int driveno )
|
BOOL FATFS_OpenRecentMenu( int driveno )
|
||||||
{
|
{
|
||||||
char *menufile = (char*)L"A:\\title\\00010001\\4d454e55\\content\\12123434.app";
|
char *menufile = (char*)L"A:\\title\\00010001\\52434e4c\\content\\12123434.app";
|
||||||
if (driveno < 0 || driveno >= 26)
|
if (driveno < 0 || driveno >= 26)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -76,6 +76,7 @@ BOOL FATFS_OpenRecentMenu( int driveno )
|
|||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
FATFS_SaveSrlFilename(FATFS_MEDIA_TYPE_NAND, menufile);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,6 +101,71 @@ BOOL FATFS_OpenSpecifiedSrl( const char* menufile )
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: FATFS_SaveSrlFilename
|
||||||
|
|
||||||
|
Description: store filename to HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||||
|
|
||||||
|
ファイル名をHW_TWL_FS_BOOT_SRL_PATH_BUFに書き込みます。
|
||||||
|
|
||||||
|
Arguments: media media type
|
||||||
|
filename target filename
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
BOOL FATFS_SaveSrlFilename( FATFSMediaType media, const char* filename )
|
||||||
|
{
|
||||||
|
char* dest = (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF;
|
||||||
|
const char nandStr[] = "nand:/";
|
||||||
|
const char sdmcStr[] = "sdmc:/";
|
||||||
|
|
||||||
|
if ( filename[2] == ':' ) // ドライブレターは削除
|
||||||
|
{
|
||||||
|
filename += 4;
|
||||||
|
}
|
||||||
|
if ( filename[0] == '\\' ) // 先頭のパス記号は削除
|
||||||
|
{
|
||||||
|
filename += 2;
|
||||||
|
}
|
||||||
|
switch( media )
|
||||||
|
{
|
||||||
|
case FATFS_MEDIA_TYPE_NAND:
|
||||||
|
MI_CpuCopy8(nandStr, dest, sizeof(nandStr)-1);
|
||||||
|
dest += sizeof(nandStr)-1;
|
||||||
|
break;
|
||||||
|
case FATFS_MEDIA_TYPE_SD:
|
||||||
|
MI_CpuCopy8(sdmcStr, dest, sizeof(sdmcStr)-1);
|
||||||
|
dest += sizeof(sdmcStr)-1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
// unicode詰め (ASCII only)
|
||||||
|
while ( dest < (char*)HW_TWL_ROM_HEADER_BUF )
|
||||||
|
{
|
||||||
|
if ( *filename == '\\' ) // パス記号変換
|
||||||
|
{
|
||||||
|
*dest++ = '/';
|
||||||
|
filename++;
|
||||||
|
}
|
||||||
|
else if ( *filename != 0 ) // 通常コピー
|
||||||
|
{
|
||||||
|
*dest++ = *filename++;
|
||||||
|
}
|
||||||
|
else if ( *(filename + 1) != 0 ) // \0が連続していないならunicodeの詰めるべき隙間
|
||||||
|
{
|
||||||
|
filename++; // omit
|
||||||
|
}
|
||||||
|
else // \0が連続しているなら終端
|
||||||
|
{
|
||||||
|
MI_CpuClear8( dest, HW_TWL_ROM_HEADER_BUF - (u32)dest ); // 残りバッファのクリア
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OS_TPrintf("Stored: %s\n", (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: FATFS_GetSrlDescriptor
|
Name: FATFS_GetSrlDescriptor
|
||||||
|
|
||||||
|
|||||||
@ -290,7 +290,7 @@ BOOL MI_LoadHeader( SVCSignHeapContext* pool, const void* rsa_key )
|
|||||||
#endif
|
#endif
|
||||||
if ( result )
|
if ( result )
|
||||||
{
|
{
|
||||||
DC_FlushRange( rh, HW_TWL_ROM_HEADER_BUF_SIZE );
|
DC_StoreRange( rh, HW_TWL_ROM_HEADER_BUF_SIZE );
|
||||||
PXI_NotifyID( FIRM_PXI_ID_AUTH_HEADER );
|
PXI_NotifyID( FIRM_PXI_ID_AUTH_HEADER );
|
||||||
PXI_SendDataByFifo( PXI_FIFO_TAG_DATA, sd.aes_key_seed, AES_BLOCK_SIZE );
|
PXI_SendDataByFifo( PXI_FIFO_TAG_DATA, sd.aes_key_seed, AES_BLOCK_SIZE );
|
||||||
// DS互換ヘッダコピー
|
// DS互換ヘッダコピー
|
||||||
|
|||||||
@ -54,14 +54,29 @@ void OS_BootWithRomHeaderFromFIRM( ROM_Header* rom_header )
|
|||||||
/* ITCM‘SƒNƒŠƒA */
|
/* ITCM‘SƒNƒŠƒA */
|
||||||
clr_list[i++] = (u32)HW_ITCM;
|
clr_list[i++] = (u32)HW_ITCM;
|
||||||
clr_list[i++] = (u32)HW_ITCM_SIZE;
|
clr_list[i++] = (u32)HW_ITCM_SIZE;
|
||||||
#else
|
/* FS Parameters領域のクリア (暫定) */
|
||||||
/* CODEとSTACKの隙間をクリア */
|
// clr_list[i++] = (u32)HW_TWL_FS_MOUNT_INFO_BUF; // 0x02ffdc00 - 0x02ffddff
|
||||||
|
// clr_list[i++] = (u32)HW_TWL_ROM_HEADER_BUF - (u32)HW_TWL_FS_MOUNT_INFO_BUF;
|
||||||
|
/* PSEG1/RED Reserved領域のクリア (暫定) */
|
||||||
|
clr_list[i++] = (u32)HW_MAIN_MEM_SHARED; // 0x02fff000 - 0x02fffa7f
|
||||||
|
clr_list[i++] = (u32)HW_PSEG1_RESERVED_1_END - (u32)HW_MAIN_MEM_SHARED;
|
||||||
|
/* System Shared領域のクリア (暫定) */
|
||||||
|
clr_list[i++] = (u32)HW_BOOT_CHECK_INFO_BUF; // 0x02fffc00 - 0x02fffc1f
|
||||||
|
clr_list[i++] = (u32)HW_BOOT_CHECK_INFO_BUF_END - (u32)HW_BOOT_CHECK_INFO_BUF;
|
||||||
|
clr_list[i++] = (u32)HW_BOOT_SHAKEHAND_9; // 0x02fffc24 - 0x02fffd7f
|
||||||
|
clr_list[i++] = (u32)HW_NVRAM_USER_INFO_END - (u32)HW_BOOT_SHAKEHAND_9;
|
||||||
|
clr_list[i++] = (u32)HW_ARENA_INFO_BUF; // 0x02fffda0 - 0x02fffdff
|
||||||
|
clr_list[i++] = (u32)HW_ROM_HEADER_BUF - (u32)HW_ARENA_INFO_BUF;
|
||||||
|
clr_list[i++] = (u32)HW_PXI_SIGNAL_PARAM_ARM9; // 0x02ffff80 - 0x02fffffd
|
||||||
|
clr_list[i++] = (u32)HW_CMD_AREA - (u32)HW_PXI_SIGNAL_PARAM_ARM9;
|
||||||
|
#else // SDK_ARM7
|
||||||
|
/* REBOOT_ExecuteのCODEとSTACKの隙間をクリア */
|
||||||
if ((u32)stack_top > (u32)OS_BOOT_CODE_BUF - OS_BOOT_CODE_SIZE - OS_BOOT_STACK_SIZE_MIN - sizeof(clr_list))
|
if ((u32)stack_top > (u32)OS_BOOT_CODE_BUF - OS_BOOT_CODE_SIZE - OS_BOOT_STACK_SIZE_MIN - sizeof(clr_list))
|
||||||
{
|
{
|
||||||
clr_list[i++] = (u32)OS_BOOT_CODE_BUF + (u32)OS_BOOT_CODE_SIZE;
|
clr_list[i++] = (u32)OS_BOOT_CODE_BUF + OS_BOOT_CODE_SIZE;
|
||||||
clr_list[i++] = (u32)stack_top - (u32)OS_BOOT_CODE_BUF - OS_BOOT_CODE_SIZE - OS_BOOT_STACK_SIZE_MIN - sizeof(clr_list);
|
clr_list[i++] = (u32)stack_top - OS_BOOT_STACK_SIZE_MIN - sizeof(clr_list) - (u32)OS_BOOT_CODE_BUF - OS_BOOT_CODE_SIZE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif // SDK_ARM7
|
||||||
clr_list[i++] = NULL;
|
clr_list[i++] = NULL;
|
||||||
REBOOT_Execute(entry, wram_reg, clr_list, code_buf, stack_top, scfg, jtag);
|
REBOOT_Execute(entry, wram_reg, clr_list, code_buf, stack_top, scfg, jtag);
|
||||||
OS_Terminate();
|
OS_Terminate();
|
||||||
|
|||||||
@ -136,19 +136,19 @@ static BOOL Fatfs4sdmcInit(void)
|
|||||||
switch ( PAD_Read() & PAD_KEYPORT_MASK )
|
switch ( PAD_Read() & PAD_KEYPORT_MASK )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
result = FATFS_OpenSpecifiedSrl( MENU_FILE );
|
result = FATFS_OpenSpecifiedSrl( MENU_FILE ) && FATFS_SaveSrlFilename( BOOT_DEVICE, MENU_FILE );
|
||||||
break;
|
break;
|
||||||
case PAD_BUTTON_A:
|
case PAD_BUTTON_A:
|
||||||
result = FATFS_OpenSpecifiedSrl( MENU_FILE_A );
|
result = FATFS_OpenSpecifiedSrl( MENU_FILE_A ) && FATFS_SaveSrlFilename( BOOT_DEVICE, MENU_FILE_A );
|
||||||
break;
|
break;
|
||||||
case PAD_BUTTON_B:
|
case PAD_BUTTON_B:
|
||||||
result = FATFS_OpenSpecifiedSrl( MENU_FILE_B );
|
result = FATFS_OpenSpecifiedSrl( MENU_FILE_B ) && FATFS_SaveSrlFilename( BOOT_DEVICE, MENU_FILE_B );
|
||||||
break;
|
break;
|
||||||
case PAD_BUTTON_L:
|
case PAD_BUTTON_L:
|
||||||
result = FATFS_OpenSpecifiedSrl( MENU_FILE_L );
|
result = FATFS_OpenSpecifiedSrl( MENU_FILE_L ) && FATFS_SaveSrlFilename( BOOT_DEVICE, MENU_FILE_L );
|
||||||
break;
|
break;
|
||||||
case PAD_BUTTON_R:
|
case PAD_BUTTON_R:
|
||||||
result = FATFS_OpenSpecifiedSrl( MENU_FILE_R );
|
result = FATFS_OpenSpecifiedSrl( MENU_FILE_R ) && FATFS_SaveSrlFilename( BOOT_DEVICE, MENU_FILE_R );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
OS_SetDebugLED( (u8)(PAD_Read() & PAD_KEYPORT_MASK) );
|
OS_SetDebugLED( (u8)(PAD_Read() & PAD_KEYPORT_MASK) );
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
#define FIRM_FATFS_FATFS_LOADER_H_
|
#define FIRM_FATFS_FATFS_LOADER_H_
|
||||||
|
|
||||||
#include <twl/types.h>
|
#include <twl/types.h>
|
||||||
|
#include <twl/fatfs.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -46,6 +47,20 @@ BOOL FATFS_OpenRecentMenu( int driveno );
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
BOOL FATFS_OpenSpecifiedSrl( const char* menufile );
|
BOOL FATFS_OpenSpecifiedSrl( const char* menufile );
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: FATFS_SaveSrlFilename
|
||||||
|
|
||||||
|
Description: store filename to HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||||
|
|
||||||
|
ファイル名をHW_TWL_FS_BOOT_SRL_PATH_BUFに書き込みます。
|
||||||
|
|
||||||
|
Arguments: media media type
|
||||||
|
filename target filename
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
BOOL FATFS_SaveSrlFilename( FATFSMediaType media, const char* filename );
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: FATFS_GetSrlDescriptor
|
Name: FATFS_GetSrlDescriptor
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user