This commit is contained in:
2026-06-12 14:46:06 +09:00
parent 9cdd1823ec
commit fecece3f20
24 changed files with 194 additions and 75 deletions

View File

@@ -102,11 +102,30 @@
<SDLCheck>true</SDLCheck> <SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(ProjectDir)include;$(ProjectDir)external\FT4222\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Console</SubSystem> <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(ProjectDir)external\FT4222\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>$(CoreLibraryDependencies);%(AdditionalDependencies);LibFT4222-64.lib;ftd2xx.lib</AdditionalDependencies>
</Link> </Link>
<PostBuildEvent>
<Command>:: 1. DLL 파일 먼저 복사
copy /y "$(ProjectDir)external\FT4222\dll\*.dll" "$(OutDir)"
@echo off
:: 2. PowerShell을 이용해 시스템 언어와 무관하게 날짜_시간 추출 (YYYYMMDD_HHmm)
for /f "tokens=*" %%i in ('powershell -NoProfile -Command "Get-Date -Format 'yyyyMMdd_HHmm'"') do set BUILD_NAME=%%i
:: 3. 경로 설정 (반드시 큰따옴표로 감싸야 함)
set "TARGET_PATH=$(SolutionDir)PMIC_Cmd_Tool_Build_Debug_History\%BUILD_NAME%"
:: 4. 폴더 생성 및 복사
echo Creating backup at: "%TARGET_PATH%"
if not exist "%TARGET_PATH%" mkdir "%TARGET_PATH%"
xcopy /y /e "$(OutDir)*.*" "%TARGET_PATH%\"</Command>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
@@ -135,7 +154,7 @@ copy /y "$(ProjectDir)external\FT4222\dll\*.dll" "$(OutDir)"
for /f "tokens=*" %%i in ('powershell -NoProfile -Command "Get-Date -Format 'yyyyMMdd_HHmm'"') do set BUILD_NAME=%%i for /f "tokens=*" %%i in ('powershell -NoProfile -Command "Get-Date -Format 'yyyyMMdd_HHmm'"') do set BUILD_NAME=%%i
:: 3. 경로 설정 (반드시 큰따옴표로 감싸야 함) :: 3. 경로 설정 (반드시 큰따옴표로 감싸야 함)
set "TARGET_PATH=$(SolutionDir)PMIC_Cmd_Tool_Build_History\%BUILD_NAME%" set "TARGET_PATH=$(SolutionDir)PMIC_Cmd_Tool_Build_Release_History\%BUILD_NAME%"
:: 4. 폴더 생성 및 복사 :: 4. 폴더 생성 및 복사
echo Creating backup at: "%TARGET_PATH%" echo Creating backup at: "%TARGET_PATH%"
@@ -144,6 +163,8 @@ xcopy /y /e "$(OutDir)*.*" "%TARGET_PATH%\"</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="external\FT4222\include\ftd2xx.h" />
<ClInclude Include="external\FT4222\include\LibFT4222.h" />
<ClInclude Include="include\PMIC_Reg_Map.h" /> <ClInclude Include="include\PMIC_Reg_Map.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -18,6 +18,12 @@
<ClInclude Include="include\PMIC_Reg_Map.h"> <ClInclude Include="include\PMIC_Reg_Map.h">
<Filter>헤더 파일</Filter> <Filter>헤더 파일</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="external\FT4222\include\LibFT4222.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="external\FT4222\include\ftd2xx.h">
<Filter>헤더 파일</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="src\PMIC_Cmd_Tool.cpp"> <ClCompile Include="src\PMIC_Cmd_Tool.cpp">

View File

