mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NVRAM関連のアクセスをSDKのライブラリを使用するように変更。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1673 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
a16c96d8cf
commit
82ee8c8c55
@ -30,7 +30,6 @@ SRCS = crt0.SCFG_NOLOCK.c \
|
|||||||
main.c \
|
main.c \
|
||||||
kami_pxi.c \
|
kami_pxi.c \
|
||||||
formatter.c \
|
formatter.c \
|
||||||
nvram_misc.c \
|
|
||||||
mcu_firm.c
|
mcu_firm.c
|
||||||
|
|
||||||
TARGET_NAME = armadillo
|
TARGET_NAME = armadillo
|
||||||
|
|||||||
@ -41,7 +41,6 @@ Ltdautoload SCRWRAM
|
|||||||
Object $(OBJDIR)/main.o
|
Object $(OBJDIR)/main.o
|
||||||
Object $(OBJDIR)/kami_pxi.o
|
Object $(OBJDIR)/kami_pxi.o
|
||||||
Object $(OBJDIR)/formatter.o
|
Object $(OBJDIR)/formatter.o
|
||||||
Object $(OBJDIR)/nvram_misc.o
|
|
||||||
Object $(OBJDIR)/mcu_firm.o
|
Object $(OBJDIR)/mcu_firm.o
|
||||||
|
|
||||||
Library libsea_sp$(LIBSUFFIX).a
|
Library libsea_sp$(LIBSUFFIX).a
|
||||||
|
|||||||
@ -1,43 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Project: TwlSDK - NandInitializer
|
|
||||||
File: nvram.h
|
|
||||||
|
|
||||||
Copyright 2008 Nintendo. All rights reserved.
|
|
||||||
|
|
||||||
These coded instructions, statements, and computer programs contain
|
|
||||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
|
||||||
Company Ltd., and are protected by Federal copyright law. They may
|
|
||||||
not be disclosed to third parties or copied or duplicated in any form,
|
|
||||||
in whole or in part, without the prior written consent of Nintendo.
|
|
||||||
|
|
||||||
$Date:: $
|
|
||||||
$Rev$
|
|
||||||
$Author$
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifndef FIRM_NVRAM_H_
|
|
||||||
#define FIRM_NVRAM_H_
|
|
||||||
|
|
||||||
#include <twl/types.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SDK_ARM9
|
|
||||||
#else // SDK_ARM7
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
ŠÖ<EFBFBD>”’è‹`
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
void NVRAMi_Read(u32 address, void *buf, u32 size);
|
|
||||||
void NVRAMi_Write(u32 address, void *buf, u32 size);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
} /* extern "C" */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* FIRM_NVRAM_H_ */
|
|
||||||
#endif
|
|
||||||
@ -21,7 +21,6 @@
|
|||||||
#include "fifo.h"
|
#include "fifo.h"
|
||||||
#include "twl/cdc.h"
|
#include "twl/cdc.h"
|
||||||
#include "formatter.h"
|
#include "formatter.h"
|
||||||
#include "nvram.h"
|
|
||||||
#include "mcu_firm.h"
|
#include "mcu_firm.h"
|
||||||
#include <twl/ltdmain_begin.h>
|
#include <twl/ltdmain_begin.h>
|
||||||
#include <twl/mcu.h>
|
#include <twl/mcu.h>
|
||||||
@ -129,7 +128,6 @@ static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
{
|
{
|
||||||
case KAMI_EXE_FORMAT:
|
case KAMI_EXE_FORMAT:
|
||||||
case KAMI_NAND_IO:
|
case KAMI_NAND_IO:
|
||||||
case KAMI_NVRAM_IO:
|
|
||||||
case KAMI_MCU_WRITE_FIRM:
|
case KAMI_MCU_WRITE_FIRM:
|
||||||
case KAMI_MCU_IO:
|
case KAMI_MCU_IO:
|
||||||
case KAMI_ARM7_IO:
|
case KAMI_ARM7_IO:
|
||||||
@ -227,30 +225,6 @@ static void KamiThread(void *arg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KAMI_NVRAM_IO:
|
|
||||||
{
|
|
||||||
BOOL is_read;
|
|
||||||
u32 adress;
|
|
||||||
void* buffer;
|
|
||||||
u32 size;
|
|
||||||
|
|
||||||
is_read = (BOOL)kamiWork.data[0];
|
|
||||||
KAMI_UNPACK_U32(&adress, &kamiWork.data[1]);
|
|
||||||
KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[5]);
|
|
||||||
KAMI_UNPACK_U32(&size, &kamiWork.data[9]);
|
|
||||||
|
|
||||||
if (is_read)
|
|
||||||
{
|
|
||||||
NVRAMi_Read( adress, buffer, size );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
NVRAMi_Write( adress, buffer, size );
|
|
||||||
}
|
|
||||||
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KAMI_MCU_WRITE_FIRM:
|
case KAMI_MCU_WRITE_FIRM:
|
||||||
{
|
{
|
||||||
void* buffer;
|
void* buffer;
|
||||||
|
|||||||
@ -1,181 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Project: TwlSDK - NandInitializer
|
|
||||||
File: nvram_misc.c
|
|
||||||
|
|
||||||
Copyright 2008 Nintendo. All rights reserved.
|
|
||||||
|
|
||||||
These coded instructions, statements, and computer programs contain
|
|
||||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
|
||||||
Company Ltd., and are protected by Federal copyright law. They may
|
|
||||||
not be disclosed to third parties or copied or duplicated in any form,
|
|
||||||
in whole or in part, without the prior written consent of Nintendo.
|
|
||||||
|
|
||||||
$Date:: $
|
|
||||||
$Rev$
|
|
||||||
$Author$
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "nvram.h"
|
|
||||||
#include "spi_sp.h"
|
|
||||||
#include "nvram_sp.h"
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: NvramCheckReadyToRead
|
|
||||||
|
|
||||||
Description: NVRAMを読み出し可能な状態かどうか確認する。
|
|
||||||
|
|
||||||
Arguments: None.
|
|
||||||
|
|
||||||
Returns: BOOL - 読み出し可能な状態の場合にTRUEを返す。
|
|
||||||
FALSEの場合は読み出し禁止の状態。
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static BOOL NvramCheckReadyToRead(void)
|
|
||||||
{
|
|
||||||
u16 tempStatus;
|
|
||||||
|
|
||||||
// ステータスレジスタ読み出し
|
|
||||||
NVRAM_ReadStatusRegister((u8 *)(&tempStatus));
|
|
||||||
// 書き込みもしくは消去操作中かを確認
|
|
||||||
if (tempStatus & NVRAM_STATUS_REGISTER_WIP)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: NvramCheckReadyToWrite
|
|
||||||
|
|
||||||
Description: NVRAMを書き込み可能な状態かどうか確認する。
|
|
||||||
|
|
||||||
Arguments: None.
|
|
||||||
|
|
||||||
Returns: BOOL - 書き込み可能な状態の場合にTRUEを返す。
|
|
||||||
FALSEの場合は書き込み禁止の状態。
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static BOOL NvramCheckReadyToWrite(void)
|
|
||||||
{
|
|
||||||
u16 tempStatus;
|
|
||||||
|
|
||||||
// ステータスレジスタ読み出し
|
|
||||||
NVRAM_ReadStatusRegister((u8 *)(&tempStatus));
|
|
||||||
// 書き込みもしくは消去操作中かを確認
|
|
||||||
if (tempStatus & NVRAM_STATUS_REGISTER_WIP)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
// 書き込み許可されているかを確認
|
|
||||||
if (!(tempStatus & NVRAM_STATUS_REGISTER_WEL))
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: NVRAM_WaitOperation
|
|
||||||
|
|
||||||
Description:
|
|
||||||
|
|
||||||
Arguments: None.
|
|
||||||
|
|
||||||
Returns: None.
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static void NVRAM_WaitOperation(void)
|
|
||||||
{
|
|
||||||
while( NvramCheckReadyToRead() == FALSE ) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: NVRAM_WaitWriteEnable
|
|
||||||
|
|
||||||
Description:
|
|
||||||
|
|
||||||
Arguments: None.
|
|
||||||
|
|
||||||
Returns: None.
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static void NVRAM_WaitWriteEnable(void)
|
|
||||||
{
|
|
||||||
while( NvramCheckReadyToWrite() == FALSE ) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: NVRAMi_Read
|
|
||||||
|
|
||||||
Description:
|
|
||||||
|
|
||||||
Arguments: None.
|
|
||||||
|
|
||||||
Returns: None.
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
void NVRAMi_Read(u32 address, void *buf, u32 size)
|
|
||||||
{
|
|
||||||
NVRAM_WaitOperation();
|
|
||||||
NVRAM_ReadDataBytes(address, size, buf);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: NVRAMi_Write
|
|
||||||
|
|
||||||
Description:
|
|
||||||
|
|
||||||
Arguments: None.
|
|
||||||
|
|
||||||
Returns: None.
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
void NVRAMi_Write(u32 address, void *buf, u32 size)
|
|
||||||
{
|
|
||||||
u32 i;
|
|
||||||
u32 page_start;
|
|
||||||
u32 page_end;
|
|
||||||
u32 offset_start;
|
|
||||||
u32 offset_end;
|
|
||||||
u8 *src_ptr;
|
|
||||||
u8 temp_buffer[SPI_NVRAM_PAGE_SIZE];
|
|
||||||
|
|
||||||
src_ptr = (u8 *)buf;
|
|
||||||
page_start = (address / SPI_NVRAM_PAGE_SIZE) * SPI_NVRAM_PAGE_SIZE;
|
|
||||||
page_end = ((address+size-1) / SPI_NVRAM_PAGE_SIZE ) * SPI_NVRAM_PAGE_SIZE;
|
|
||||||
offset_start = address % SPI_NVRAM_PAGE_SIZE;
|
|
||||||
offset_end = (address+size-1) % SPI_NVRAM_PAGE_SIZE;
|
|
||||||
|
|
||||||
while( page_start <= page_end ) {
|
|
||||||
if( offset_start != 0 ) {
|
|
||||||
NVRAMi_Read(page_start, temp_buffer, offset_start);
|
|
||||||
}
|
|
||||||
if( page_start != page_end ) {
|
|
||||||
for( i = offset_start ; i < SPI_NVRAM_PAGE_SIZE ; i++ ) {
|
|
||||||
temp_buffer[i] = *src_ptr++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for( i = offset_start ; i <= offset_end ; i++ ) {
|
|
||||||
temp_buffer[i] = *src_ptr++;
|
|
||||||
}
|
|
||||||
if( offset_end != (SPI_NVRAM_PAGE_SIZE-1) ) {
|
|
||||||
NVRAMi_Read(page_start+offset_end+1, &(temp_buffer[offset_end+1]), SPI_NVRAM_PAGE_SIZE - (offset_end+1) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
NVRAM_WriteEnable();
|
|
||||||
NVRAM_WaitWriteEnable();
|
|
||||||
|
|
||||||
NVRAM_PageErase((u32)page_start);
|
|
||||||
|
|
||||||
NVRAM_WaitOperation();
|
|
||||||
|
|
||||||
NVRAM_WriteEnable();
|
|
||||||
|
|
||||||
NVRAM_PageWrite((u32)page_start, (u16)SPI_NVRAM_PAGE_SIZE, temp_buffer);
|
|
||||||
NVRAM_WaitOperation();
|
|
||||||
|
|
||||||
page_start += SPI_NVRAM_PAGE_SIZE;
|
|
||||||
offset_start = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -61,7 +61,6 @@ void KamiPxiInit( void );
|
|||||||
KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback);
|
KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback);
|
||||||
KAMIResult ExeFormat(FormatMode format_mode);
|
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 kamiNvramIo(u32 address, void* buffer, u32 size, BOOL is_read);
|
|
||||||
KAMIResult kamiMcuWriteFirm(void* buffer );
|
KAMIResult kamiMcuWriteFirm(void* buffer );
|
||||||
KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read);
|
KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read);
|
||||||
KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read);
|
KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read);
|
||||||
@ -81,14 +80,6 @@ static KAMIResult kamiNandWrite(u32 block, void* buffer, u32 count)
|
|||||||
{
|
{
|
||||||
return kamiNandIo(block, buffer, count, FALSE);
|
return kamiNandIo(block, buffer, count, FALSE);
|
||||||
}
|
}
|
||||||
static KAMIResult kamiNvramRead(u32 adress, void* buffer, u32 size)
|
|
||||||
{
|
|
||||||
return kamiNvramIo(adress, buffer, size, TRUE);
|
|
||||||
}
|
|
||||||
static KAMIResult kamiNvramWrite(u32 adress, void* buffer, u32 size)
|
|
||||||
{
|
|
||||||
return kamiNvramIo(adress, buffer, size, FALSE);
|
|
||||||
}
|
|
||||||
static KAMIResult kamiMcuRead(u8 reg_no, void* buffer)
|
static KAMIResult kamiMcuRead(u8 reg_no, void* buffer)
|
||||||
{
|
{
|
||||||
return kamiMcuIo((u32)reg_no, buffer, 0, TRUE);
|
return kamiMcuIo((u32)reg_no, buffer, 0, TRUE);
|
||||||
|
|||||||
@ -204,53 +204,6 @@ KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read)
|
|||||||
return KAMI_RESULT_SEND_ERROR;
|
return KAMI_RESULT_SEND_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: Nvramアクセス関数
|
|
||||||
|
|
||||||
Description:
|
|
||||||
|
|
||||||
Arguments: None.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
KAMIResult kamiNvramIo(u32 address, void* buffer, u32 size, BOOL is_read)
|
|
||||||
{
|
|
||||||
OSIntrMode enabled;
|
|
||||||
u8 data[12];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
// ロック
|
|
||||||
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;
|
|
||||||
|
|
||||||
// データ作成
|
|
||||||
KAMI_PACK_U32(&data[0], &address);
|
|
||||||
KAMI_PACK_U32(&data[4], &buffer);
|
|
||||||
KAMI_PACK_U32(&data[8], &size);
|
|
||||||
|
|
||||||
if (KamiSendPxiCommand(KAMI_NVRAM_IO, 12, (u8)is_read))
|
|
||||||
{
|
|
||||||
for (i = 0; i < 12; i+=3)
|
|
||||||
{
|
|
||||||
KamiSendPxiData(&data[i]);
|
|
||||||
}
|
|
||||||
KamiWaitBusy();
|
|
||||||
return (KAMIResult)kamiWork.result;
|
|
||||||
}
|
|
||||||
return KAMI_RESULT_SEND_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: kamiMcuWriteFirm
|
Name: kamiMcuWriteFirm
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
#include <twl/fatfs.h>
|
#include <twl/fatfs.h>
|
||||||
#include <nitro/card.h>
|
#include <nitro/card.h>
|
||||||
#include <twl/nam.h>
|
#include <twl/nam.h>
|
||||||
|
#include <nitro/nvram.h>
|
||||||
#include "kami_font.h"
|
#include "kami_font.h"
|
||||||
#include "kami_pxi.h"
|
#include "kami_pxi.h"
|
||||||
|
|
||||||
@ -131,9 +132,9 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
crc_w2 = SVC_GetCRC16( 0xffff, pTempBuf+512, file_size-512 );
|
crc_w2 = SVC_GetCRC16( 0xffff, pTempBuf+512, file_size-512 );
|
||||||
|
|
||||||
// まずNORHeaderDS領域を書き込む(40byte?)
|
// まずNORHeaderDS領域を書き込む(40byte?)
|
||||||
if (kamiNvramWrite(0, (void*)pTempBuf, sizeof(NORHeaderDS)) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Write(0, sizeof(NORHeaderDS), (void*)pTempBuf) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramWrite()\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,9 +143,9 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
DC_FlushRange(pTempBuf, sizeof(NORHeaderDS));
|
DC_FlushRange(pTempBuf, sizeof(NORHeaderDS));
|
||||||
|
|
||||||
// CRCチェックのためNvramからリード
|
// CRCチェックのためNvramからリード
|
||||||
if (kamiNvramRead(0, pTempBuf, sizeof(NORHeaderDS) ) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Read(0, sizeof(NORHeaderDS), pTempBuf) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramRead()!\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()!\n");
|
||||||
}
|
}
|
||||||
DC_StoreRange(pTempBuf, sizeof(NORHeaderDS));
|
DC_StoreRange(pTempBuf, sizeof(NORHeaderDS));
|
||||||
|
|
||||||
@ -167,9 +168,9 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
// NORファームリザーブ領域の書き込みデータのCRCを計算
|
// NORファームリザーブ領域の書き込みデータのCRCを計算
|
||||||
crc_norfirm_reserved_area_w = SVC_GetCRC16( 0xffff, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
|
crc_norfirm_reserved_area_w = SVC_GetCRC16( 0xffff, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
|
||||||
|
|
||||||
if (kamiNvramWrite(NVRAM_NORFIRM_RESERVED_ADDRESS, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Write(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramWrite()\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,9 +180,9 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
// 読み込みはARM7が直接メモリに書き出すため
|
// 読み込みはARM7が直接メモリに書き出すため
|
||||||
DC_FlushRange(sNvramPageSizeBuffer, NVRAM_PAGE_SIZE);
|
DC_FlushRange(sNvramPageSizeBuffer, NVRAM_PAGE_SIZE);
|
||||||
|
|
||||||
if (kamiNvramRead(NVRAM_NORFIRM_RESERVED_ADDRESS, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Read(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramRead()\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,9 +200,9 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL
|
#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL
|
||||||
DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
|
DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
|
||||||
// 未割り当て領域+予約領域を0クリアします(開発用)
|
// 未割り当て領域+予約領域を0クリアします(開発用)
|
||||||
if (kamiNvramRead(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, &sNvramPageSizeBuffer, NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramRead()\n");
|
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設定 を差し引く
|
||||||
@ -212,9 +213,9 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
|
|
||||||
for (write_offset=NVRAM_NON_ASIGNED_AREA_ADDRESS; write_offset < sReservedAreaEndAddress; write_offset += NVRAM_PAGE_SIZE)
|
for (write_offset=NVRAM_NON_ASIGNED_AREA_ADDRESS; write_offset < sReservedAreaEndAddress; write_offset += NVRAM_PAGE_SIZE)
|
||||||
{
|
{
|
||||||
if (kamiNvramWrite(write_offset, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Write(write_offset, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramWrite()\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -225,16 +226,16 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
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 (kamiNvramWrite(NVRAM_NON_ASIGNED_AREA_ADDRESS, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Write(NVRAM_NON_ASIGNED_AREA_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramWrite()\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
|
DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE );
|
||||||
if (kamiNvramRead(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, &sNvramPageSizeBuffer, NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramRead()\n");
|
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設定 を差し引く
|
||||||
@ -242,9 +243,9 @@ BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFu
|
|||||||
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 (kamiNvramWrite(sReservedAreaEndAddress - 0x100, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Write(sReservedAreaEndAddress - 0x100, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail kamiNvramWrite()\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -21,6 +21,7 @@
|
|||||||
#include <nitro/card.h>
|
#include <nitro/card.h>
|
||||||
#include <twl/nam.h>
|
#include <twl/nam.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <nitro/nvram.h>
|
||||||
#include "kami_font.h"
|
#include "kami_font.h"
|
||||||
#include "kami_pxi.h"
|
#include "kami_pxi.h"
|
||||||
#include "process_topmenu.h"
|
#include "process_topmenu.h"
|
||||||
@ -350,9 +351,9 @@ static BOOL WriteNorfirm(char* file_name)
|
|||||||
crc_w2 = SVC_GetCRC16( 0xffff, pTempBuf+512, file_size-512 );
|
crc_w2 = SVC_GetCRC16( 0xffff, pTempBuf+512, file_size-512 );
|
||||||
|
|
||||||
// まずNORHeaderDS領域を書き込む(40byte?)
|
// まずNORHeaderDS領域を書き込む(40byte?)
|
||||||
if (kamiNvramWrite(0, (void*)pTempBuf, sizeof(NORHeaderDS)) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Write(0, sizeof(NORHeaderDS), (void*)pTempBuf ) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
kamiFontPrintfConsoleEx(1, "Fail SPI_NvramPageWrite()\n");
|
kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,9 +361,9 @@ static BOOL WriteNorfirm(char* file_name)
|
|||||||
DC_InvalidateRange(pTempBuf, sizeof(NORHeaderDS));
|
DC_InvalidateRange(pTempBuf, sizeof(NORHeaderDS));
|
||||||
|
|
||||||
// CRCチェックのためNvramからリード
|
// CRCチェックのためNvramからリード
|
||||||
if (kamiNvramRead(0, pTempBuf, sizeof(NORHeaderDS) ) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Read(0, sizeof(NORHeaderDS), pTempBuf) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
OS_Printf("kamiNvramRead ... ERROR!\n");
|
OS_Printf("NVRAMi_Read ... ERROR!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 書き込み後のCRCを計算
|
// 書き込み後のCRCを計算
|
||||||
@ -386,9 +387,9 @@ static BOOL WriteNorfirm(char* file_name)
|
|||||||
while ( nor_addr < file_size)
|
while ( nor_addr < file_size)
|
||||||
{
|
{
|
||||||
// 書きこみ
|
// 書きこみ
|
||||||
if (kamiNvramWrite((u32)nor_addr, (void*)(pTempBuf + nor_addr), NVRAM_PAGE_SIZE) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Write((u32)nor_addr, NVRAM_PAGE_SIZE, (void*)(pTempBuf + nor_addr)) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
OS_TPrintf("======= Fail SPI_NvramPageWrite() ======== \n");
|
OS_TPrintf("======= Fail NVRAMi_Write() ======== \n");
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -405,7 +406,7 @@ static BOOL WriteNorfirm(char* file_name)
|
|||||||
DC_InvalidateRange(pTempBuf, file_size);
|
DC_InvalidateRange(pTempBuf, file_size);
|
||||||
|
|
||||||
// CRCチェックのためNvramからリード
|
// CRCチェックのためNvramからリード
|
||||||
if (kamiNvramRead(0, pTempBuf, file_size ) == KAMI_RESULT_SEND_ERROR)
|
if (NVRAMi_Read(0, file_size, pTempBuf ) != NVRAM_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
OS_Printf("kamiNvramRead ... ERROR!\n");
|
OS_Printf("kamiNvramRead ... ERROR!\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,7 +63,6 @@ typedef enum KamiCommand
|
|||||||
KAMI_TEST_COMMAND,
|
KAMI_TEST_COMMAND,
|
||||||
KAMI_EXE_FORMAT,
|
KAMI_EXE_FORMAT,
|
||||||
KAMI_NAND_IO,
|
KAMI_NAND_IO,
|
||||||
KAMI_NVRAM_IO,
|
|
||||||
KAMI_MCU_IO,
|
KAMI_MCU_IO,
|
||||||
KAMI_MCU_WRITE_FIRM,
|
KAMI_MCU_WRITE_FIRM,
|
||||||
KAMI_ARM7_IO,
|
KAMI_ARM7_IO,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user