いらないコードを削除

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2880 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2009-07-21 11:32:54 +00:00
parent ddc559677d
commit 5d7fe7c5f9
6 changed files with 0 additions and 550 deletions

View File

@ -210,19 +210,6 @@ static void KamiThread(void *arg)
} }
break; break;
case KAMI_CLEAR_NAND_ERRORLOG:
{
if (sdmcFormatNandLog(TRUE))
{
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS);
}
else
{
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE);
}
}
break;
default: default:
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND);
} }

View File

@ -58,17 +58,7 @@ typedef void (*KAMICallback)(KAMIResult result, void *arg);
void KamiPxiInit( void ); void KamiPxiInit( void );
KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback);
KAMIResult ExeFormat(FormatMode format_mode);
KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read); KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read);
KAMIResult kamiMcuWriteFirm(void* buffer );
KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read);
KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read);
KAMIResult kamiCDC_GoDsMode( void );
KAMIResult kamiClearNandErrorLog( void );
KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg );
KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes );
KAMIResult kamiGetNandCID( void* buffer );
// (重要) // (重要)
// ARM7が読み書きするためリード前はInvalidate、ライト前はフラッシュしてください。 // ARM7が読み書きするためリード前はInvalidate、ライト前はフラッシュしてください。
@ -81,22 +71,6 @@ static KAMIResult kamiNandWrite(u32 block, void* buffer, u32 count)
{ {
return kamiNandIo(block, buffer, count, FALSE); return kamiNandIo(block, buffer, count, FALSE);
} }
static KAMIResult kamiMcuRead(u8 reg_no, void* buffer)
{
return kamiMcuIo((u32)reg_no, buffer, 0, TRUE);
}
static KAMIResult kamiMcuWrite(u8 reg_no, u8 value)
{
return kamiMcuIo((u32)reg_no, NULL, (u32)value, FALSE);
}
static KAMIResult kamiARM7Read(u32 addr, void* buffer)
{
return kamiARM7Io(addr, buffer, 0, TRUE);
}
static KAMIResult kamiARM7Write(u32 addr, u8 value)
{
return kamiARM7Io(addr, NULL, value, FALSE);
}
/*===========================================================================*/ /*===========================================================================*/

View File

@ -136,11 +136,6 @@ Property
# #
CodecMode $(MAKEROM_CODEC_MODE) CodecMode $(MAKEROM_CODEC_MODE)
#
# SCFG: scfg lock [TRUE/FALSE]
#
LockSCFG FALSE
# #
# DisableDebug 最終ROMでは、実行時にデバッグできないようにTRUEにする必要があります。 # DisableDebug 最終ROMでは、実行時にデバッグできないようにTRUEにする必要があります。
# #
@ -158,11 +153,6 @@ AppendProperty
# don't have to edit # don't have to edit
Publisher Nintendo Publisher Nintendo
#
# Application type : [USER/SYSTEM]
# don't have to edit
#AppType System
# #
# launch title on the launcher : [TRUE/FALSE] # launch title on the launcher : [TRUE/FALSE]
# don't have to edit # don't have to edit
@ -173,11 +163,6 @@ AppendProperty
# don't have to edit # don't have to edit
DataOnly FALSE DataOnly FALSE
#
# Secure title : [TRUE/FALSE]
# don't have to edit
#Secure TRUE
# #
# Boot allowed Media: [GameCard/NAND] # Boot allowed Media: [GameCard/NAND]
# #

View File