@@ -37,9 +37,11 @@ int parseCommand(const char* dir);
void PMIC_I2C_Write(FT_HANDLE ftHandle, uint8_t slaveAddr, uint8_t regAddr, uint8_t value); // Address에 1바이트 Write with CRC, 그리고 Address를 Read해서 Write한 값과 비교 void PMIC_I2C_Write(FT_HANDLE ftHandle, uint8_t slaveAddr, uint8_t regAddr, uint8_t value); // Address에 1바이트 Write with CRC, 그리고 Address를 Read해서 Write한 값과 비교
uint8_t PMIC_I2C_Read(FT_HANDLE ftHandle, uint8_t slaveAddr, uint8_t regAddr); // Address에서 1바이트 Read (CRC 계산 없음) uint8_t PMIC_I2C_Read(FT_HANDLE ftHandle, uint8_t slaveAddr, uint8_t regAddr); // Address에서 1바이트 Read (CRC 계산 없음)
void toBinaryString(uint8_t val, char* outBuf); // 8비트 데이터를 "0000_0000" 형식의 문자열로 변환 void toBinaryString(uint8_t val, char* outBuf); // 8비트 데이터를 "0000_0000" 형식의 문자열로 변환
bool Run_DebugMode(FT_HANDLE ftHandle); // Enter Debug Mode bool Run_DebugMode_On(FT_HANDLE ftHandle); // Enter Debug Mode On
bool Run_DebugMode_Off(FT_HANDLE ftHandle); // Enter Debug Mode Off
void Run_CheckFaults(FT_HANDLE ftHandle); // Check All Fault Registers void Run_CheckFaults(FT_HANDLE ftHandle); // Check All Fault Registers
void Run_ReadChipInfo(FT_HANDLE ftHandle); // Read Chip Information (OTP/Version) void Run_ReadChipInfo(FT_HANDLE ftHandle); // Read Chip Information (OTP/Version)
void Irq_Clear(FT_HANDLE ftHandle); // PMIC Irq Clear
void Handle_ManualCommand(FT_HANDLE ftHandle, char* line); // Manual Command void Handle_ManualCommand(FT_HANDLE ftHandle, char* line); // Manual Command
int main() int main()
@@ -52,9 +54,12 @@ int main()
while (1) { while (1) {
printf("\n========================================\n"); printf("\n========================================\n");
printf(" [MAIN MENU] Select a function\n"); printf(" [MAIN MENU] Select a function\n");
printf(" 1. Toggle PMIC Debug Mode (Current: %s)\n", debugState ? "ON" : "OFF"); printf(" 1. Toggle PMIC Debug Mode ON\n");
printf(" 2. Read All Fault Status (Specific 1)\n"); printf(" 2. Toggle PMIC Debug Mode OFF\n");
printf(" 3. Read Device Info & OTP (Specific 2)\n"); printf(" 3. Read All Fault Status\n");
printf(" 4. Read Device Info & OTP\n");
printf(" 5. PMIC Irq Clear\n");
printf(" W. Manual I2C Write (w [Addr] [Reg] [Val])\n"); printf(" W. Manual I2C Write (w [Addr] [Reg] [Val])\n");
printf(" R. Manual I2C Read (r [Addr] [Reg])\n"); printf(" R. Manual I2C Read (r [Addr] [Reg])\n");
printf(" E. Exit Program\n"); printf(" E. Exit Program\n");
@@ -82,9 +87,9 @@ int main()
switch (choice) { switch (choice) {
case 1: case 1:
{ {
if (Run_DebugMode(ftHandle)) { if (Run_DebugMode_On(ftHandle)) {
debugState = true; debugState = true;
printf("\n[SUCCESS] PMIC Debug Mode.\n"); printf("\n[SUCCESS] PMIC Debug Mode On\n");
} }
else { else {
debugState = false; debugState = false;
@@ -93,13 +98,29 @@ int main()
break; break;
} }
case 2: case 2:
{
if (Run_DebugMode_Off(ftHandle)) {
debugState = false;
printf("\n[SUCCESS] PMIC Debug Mode Off\n");
}
else {
debugState = true;
printf("\n[FAILURE] Communication error.\n");
}
break;
}
case 3:
Run_CheckFaults(ftHandle); Run_CheckFaults(ftHandle);
break; break;
case 3: case 4:
Run_ReadChipInfo(ftHandle); Run_ReadChipInfo(ftHandle);
break; break;
case 5:
Irq_Clear(ftHandle);
break;
default: default:
printf("\n[ERROR] Menu number %d does not exist.\n", choice); printf("\n[ERROR] Menu number %d does not exist.\n", choice);
break; break;
@@ -741,16 +762,12 @@ void toBinaryString(uint8_t val, char* outBuf)
outBuf[9] = '\0'; // 문자열 끝 지정 outBuf[9] = '\0'; // 문자열 끝 지정
} }
// Enter / Exit Debug Mode // Set Debug Mode On
bool Run_DebugMode(FT_HANDLE ftHandle) { bool Run_DebugMode_On(FT_HANDLE ftHandle) {
uint8_t readVal = 0; uint8_t readVal = 0;
int retryCount = 0; int retryCount = 0;
const int maxRetries = 100; // 과도한 반복 방지 (50회면 충분합니다) const int maxRetries = 300; // 과도한 반복 방지 (50회면 충분합니다)
#if 0
printf("\n[PROCESS] Enter PMIC Debug Mode...\n");
readVal = PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x02); //0x102 - IO_MODECTRL Read시 디폴트 0x65
#else
printf("\n[PROCESS] Checking PMIC Communication..."); printf("\n[PROCESS] Checking PMIC Communication...");
// 사전 통신 검사: 정상적인 리드 값이 올 때까지 무한 대기 (또는 특정 횟수) // 사전 통신 검사: 정상적인 리드 값이 올 때까지 무한 대기 (또는 특정 횟수)
@@ -769,9 +786,8 @@ bool Run_DebugMode(FT_HANDLE ftHandle) {
} }
// 실제 디버그 모드 진입 시퀀스 시작 // 실제 디버그 모드 진입 시퀀스 시작
printf("[PROCESS] Attempting to Enter Debug Mode...\n"); printf("[PROCESS] Attempting to Enter Debug Mode On\n");
#endif
do { do {
retryCount++; retryCount++;
@@ -783,13 +799,13 @@ bool Run_DebugMode(FT_HANDLE ftHandle) {
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x02, 0x25); //0x102 - IO_MODECTRL PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x02, 0x25); //0x102 - IO_MODECTRL
// 딜레이 및 확인 (Verification) // 딜레이 및 확인 (Verification)
Sleep(10); Sleep(50);
// 직접 읽어서 확인 // 직접 읽어서 확인
readVal = PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x02); readVal = PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x02);
if (readVal == 0x25) { if (readVal == 0x25) {;
printf(" >>> Success! Debug Mode entered at cycle %d. <<<\n", retryCount); printf(" >>> Success! Debug Mode On[0x%02X] at cycle %d. <<<\n", readVal, retryCount);
return true; return true;
} }
@@ -797,12 +813,66 @@ bool Run_DebugMode(FT_HANDLE ftHandle) {
} while (retryCount < maxRetries); } while (retryCount < maxRetries);
printf("\n[ERRPR] Failed to enter Debug Mode\n"); printf("\n[ERRPR] Failed to enter Debug Mode On\n");
return false;
return false; return false;
} }
// Set Debug Mode Off
bool Run_DebugMode_Off(FT_HANDLE ftHandle) {
uint8_t readVal = 0;
int retryCount = 0;
const int maxRetries = 100; // 과도한 반복 방지 (50회면 충분합니다)
printf("\n[PROCESS] Checking PMIC Communication...");
// 사전 통신 검사: 정상적인 리드 값이 올 때까지 무한 대기 (또는 특정 횟수)
while (1) {
readVal = PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x02); //0x102 - IO_MODECTRL Read시 Debug On으로 0x25
if (readVal != 0xFF) {
printf("\n[SUCCESS] Device detected! (Current Reg 0x02: 0x%02X)\n", readVal);
break; // 통신 성공 시 검사 루프 탈출
}
printf("."); // 대기 중임을 알리는 점 표시
Sleep(1000); // 1초 간격으로 확인
// 만약 무한 대기가 싫다면 별도의 카운터를 써서 break
}
// 실제 디버그 모드 진입 시퀀스 시작
printf("[PROCESS] Attempting to Enter Debug Mode Off...\n");
do {
retryCount++;
// Page01 선택
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x00, 0x01);
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x00, 0x01);
// 디버그 모드 해제 명령 (0x65)
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x02, 0x65); //0x102 - IO_MODECTRL
// 딜레이 및 확인 (Verification)
Sleep(50);
// 직접 읽어서 확인
readVal = PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x02);
if (readVal == 0x65) {
printf(" >>> Success! Debug Mode Off[0x%02X] at cycle %d. <<<\n", readVal, retryCount);
return true;
}
printf("[Retry %d]...\n", retryCount);
} while (retryCount < maxRetries);
printf("\n[ERRPR] Failed Debug Mode Off\n");
return false;
}
// Check All Fault Registers // Check All Fault Registers
void Run_CheckFaults(FT_HANDLE ftHandle) void Run_CheckFaults(FT_HANDLE ftHandle)
@@ -849,6 +919,11 @@ void Run_CheckFaults(FT_HANDLE ftHandle)
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1E); //0x01E - FLT_RECORD_ExtLDOs PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1E); //0x01E - FLT_RECORD_ExtLDOs
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1F); //0x01F - FLT_RECORD_BUCKS_B PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1F); //0x01F - FLT_RECORD_BUCKS_B
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x20); //0x020 - FLT_RECORD_BUCKS_A
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x21); //0x021 - FLT_RECORD_ExtINPs_7_0
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x28); //0x028 - OTP_RWADDR
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x2A); //0x02A - OTP_FLT_RECORD
//Debug Regulation Chip Name etc //Debug Regulation Chip Name etc
printf("[Regulation Chip ID]\n"); printf("[Regulation Chip ID]\n");
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x00); //0x00 - Page0x00 PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x00); //0x00 - Page0x00
@@ -879,9 +954,76 @@ void Run_CheckFaults(FT_HANDLE ftHandle)
// Read Chip Information (OTP/Version) // Read Chip Information (OTP/Version)
void Run_ReadChipInfo(FT_HANDLE ftHandle) void Run_ReadChipInfo(FT_HANDLE ftHandle)
{ {
printf("\n[PROCESS] Reading Chip Information...\n"); //Regulation Register
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x02); // IO_CHIPVERSION_REGU printf("[OTP Version]\n");
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x03); // IO_DIEID3_REGU //OTP Version
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x02); //0x00 - Page0x02
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x02); //0x00 - Page0x02
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x22); //0x222 - OTP_VERSION_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x23); //0x223 - OTP_VERSION_REGU
//Debug Regulation Chip Name etc
printf("[Regulation Chip ID]\n");
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x00); //0x000 - IO_PAGE_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x01); //0x001 - IO_CHIPNAME_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x02); //0x002 - IO_CHIPVERSION_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x03); //0x003 - IO_DIEID3_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x04); //0x004 - IO_DIEID2_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x05); //0x005 - IO_DIEID1_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x06); //0x006 - IO_DIEID0_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_REGULATION, 0x0A); //0x00A - OTP_VERSION_REGU
//Debug Protection Chip Name etc
printf("[Protection Chip ID]\n");
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x00); //0x000 - IO_PAGE_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x01); //0x001 - IO_CHIPNAME_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x02); //0x002 - IO_CHIPVERSION_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x03); //0x003 - IO_DIEID3_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x04); //0x004 - IO_DIEID2_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x05); //0x005 - IO_DIEID1_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x06); //0x006 - IO_DIEID0_REGU
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x0A); //0x00A - OTP_VERSION_REGU
}
// PMIC Irq Clear
void Irq_Clear(FT_HANDLE ftHandle)
{
//Regulation Fault Register Clear : Regulation Register, Address 0x040 ~ 0x049
printf("[Regulation FLT Register Clear]\n");
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x40, 0x00); //0x040 - FLT_RECORD_OTP
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x41, 0x00); //0x041 - FLT_RECORD_TEMP
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x42, 0x00); //0x042 - FLT_RECORD_BUCK1
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x43, 0x00); //0x043 - FLT_RECORD_BUCK2
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x44, 0x00); //0x044 - FLT_RECORD_BUCK3
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x45, 0x00); //0x045 - FLT_RECORD_BUCK4
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x46, 0x00); //0x046 - FLT_RECORD_BUCK5
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x47, 0x00); //0x047 - FLT_RECORD_LDO
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x48, 0x00); //0x048 - FLT_RECORD_IF
PMIC_I2C_Write(ftHandle, PMIC_ADDR_REGULATION, 0x49, 0x00); //0x049 - FLT_RECORD_LDO_DISC_DET
//Fault register data: Protection Register, Address 0x010 ~0x014, 0x019 ~0x021
printf("[Protection FLT Register Clear]\n");
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Write(ftHandle, PMIC_ADDR_PROTECTION, 0x00, 0x00); //0x00 - Page0x00
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x14); //0x014 - FUSA_STATUS_4
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x19); //0x019 - FLT_RECORD_A
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1A); //0x01A - FLT_RECORD_B
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1B); //0x01B - FLT_RECORD_GND_AVIN
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1C); //0x01C - FLT_RECORD_BG_Temp
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1D); //0x01D - FLT_RECORD_IntLDOs
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1E); //0x01E - FLT_RECORD_ExtLDOs
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x1F); //0x01F - FLT_RECORD_BUCKS_B
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x20); //0x020 - FLT_RECORD_BUCKS_A
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x21); //0x021 - FLT_RECORD_ExtINPs_7_0
PMIC_I2C_Read(ftHandle, PMIC_ADDR_PROTECTION, 0x2A); //0x02A - OTP_FLT_RECORD
} }
// Manual Command // Manual Command

