mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ARM7レジスタ読み書き用のPXIを追加。(デバッグ用)
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1304 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
41dd1f8a73
commit
aec0782367
@ -131,6 +131,7 @@ static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
case KAMI_NAND_IO:
|
case KAMI_NAND_IO:
|
||||||
case KAMI_NVRAM_IO:
|
case KAMI_NVRAM_IO:
|
||||||
case KAMI_MCU_IO:
|
case KAMI_MCU_IO:
|
||||||
|
case KAMI_ARM7_IO:
|
||||||
case KAMI_CDC_GO_DSMODE:
|
case KAMI_CDC_GO_DSMODE:
|
||||||
case KAMI_CLEAR_NAND_ERRORLOG:
|
case KAMI_CLEAR_NAND_ERRORLOG:
|
||||||
if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK))
|
if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK))
|
||||||
@ -272,6 +273,30 @@ static void KamiThread(void *arg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case KAMI_ARM7_IO:
|
||||||
|
{
|
||||||
|
BOOL is_read;
|
||||||
|
u32 addr;
|
||||||
|
u32 write;
|
||||||
|
u32 read;
|
||||||
|
|
||||||
|
is_read = (BOOL)kamiWork.data[0];
|
||||||
|
KAMI_UNPACK_U32(&addr, &kamiWork.data[1]);
|
||||||
|
KAMI_UNPACK_U32(&write, &kamiWork.data[5]);
|
||||||
|
|
||||||
|
if (is_read)
|
||||||
|
{
|
||||||
|
read = *(u32 *)addr;
|
||||||
|
KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u32), (u8*)&read );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*(u32 *)addr = write;
|
||||||
|
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case KAMI_CDC_GO_DSMODE:
|
case KAMI_CDC_GO_DSMODE:
|
||||||
{
|
{
|
||||||
CDC_GoDsMode();
|
CDC_GoDsMode();
|
||||||
|
|||||||
@ -62,6 +62,7 @@ KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback);
|
|||||||
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 kamiNvramIo(u32 address, void* buffer, u32 size, BOOL is_read);
|
||||||
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 kamiCDC_GoDsMode( void );
|
KAMIResult kamiCDC_GoDsMode( void );
|
||||||
KAMIResult kamiClearNandErrorLog( void );
|
KAMIResult kamiClearNandErrorLog( void );
|
||||||
|
|
||||||
@ -92,6 +93,14 @@ static KAMIResult kamiMcuWrite(u8 reg_no, u8 value)
|
|||||||
{
|
{
|
||||||
return kamiMcuIo((u32)reg_no, NULL, (u32)value, FALSE);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
|||||||
@ -273,6 +273,61 @@ KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read)
|
|||||||
return KAMI_RESULT_SEND_ERROR;
|
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;
|
||||||
|
|
||||||
|
// ロック
|
||||||
|
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, 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: kamiCDC_GoDsMode
|
Name: kamiCDC_GoDsMode
|
||||||
|
|
||||||
|
|||||||
@ -64,6 +64,7 @@ typedef enum KamiCommand
|
|||||||
KAMI_NAND_IO,
|
KAMI_NAND_IO,
|
||||||
KAMI_NVRAM_IO,
|
KAMI_NVRAM_IO,
|
||||||
KAMI_MCU_IO,
|
KAMI_MCU_IO,
|
||||||
|
KAMI_ARM7_IO,
|
||||||
KAMI_CDC_GO_DSMODE,
|
KAMI_CDC_GO_DSMODE,
|
||||||
KAMI_CLEAR_NAND_ERRORLOG
|
KAMI_CLEAR_NAND_ERRORLOG
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user