@ -84,79 +84,6 @@ void KamiPxiInit( void )
} }
///////////////////////////////////////////////////////////////////
//typedef void (*KAMICallback)(KAMIResult result, void *arg);
/*
void CDC_ReadCallback(KAMIResult result, void* arg);
void CDC_ReadCallback(KAMIResult result, void* arg)
{
}
*/
/*---------------------------------------------------------------------------*
Name:
Description:
Arguments: FormatMode
Returns:
*---------------------------------------------------------------------------*/
KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback)
{
OSIntrMode enabled;
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = callback;
kamiWork.arg = 0;
kamiWork.data = 0;
if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode) == FALSE)
{
return KAMI_RESULT_SEND_ERROR;
}
return KAMI_RESULT_SUCCESS;
}
KAMIResult ExeFormat(FormatMode format_mode)
{
OSIntrMode enabled;
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = NULL;
kamiWork.arg = 0;
kamiWork.data = 0;
if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode))
{
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: NANDアクセス関数 Name: NANDアクセス関数
@ -166,7 +93,6 @@ KAMIResult ExeFormat(FormatMode format_mode)
Returns: Returns:
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read) KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read)
{ {
OSIntrMode enabled; OSIntrMode enabled;
@ -206,353 +132,6 @@ KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read)
return KAMI_RESULT_SEND_ERROR; return KAMI_RESULT_SEND_ERROR;
} }
/*---------------------------------------------------------------------------*
Name: kamiMcuWriteFirm
Description: MCUファーム更新関数
Arguments: buffer : new mcu data buffer
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiMcuWriteFirm(void* buffer )
{
OSIntrMode enabled;
u8 data[4+2]; // 3の倍数
int i;
MI_CpuClear8( data, sizeof(data));
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = NULL;
kamiWork.arg = 0;
// データ作成
KAMI_PACK_U32(&data[0], &buffer);
if (KamiSendPxiCommand(KAMI_MCU_WRITE_FIRM, 5, (u8)0))
{
for (i = 0; i < 4; i+=3)
{
KamiSendPxiData(&data[i]);
}
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------*
Name: MCUアクセス関数
Description:
Arguments: None.
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read)
{
OSIntrMode enabled;
u8 data[12];
int i;
MI_CpuClear8( data, sizeof(data));
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = NULL;
kamiWork.arg = 0;
if (is_read)
{
kamiWork.data = (u8*)buffer;
}
else
{
kamiWork.data = 0;
}
// データ作成
KAMI_PACK_U32(&data[0], &reg_no);
KAMI_PACK_U32(&data[4], &value);
if (KamiSendPxiCommand(KAMI_MCU_IO, 13, (u8)is_read))
{
for (i = 0; i < 12; i+=3)
{
KamiSendPxiData(&data[i]);
}
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------*
Name: ARM7アクセス関数
Description:
Arguments: None.
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read)
{
OSIntrMode enabled;
u8 data[12];
int i;
MI_CpuClear8( data, sizeof(data));
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = NULL;
kamiWork.arg = 0;
if (is_read)
{
kamiWork.data = (u8*)buffer;
}
else
{
kamiWork.data = 0;
}
// データ作成
KAMI_PACK_U32(&data[0], &addr);
KAMI_PACK_U32(&data[4], &value);
if (KamiSendPxiCommand(KAMI_ARM7_IO, 13, (u8)is_read))
{
for (i = 0; i < 12; i+=3)
{
KamiSendPxiData(&data[i]);
}
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------*
Name: kamiCDC_GoDsMode
Description: CODECをDSモードへ遷移させる関数
Arguments: None.
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiCDC_GoDsMode( void )
{
OSIntrMode enabled;
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = NULL;
kamiWork.arg = 0;
kamiWork.data = 0;
if (KamiSendPxiCommand(KAMI_CDC_GO_DSMODE, 0, (u8)0))
{
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------*
Name: kamiClearNandErrorLog
Description: NVRAMのNANDエラー情報をクリアします
Arguments: None.
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiClearNandErrorLog( void )
{
OSIntrMode enabled;
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = NULL;
kamiWork.arg = 0;
kamiWork.data = 0;
if (KamiSendPxiCommand(KAMI_CLEAR_NAND_ERRORLOG, 0, (u8)0))
{
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------*
Name: kamiGetCameraModuleTypesAsync
Description:
Arguments: None.
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg )
{
OSIntrMode enabled;
if (pTypes == NULL)
{
return KAMI_RESULT_INVALID_PARAMETER;
}
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
kamiWork.callback = callback;
kamiWork.arg = arg;
kamiWork.data = (u8*)pTypes;
(void)OS_RestoreInterrupts(enabled);
if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0))
{
return KAMI_RESULT_SUCCESS;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------*
Name: kamiGetCameraModuleTypes
Description:
Arguments: None.
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes )
{
OSIntrMode enabled;
if (pTypes == NULL)
{
return KAMI_RESULT_INVALID_PARAMETER;
}
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
kamiWork.callback = NULL;
kamiWork.arg = 0;
kamiWork.data = (u8*)pTypes;
(void)OS_RestoreInterrupts(enabled);
if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0))
{
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------*
Name: kamiGetNandCID
Description: NANDのCIDを取得します
Arguments: buffer : 16
Returns:
*---------------------------------------------------------------------------*/
KAMIResult kamiGetNandCID(void* buffer )
{
OSIntrMode enabled;
u8 data[4+2]; // 3の倍数
MI_CpuClear8( data, sizeof(data));
// ロック
enabled = OS_DisableInterrupts();
if (kamiWork.lock)
{
(void)OS_RestoreInterrupts(enabled);
return KAMI_RESULT_BUSY;
}
kamiWork.lock = TRUE;
(void)OS_RestoreInterrupts(enabled);
kamiWork.callback = NULL;
kamiWork.arg = 0;
kamiWork.data = (u8*)buffer;
if (KamiSendPxiCommand(KAMI_GET_NAND_CID, 0, 0))
{
KamiWaitBusy();
return (KAMIResult)kamiWork.result;
}
return KAMI_RESULT_SEND_ERROR;
}
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
PXI関連 PXI関連