View File

@@ -1,14 +0,0 @@
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\vc143.pdb
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.obj
c:\work\src\0_tool\pmic_tool\x64\release\pmic_cmd_tool.exe
c:\work\src\0_tool\pmic_tool\x64\release\pmic_cmd_tool.pdb
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.ipdb
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.iobj
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\cl.command.1.tlog
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\cl.items.tlog
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\cl.read.1.tlog
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\cl.write.1.tlog
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\link.command.1.tlog
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\link.read.1.tlog
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\link.secondary.1.tlog
c:\work\src\0_tool\pmic_tool\pmic_cmd_tool\x64\release\pmic_cmd_tool.tlog\link.write.1.tlog

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs>
<ProjectOutput>
<FullPath>C:\Work\Src\0_Tool\PMIC_Tool\x64\Release\PMIC_Cmd_Tool.exe</FullPath>
</ProjectOutput>
</ProjectOutputs>
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>

View File

@@ -1,19 +0,0 @@
 PMIC_Cmd_Tool.cpp
C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool\external\FT4222\include\ftd2xx.h(2072,1): warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.
(소스 파일 'src/PMIC_Cmd_Tool.cpp'을(를) 컴파일하는 중)
코드를 생성하고 있습니다.
2 of 14 functions (14.3%) were compiled, the rest were copied from previous compilation.
0 functions were new in current compilation
0 functions had inline decision re-evaluated but remain unchanged
코드를 생성했습니다.
PMIC_Cmd_Tool.vcxproj -> C:\Work\Src\0_Tool\PMIC_Tool\x64\Release\PMIC_Cmd_Tool.exe
C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool\external\FT4222\dll\ftd2xx.dll
C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool\external\FT4222\dll\LibFT4222-64.dll
2개 파일이 복사되었습니다.
Creating backup at: "C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool_Build_History\20260402_1952"
C:\Work\Src\0_Tool\PMIC_Tool\x64\Release\ftd2xx.dll
C:\Work\Src\0_Tool\PMIC_Tool\x64\Release\LibFT4222-64.dll
C:\Work\Src\0_Tool\PMIC_Tool\x64\Release\PMIC_Cmd_Tool.exe
C:\Work\Src\0_Tool\PMIC_Tool\x64\Release\PMIC_Cmd_Tool.pdb
4개 파일이 복사되었습니다.

View File

@@ -1 +0,0 @@
C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool\src\PMIC_Cmd_Tool.cpp;C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool\x64\Release\PMIC_Cmd_Tool.obj

View File

@@ -1,2 +0,0 @@
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.44.35207:TargetPlatformVersion=10.0.26100.0:
Release|x64|C:\Work\Src\0_Tool\PMIC_Tool\|

View File

@@ -1,3 +0,0 @@
^C:\WORK\SRC\0_TOOL\PMIC_TOOL\PMIC_CMD_TOOL\X64\RELEASE\PMIC_CMD_TOOL.OBJ
C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool\x64\Release\PMIC_Cmd_Tool.IPDB
C:\Work\Src\0_Tool\PMIC_Tool\PMIC_Cmd_Tool\x64\Release\PMIC_Cmd_Tool.iobj