View File

@ -30,9 +30,6 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
// NANDファーム書き込みの際にNVRAMの未割り当て領域予約領域をクリアする場合は定義します開発用
//#define CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL
#define ROUND_UP(value, alignment) \ #define ROUND_UP(value, alignment) \
(((u32)(value) + (alignment-1)) & ~(alignment-1)) (((u32)(value) + (alignment-1)) & ~(alignment-1))
@ -175,7 +172,6 @@ BOOL GetNandFirmBinPath(void)
if (!STD_CompareString( pExtension, ".nand") || !STD_CompareString( pExtension, ".NAND")) if (!STD_CompareString( pExtension, ".nand") || !STD_CompareString( pExtension, ".NAND"))
{ {
STD_CopyString( sFilePath[sFileNum], info->longname ); STD_CopyString( sFilePath[sFileNum], info->longname );
//kamiFontPrintfConsole(CONSOLE_ORANGE, "%d:%s\n", sFileNum, info->longname);
// 最大16個で終了 // 最大16個で終了
if (++sFileNum >= FILE_NUM_MAX) if (++sFileNum >= FILE_NUM_MAX)
@ -217,9 +213,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
u16 crc_w1, crc_w2; u16 crc_w1, crc_w2;
u16 crc_r1, crc_r2; u16 crc_r1, crc_r2;
u16 crc_norfirm_reserved_area_w, crc_norfirm_reserved_area_r; u16 crc_norfirm_reserved_area_w, crc_norfirm_reserved_area_r;
#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL
u32 write_offset;
#endif // CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL
// .nandファイルオープン // .nandファイルオープン
FS_InitFile(&file); FS_InitFile(&file);
@ -234,7 +227,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
file_size = FS_GetFileLength(&file) ; file_size = FS_GetFileLength(&file) ;
if (file_size > (800*1024)) if (file_size > (800*1024))
{ {
//kamiFontPrintfConsoleEx(1, "too big file size!\n");
FS_CloseFile(&file); FS_CloseFile(&file);
return FALSE; return FALSE;
} }
@ -247,7 +239,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
pTempBuf = allocFunc( alloc_size ); pTempBuf = allocFunc( alloc_size );
if (pTempBuf == NULL) if (pTempBuf == NULL)
{ {
//kamiFontPrintfConsoleEx(1, "Fail Alloc()!\n");
FS_CloseFile(&file); FS_CloseFile(&file);
return FALSE; return FALSE;
} }
@ -260,7 +251,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
DC_FlushRange(pTempBuf, file_size); DC_FlushRange(pTempBuf, file_size);
if (!read_is_ok) if (!read_is_ok)
{ {
//kamiFontPrintfConsoleEx(1, "Fail FS_ReadFile!\n");
FS_CloseFile(&file); FS_CloseFile(&file);
freeFunc(pTempBuf); freeFunc(pTempBuf);
return FALSE; return FALSE;
@ -276,7 +266,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
// まずNORHeaderDS領域を書き込む40byte? // まずNORHeaderDS領域を書き込む40byte?
if (NVRAMi_Write(0, sizeof(NORHeaderDS), (void*)pTempBuf) != NVRAM_RESULT_SUCCESS) if (NVRAMi_Write(0, sizeof(NORHeaderDS), (void*)pTempBuf) != NVRAM_RESULT_SUCCESS)
{ {
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
result = FALSE; result = FALSE;
} }
@ -288,7 +277,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
if (NVRAMi_Read(0, sizeof(NORHeaderDS), pTempBuf) != NVRAM_RESULT_SUCCESS) if (NVRAMi_Read(0, sizeof(NORHeaderDS), pTempBuf) != NVRAM_RESULT_SUCCESS)
{ {
OS_PutString("Fail NVRAMi_Read()!\n"); OS_PutString("Fail NVRAMi_Read()!\n");
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()!\n");
} }
DC_FlushRange(pTempBuf, sizeof(NORHeaderDS)); DC_FlushRange(pTempBuf, sizeof(NORHeaderDS));
@ -299,7 +287,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
if ( crc_w1 != crc_r1 ) if ( crc_w1 != crc_r1 )
{ {
freeFunc(pTempBuf); freeFunc(pTempBuf);
//kamiFontPrintfConsoleEx(1, "Fail! CRC check %x!=%x\n", crc_w1, crc_r1);
return FALSE; return FALSE;
} }
@ -313,7 +300,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
if (NVRAMi_Write(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) if (NVRAMi_Write(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
{ {
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
result = FALSE; result = FALSE;
} }
@ -325,7 +311,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
if (NVRAMi_Read(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) if (NVRAMi_Read(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
{ {
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n");
result = FALSE; result = FALSE;
} }
@ -336,49 +321,21 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
// NORファームリザーブ領域のCRC比較 // NORファームリザーブ領域のCRC比較
if ( crc_norfirm_reserved_area_w != crc_norfirm_reserved_area_r ) if ( crc_norfirm_reserved_area_w != crc_norfirm_reserved_area_r )
{ {
//kamiFontPrintfConsoleEx(1, "Fail! Norfirm Reserved Area CRC check %x!=%x\n", crc_norfirm_reserved_area_w, crc_norfirm_reserved_area_r);
result = FALSE; result = FALSE;
} }
#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL
DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
// 未割り当て領域+予約領域を0クリアします(開発用)
if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
{
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n");
result = FALSE;
}
sReservedAreaEndAddress = (u32)(*(u16 *)sNvramPageSizeBuffer << NVRAM_CONFIG_DATA_OFFSET_SHIFT) - 0xA00;// TWL WiFi設定 + NTR WiFi設定 を差し引く
//OS_Printf("end = %x\n", sReservedAreaEndAddress);
MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE );
DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
for (write_offset=NVRAM_NON_ASIGNED_AREA_ADDRESS; write_offset < sReservedAreaEndAddress; write_offset += NVRAM_PAGE_SIZE)
{
if (NVRAMi_Write(write_offset, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
{
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
result = FALSE;
}
}
//OS_Printf("write_offset = %x\n", write_offset);
#else
// 未割り当て領域先頭256byte予約領域をクリアします // 未割り当て領域先頭256byte予約領域をクリアします
MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE ); MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE );
DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
if (NVRAMi_Write(NVRAM_NON_ASIGNED_AREA_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) if (NVRAMi_Write(NVRAM_NON_ASIGNED_AREA_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
{ {
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
result = FALSE; result = FALSE;
} }
DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
{ {
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n");
result = FALSE; result = FALSE;
} }
sReservedAreaEndAddress = (u32)(*(u16 *)sNvramPageSizeBuffer << NVRAM_CONFIG_DATA_OFFSET_SHIFT) - 0xA00;// TWL WiFi設定 + NTR WiFi設定 を差し引く sReservedAreaEndAddress = (u32)(*(u16 *)sNvramPageSizeBuffer << NVRAM_CONFIG_DATA_OFFSET_SHIFT) - 0xA00;// TWL WiFi設定 + NTR WiFi設定 を差し引く
@ -388,27 +345,12 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
if (NVRAMi_Write(sReservedAreaEndAddress - 0x100, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) if (NVRAMi_Write(sReservedAreaEndAddress - 0x100, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
{ {
//kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
result = FALSE; result = FALSE;
} }
#endif
// NANDログ情報のクリア
if (kamiClearNandErrorLog() != KAMI_RESULT_SUCCESS)
{
//kamiFontPrintfConsoleEx(1, "Fail kamiClearNandErrorLog()\n");
result = FALSE;
}
// nandfirmバージョンの消去デバッグ用
kamiEraseNandfirmVersion(nandfirm_size);
// kamiFontPrintfConsoleEx(0, "NAND Firm Import Start!\n");
// NAND書き込み // NAND書き込み
write_block = nandfirm_size/NAND_BLOCK_BYTE + (nandfirm_size % NAND_BLOCK_BYTE != 0); write_block = nandfirm_size/NAND_BLOCK_BYTE + (nandfirm_size % NAND_BLOCK_BYTE != 0);
kamiNandWrite( NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf+NAND_FIRM_START_OFFSET, write_block ); // ブロック単位、バイト単位、ブロック単位 kamiNandWrite( NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf+NAND_FIRM_START_OFFSET, write_block ); // ブロック単位、バイト単位、ブロック単位
// kamiFontLoadScreenData();
// CRCを計算するので念のためにクリアしてからリードする // CRCを計算するので念のためにクリアしてからリードする
MI_CpuClear8( pTempBuf, nandfirm_size ); MI_CpuClear8( pTempBuf, nandfirm_size );
@ -417,7 +359,6 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
// CRCチェックのためNandからリード // CRCチェックのためNandからリード
if (kamiNandRead(NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf, write_block ) == KAMI_RESULT_SEND_ERROR) if (kamiNandRead(NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf, write_block ) == KAMI_RESULT_SEND_ERROR)
{ {
//kamiFontPrintfConsoleEx(1, "kamiNandRead ... %s!\n", "ERROR");
} }
DC_FlushRange(pTempBuf, nandfirm_size); DC_FlushRange(pTempBuf, nandfirm_size);
@ -427,12 +368,10 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
// NAND部分についてのCRCチェック // NAND部分についてのCRCチェック
if (crc_w2 == crc_r2) if (crc_w2 == crc_r2)
{ {
// kamiFontPrintfConsoleEx(0, "Success! CRC check %x==%x\n", crc_w2, crc_r2);
} }
else else
{ {
result = FALSE; result = FALSE;
//kamiFontPrintfConsoleEx(1, "Fail! CRC check %x!=%x\n", crc_w2, crc_r2);
} }
// メモリ解放 // メモリ解放

View File

@ -102,9 +102,6 @@ TwlMain()
// initialize file-system // initialize file-system
FS_Init(FS_DMA_NOT_USE); FS_Init(FS_DMA_NOT_USE);
// SDカードの挿抜イベント監視コールバック設定
// FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
// FS_Initの後の方が良い模様 // FS_Initの後の方が良い模様
InitAllocation(); InitAllocation();
@ -128,17 +125,6 @@ TwlMain()
// RED_LAUNCHER_VERが0でフォーマットに失敗するので強制的に書き換える // RED_LAUNCHER_VERが0でフォーマットに失敗するので強制的に書き換える
MI_StoreLE8((void*)HW_TWL_RED_LAUNCHER_VER, 1); MI_StoreLE8((void*)HW_TWL_RED_LAUNCHER_VER, 1);
#endif #endif
#ifdef AUTO_FORMAT_MODE
// 検査工程ではNANDが初期化されていないがその状態でFATにアクセスすると
// 問題があるため強制的にフォーマットを行う 2008/06/18
// ExeFormat(FORMAT_MODE_QUICK);
//
// Secure情報を読み込む前にフォーマットしてしまうとSecure情報が消えてしまう。
// そうするとシリアルNoが書き換わってしまうのでこの処理はなくす。
// 検査工程と異なりNandInitializerが実行される段階ではフォーマット済みなはず。
// 仮に未フォーマットであったとしてもBadFormat扱いとなる。2009/03/05
#endif
#ifndef TWL_CAPTURE_VERSION #ifndef TWL_CAPTURE_VERSION
ReadTWLSettings(); ReadTWLSettings();