Compare commits

...

29 commits
2.4 ... master

Author SHA1 Message Date
eliboa
417d212ea9
Delete FUNDING.yml 2021-11-30 22:10:25 +01:00
eliboa
0e72b97770
Merge pull request #51 from suDisdain/patch-1
Add additional alternative to RCM injectors list
2021-11-14 08:58:35 +01:00
eliboa
2524968059
Merge pull request #50 from Pysis868/feature/add-logging-switch
Add logging switch
2021-11-14 08:58:21 +01:00
Malachi
b6d6f18e6a
Add additional alternative to RCM injectors list
Added JTegraNX as an a suggestion for other platforms, as it is a cross-platform GUI choice
2021-11-14 14:19:09 +11:00
Pysis
6c0fb778f4 Cleaning
Made a consolidated output path style that seems reasonable, and ignored it from SCM.
Thought the project should build in release mode and found it was over-customized in debug mode.
Also had to fix some random security errors.
Made the build configurations more consistent, and also simplified them, opting now to only enable the env var method that is more flexible and may have been added automatically by the IDE as a successful recommendation.
Simplified README accordingly.
2021-09-23 02:22:38 -04:00
Pysis
5c37ceaa97 Re-enable logging feature with convenience
It seemed useful as I was having issues while using the program normal, and since it was already developed.

Added brand new gitignore file ignoring IDE cache and build result files.
Updated README with additional development instructions so the project can be built and work more immediately once opening.
Added new setting/preset `LOGGING` with a checkbox on the settings page.  Kept the overall dialog size by placing it near the bottom off to the right side from the install driver button for now.
Also fixed the tab order for all of those elements.
Added the usual element id unique at least to the 1 tab, removing a typo for another while I was in that same file, along with the relevant init code and user action handler for controlling the checkbox's state.

Had to initialize the `TegraRcm` object earlier in the dialog class and have the logging state properly initialized since there were `AppendLog` method calls early in program execution.

Updated the project tooling to 2019 (v142).
Swore the library file was being used before but I only found the include paths later on, so added that additional dependency so the program would build finding the external function references.
2021-09-23 01:09:36 -04:00
eliboa
1786276e52
Update README.md 2021-02-11 21:42:18 +01:00
eliboa
3be31123e9
Update README.md 2020-11-19 11:49:16 +01:00
eliboa
7b60923460
Update README.md 2020-07-21 17:16:23 +02:00
eliboa
2f00e5264b
Badges 2020-07-17 22:38:26 +02:00
eliboa
6e4d3a3906
Update README.md 2020-05-01 01:44:52 +02:00
eliboa
b115ecadb2
Create FUNDING.yml 2020-02-29 09:33:27 +01:00
eliboa
781da57c4e
Update README.md 2019-07-25 23:41:40 +02:00
eliboa
27f82da96a
Update README.md 2019-07-09 16:48:49 +02:00
eliboa
42658d7acb Merge branch 'master' of https://github.com/eliboa/TegraRcmGUI 2019-07-02 19:58:56 +02:00
eliboa
ce2d05edd4 v2.6 2019-07-02 19:58:02 +02:00
eliboa
5ce7782fab Remove submodule 2019-07-02 16:35:19 +02:00
eliboa
1467953323 Added biskeydump as submodule 2019-07-02 16:26:45 +02:00
eliboa
6e20afa898 Revert "Added biskeydump as submodule"
This reverts commit d506aa091c.
2019-07-02 16:16:04 +02:00
eliboa
d506aa091c Added biskeydump as submodule 2019-07-02 16:07:04 +02:00
eliboa
fb2e609b6e
Update README.md 2019-06-07 10:23:32 +02:00
eliboa
638f85281c
Update README.md 2019-03-10 23:49:46 +01:00
eliboa
730afcd0a4
Update README.md 2019-03-09 10:49:27 +01:00
eliboa
952fb4ec83
Update README.md 2019-02-03 00:05:01 +01:00
eliboa
cd9d69da30 Merge branch 'master' of https://github.com/eliboa/TegraRcmGUI 2019-02-02 23:26:48 +01:00
eliboa
83b771a186 V2.5 :
- TegraRcmSmash updated to v1.2.1-3
- memloader updated to v3
- Added rajkosto's UMS samples to mount eMMC partitions
- biskeydump v7 added : dump BIS keys for eMMC content decryption
- Added logging console
- Fixed #22 : enter problem
2019-02-02 23:25:26 +01:00
eliboa
1fc3004d41
Update README.md 2018-10-07 12:04:43 +02:00
eliboa
076f041175 init 2018-09-30 15:13:48 +02:00
eliboa
b324d94931
Update README.md 2018-09-12 00:15:01 +02:00
38 changed files with 938 additions and 363 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
.vs
Output

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "TegraRcmGUI/tools/src/biskeydump"]
path = TegraRcmGUI/tools/src/biskeydump
url = https://github.com/eliboa/biskeydump

View file

@ -1,17 +1,27 @@
![Png](https://img.shields.io/badge/platform-windows-lightgrey)
![Png](https://img.shields.io/badge/latest%20stable%20release-2.6-yellow)
![GitHub](https://img.shields.io/github/license/eliboa/TegraRcmGUI)
![GitHub All Releases](https://img.shields.io/github/downloads/eliboa/TegraRcmGUI/total)
![GitHub repo size](https://img.shields.io/github/repo-size/eliboa/TegraRcmGUI)
![GitHub issues](https://img.shields.io/github/issues/eliboa/TegraRcmGUI)
# TegraRcmGUI
C++ GUI for [TegraRcmSmash](https://github.com/rajkosto/TegraRcmSmash) by [rajkosto](https://github.com/rajkosto) (payload loader for Nintendo Switch)
C++ GUI for [TegraRcmSmash](https://github.com/rajkosto/TegraRcmSmash) by [rajkosto](https://github.com/rajkosto) (Fusée Gelée exploit for Nintendo Switch)
The RCM exploit only works on "unpatched" units, i.e manufactured before July 2018. To check if your Switch is patched, use https://ismyswitchpatched.com/
## Features
- Inject payloads (such as CFW bootloader, Nand/Key Dumper, etc)
- Inject payloads
- Manage favorites
- Run Linux on your switch (ShofEL2)
- Mount device as USB mass storage (read/write from/to SD card only, hold power button down for 5sec to exit)
- Option - "Auto inject" : automatically inject payload after selection or/and when the Switch is plugged in RCM mode (does not apply at startup)
- Mount device as USB mass storage (read/write from/to SD card & NAND partitions, hold power button down for 5sec to exit)
- Dump BIS keys for eMMC content decryption (biskeydump by rajkosto)
- Option - "Auto inject" : automatically inject payload after selection or/and when the Switch is plugged in RCM mode
- Option - Minimize app to tray & tray icon's context menu
- Option - Run app at Windows startup
- Install APX device driver (if needed)
![Png](http://tegrarcmgui.gq/TegraRcmGUI_v2.2.png)
![Png](https://www.eliboa.com/TegraRcmGUI_v2.5.png)
## Download
[Latest release](https://github.com/eliboa/TegraRcmGUI/releases/latest) (Windows)
@ -21,14 +31,29 @@ This UI is **Windows-only**.
For other platforms, you can use :
- [Fusée Launcher](https://github.com/Cease-and-DeSwitch/fusee-launcher) (GNU/Linux)
- [NXBoot](https://mologie.github.io/nxboot/) (OS X, iOS)
- [JTegraNX](https://github.com/dylwedma11748/JTegraNX) (Windows, OS X, GNU/Linux)
- [NXLoader](https://github.com/DavidBuchanan314/NXLoader) (Android)
- [Web Fusée Launcher](https://fusee-gelee.firebaseapp.com/) (Cross-platform, only works with Chrome)
## Issue / Suggestion
Please open new [issue](https://github.com/eliboa/TegraRcmGUI/issues) to report a bug or submit a suggestion.
Please open new [issue](https://github.com/eliboa/TegraRcmGUI/issues) to report a bug or submit a suggestion.
## Development
Install the [libusbk dev kit](https://sourceforge.net/projects/libusbk/) using the setup program, then create an environment variable `LIBUSBK_DIR` with the installation path as the value.
## How to backup/restore your Nintendo Switch's NAND ?
1) Use [memloader](https://github.com/rajkosto/memloader) v3 to mount eMMC on your computer
2) Download and open [NxNandManager](https://github.com/eliboa/NxNandManager). Select "File" then "Open drive".
3) Select the mounted drive. You can now perform backup/restore operations.
![Png](https://www.eliboa.com/NxNandManager_v1.1_howto_open_drive.png)
## Credits
- [Rajkosto](https://github.com/rajkosto) / [TegraRcmSmash](https://github.com/rajkosto/TegraRcmSmash) (Fusée Launcher reimplementation for Windows), [memloader](https://github.com/rajkosto/memloader), SD tool, [biskeydump](https://github.com/rajkosto/biskeydump)
- [Kate Temkin](https://github.com/ktemkin) / [Fusée Launcher](https://github.com/Cease-and-DeSwitch/fusee-launcher)
- [Rajkosto](https://github.com/rajkosto) / [TegraRcmSmash](https://github.com/rajkosto/TegraRcmSmash) (Fusée Launcher reimplementation for Windows), [memloader](https://github.com/rajkosto/memloader), SD tool
- [fail0verflow](https://github.com/fail0verflow) / [ShofEL2](https://github.com/fail0verflow/shofel2) (Boot stack for no-modification, universal code execution and Linux on the Nintendo Switch)
- [Rob Fisher](http://come.to/robfisher) / GetRelativeFilename
- [SciresM](https://github.com/SciresM) / [Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)
- [CTCaer](https://github.com/CTCaer/hekate) / [Hekate](https://github.com/CTCaer/hekate)
- [Reisyukaku](https://github.com/Reisyukaku/) / [ReiNX](https://github.com/Reisyukaku/ReiNX)

40
TegraRcmGUI.sln Normal file
View file

@ -0,0 +1,40 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26228.9
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TegraRcmGUI", "TegraRcmGUI\TegraRcmGUI.vcxproj", "{2C091C5B-378F-44D0-91F2-53489BA7B83C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
Static Debug|x64 = Static Debug|x64
Static Debug|x86 = Static Debug|x86
Static Release|x64 = Static Release|x64
Static Release|x86 = Static Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x64.ActiveCfg = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x64.Build.0 = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x86.ActiveCfg = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x86.Build.0 = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x64.ActiveCfg = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x64.Build.0 = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x86.ActiveCfg = Release|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x86.Build.0 = Release|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x64.ActiveCfg = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x64.Build.0 = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x86.ActiveCfg = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x86.Build.0 = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x64.ActiveCfg = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x64.Build.0 = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x86.ActiveCfg = Release|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -147,6 +147,7 @@ BEGIN_MESSAGE_MAP(DialogTab01, CDialog)
ON_BN_CLICKED(ID_DEL_FAV, &DialogTab01::OnBnClickedDelFav)
ON_LBN_DBLCLK(IDC_LIST1, &DialogTab01::OnDblclkList1)
ON_LBN_SELCHANGE(IDC_LIST1, &DialogTab01::OnLbnSelchangeList1)
ON_MESSAGE(DM_GETDEFID, OnGetDefID)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
@ -245,6 +246,7 @@ void DialogTab01::InjectPayload()
{
m_TegraRcm->BitmapDisplay(LOADED);
m_TegraRcm->SendUserMessage("Payload injected !", VALID);
m_TegraRcm->AppendLogBox(TEXT("Payload successfully injected\r\n"));
m_TegraRcm->WAITING_RECONNECT = TRUE;
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Payload injected"), TEXT(" "), 1000, NIIF_INFO);
}
@ -254,6 +256,10 @@ void DialogTab01::InjectPayload()
string s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
m_TegraRcm->SendUserMessage(s.c_str(), INVALID);
CString rc_str;
rc_str.Format(L"%d", rc);
m_TegraRcm->AppendLogBox(TEXT("Error while injecting payload (RC=") + rc_str + TEXT(")\r\n"));
}
}
@ -294,6 +300,7 @@ void DialogTab01::OnBnClickedAddFav()
m_TegraRcm->SaveFavorites();
m_TegraRcm->SendUserMessage("Favorite added", VALID);
m_TegraRcm->AppendLogBox(TEXT("New favorite added\r\n"));
return;
}
@ -309,6 +316,8 @@ void DialogTab01::OnBnClickedDelFav()
m_TegraRcm->Favorites.RemoveAt(i);
m_TegraRcm->SaveFavorites();
m_TegraRcm->SendUserMessage("Favorite removed", VALID);
m_TegraRcm->AppendLogBox(TEXT("Favorite removed\r\n"));
}
return;
}
@ -356,3 +365,7 @@ HBRUSH DialogTab01::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
}
return hbr;
}
LRESULT DialogTab01::OnGetDefID(WPARAM wp, LPARAM lp)
{
return MAKELONG(0, DC_HASDEFID);
}

View file

@ -40,4 +40,5 @@ public:
afx_msg void OnLbnSelchangeList1();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
COleDropTarget FileDropTarget;
afx_msg LRESULT OnGetDefID(WPARAM wp, LPARAM lp);
};

View file

@ -29,7 +29,8 @@ SOFTWARE.
#include "TegraRcmGUI.h"
#include "afxdialogex.h"
#include "DialogTab02.h"
#include <stdlib.h>
#include <codecvt>
using namespace std;
@ -58,6 +59,7 @@ BEGIN_MESSAGE_MAP(DialogTab02, CDialogEx)
ON_BN_CLICKED(IDC_SHOFEL2, &DialogTab02::OnBnClickedShofel2)
// ON_WM_CTLCOLOR()
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_DUMP_BISKEY, &DialogTab02::OnBnClickedDumpBiskey)
END_MESSAGE_MAP()
@ -92,6 +94,16 @@ BOOL DialogTab02::OnInitDialog()
);
pBtn->SetIcon(hIcn);
pBtn = (CButton*)GetDlgItem(IDC_DUMP_BISKEY);
pBtn->ModifyStyle(0, BS_ICON);
hIcn = (HICON)LoadImage(
AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(ID_KEYS_ICON),
IMAGE_ICON,
height, height, // use actual size
LR_DEFAULTCOLOR
);
pBtn->SetIcon(hIcn);
CFont* pFont = GetFont();
LOGFONT lf;
@ -99,21 +111,57 @@ BOOL DialogTab02::OnInitDialog()
lf.lfWeight = FW_BOLD;
m_BoldFont.CreateFontIndirect(&lf);
CComboBox* pmyComboBox = (CComboBox*)GetDlgItem(ID_UMS_COMBO);
pmyComboBox->AddString(TEXT("eMMC BOOT0 (DANGEROUS)"));
pmyComboBox->AddString(TEXT("eMMC BOOT1 (DANGEROUS)"));
pmyComboBox->AddString(TEXT("eMMC rawNAND (DANGEROUS)"));
pmyComboBox->AddString(TEXT("MMC - SD Card"));
pmyComboBox->SetCurSel(3);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DialogTab02::OnBnClickedMountSd()
{
CComboBox* pmyComboBox = (CComboBox*)GetDlgItem(ID_UMS_COMBO);
if (pmyComboBox->GetCurSel() < 3) {
CString message = _T("-----> WARNING <-----\nYou are about to mount internal storage of your Nintendo Switch\nBE VERY CAREFUL ! Do not format or write to your NAND partitions if you don't know what you're doing.\nTHIS COULD BRICK YOUR CONSOLE !!!\n\nAre you really sure you want to continue ?");
const int result = MessageBox(message, _T("BEWARE & WARNING"), MB_YESNO | MB_ICONWARNING);
if (result != IDYES) {
m_TegraRcm->AppendLogBox(TEXT("Mount NAND partition ABORTED\r\n"));
return;
}
}
m_TegraRcm->BitmapDisplay(LOADING);
GetParent()->UpdateWindow();
string s;
TCHAR args[] = TEXT("memloader\\memloader_usb.bin -r --dataini=memloader\\ums_sd.ini");
int rc = m_TegraRcm->Smasher(args);
if (rc < 0)
TCHAR args[256];
switch (pmyComboBox->GetCurSel())
{
case 0:
_tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot0.ini"));
break;
case 1:
_tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_boot1.ini"));
break;
case 2:
_tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_emmc.ini"));
break;
default:
_tcscpy_s(args, 255, TEXT(".\\tools\\memloader\\memloader_usb.bin -r --dataini=.\\tools\\memloader\\ums_sd.ini"));
break;
}
int rc = m_TegraRcm->Smasher(args, FALSE);
if (rc < -10)
{
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
s = "Error while injecting UMS Tool (RC=" + std::to_string(rc) + ")";
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
}
else
@ -122,8 +170,10 @@ void DialogTab02::OnBnClickedMountSd()
s = "UMS Tool injected";
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("UMS Tool injected"), TEXT(" "), 1000, NIIF_INFO);
}
CA2T wt(s.c_str());
GetParent()->SetDlgItemText(INFO_LABEL, wt);
//CA2T wt(s.c_str());
//GetParent()->SetDlgItemText(INFO_LABEL, wt);
CString ss(s.c_str());
m_TegraRcm->AppendLogBox(ss + TEXT("\r\n"));
}
@ -132,8 +182,8 @@ void DialogTab02::OnBnClickedShofel2()
TCHAR *exe_dir = m_TegraRcm->GetAbsolutePath(TEXT(""), CSIDL_APPDATA);
string s;
TCHAR *COREBOOT_FILE = m_TegraRcm->GetAbsolutePath(TEXT("shofel2\\coreboot\\coreboot.rom"), CSIDL_APPDATA);
TCHAR *PAYLOAD = m_TegraRcm->GetAbsolutePath(TEXT("shofel2\\coreboot\\cbfs.bin"), CSIDL_APPDATA);
TCHAR *COREBOOT_FILE = m_TegraRcm->GetAbsolutePath(TEXT("tools\\shofel2\\coreboot\\coreboot.rom"), CSIDL_APPDATA);
TCHAR *PAYLOAD = m_TegraRcm->GetAbsolutePath(TEXT("tools\\shofel2\\coreboot\\cbfs.bin"), CSIDL_APPDATA);
CString COREBOOT_FILE2 = COREBOOT_FILE;
CString COREBOOT = _T("CBFS+") + COREBOOT_FILE2;
@ -143,7 +193,9 @@ void DialogTab02::OnBnClickedShofel2()
BOOL payload_exists = infile2.good();
if (!coreboot_exists || !payload_exists) {
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Linux coreboot not found in \\shofel2 dir"));
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Linux coreboot not found in \\shofel2 dir"));
m_TegraRcm->AppendLogBox(TEXT("Linux coreboot not found in \\shofel2 di\r\n"));
CString message = _T("Kernel not found in shofel2 directory. Do you want to automatically download arch linux kernel from SoulCipher repo ?");
const int result = MessageBox(message, _T("Kernel not found"), MB_YESNOCANCEL | MB_ICONQUESTION);
if (result == IDYES)
@ -152,34 +204,39 @@ void DialogTab02::OnBnClickedShofel2()
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
TCHAR *download_script = m_TegraRcm->GetAbsolutePath(TEXT("shofel2\\download.bat"), CSIDL_APPDATA);
TCHAR *download_script = m_TegraRcm->GetAbsolutePath(TEXT("tools\\shofel2\\download.bat"), CSIDL_APPDATA);
BOOL bRet = CreateProcess(download_script, NULL, NULL, NULL, FALSE, 0, NULL, exe_dir, &si, &pif);
}
return; // TO-DO : Remove return for coreboot injection after download
}
m_TegraRcm->BitmapDisplay(LOADING);
GetParent()->UpdateWindow();
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot. Please wait."));
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot. Please wait."));
m_TegraRcm->AppendLogBox(TEXT("Linux coreboot not found in \\shofel2 di\r\n"));
//int rc = device.SmashMain(5, args);
TCHAR cmd[MAX_PATH] = TEXT("--relocator= \"");
TCHAR cmd[4096] = TEXT("--relocator= \"");
lstrcat(cmd, _tcsdup(PAYLOAD));
lstrcat(cmd, TEXT("\" \"CBFS:"));
lstrcat(cmd, _tcsdup(COREBOOT_FILE));
lstrcat(cmd, TEXT("\""));
int rc = m_TegraRcm->Smasher(cmd);
int rc = m_TegraRcm->Smasher(cmd, FALSE);
int test = 1;
if (rc >= 0 || rc < -7)
{
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Coreboot injected. Waiting 5s for device..."));
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Coreboot injected. Waiting 5s for device..."));
m_TegraRcm->AppendLogBox(TEXT("Coreboot injected. Waiting 5s for device...\r\n"));
Sleep(5000);
PROCESS_INFORMATION pif;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
TCHAR *imx_script = m_TegraRcm->GetAbsolutePath(TEXT("shofel2\\imx_usb.bat"), CSIDL_APPDATA);
GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot... Please wait."));
TCHAR *imx_script = m_TegraRcm->GetAbsolutePath(TEXT("tools\\shofel2\\imx_usb.bat"), CSIDL_APPDATA);
//GetParent()->SetDlgItemText(INFO_LABEL, TEXT("Loading coreboot... Please wait."));
m_TegraRcm->AppendLogBox(TEXT("Loading coreboot... Please wait\r\n"));
BOOL ret = CreateProcess(imx_script, NULL, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, exe_dir, &si, &pif);
int rc = -50;
if (NULL != ret)
@ -200,21 +257,27 @@ void DialogTab02::OnBnClickedShofel2()
m_TegraRcm->BitmapDisplay(LOADED);
s = "\nCoreboot loaded !";
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Coreboot loaded "), TEXT(" "), 1000, NIIF_INFO);
}
else
{
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
s = "Error while loading imx_usb.exe";
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while loading imx_usb.exe"), 1000, NIIF_ERROR);
}
}
else
{
s = "Error while injecting payload. (RC=" + std::to_string(rc) + ")";
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), TEXT("Error while injecting payload"), 1000, NIIF_ERROR);
}
CA2T wt2(s.c_str());
GetParent()->SetDlgItemText(INFO_LABEL, wt2);
//CA2T wt2(s.c_str());
//GetParent()->SetDlgItemText(INFO_LABEL, wt2);
CString ss(s.c_str());
m_TegraRcm->AppendLogBox(ss + TEXT("\r\n"));
}
HBRUSH DialogTab02::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
@ -225,8 +288,98 @@ HBRUSH DialogTab02::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
case ID_UMSTOOL_TITLE:
case ID_LINUX_TITLE:
case ID_BISKEY_TITLE:
pDC->SelectObject(&m_BoldFont);
break;
}
return hbr;
}
void DialogTab02::OnBnClickedDumpBiskey()
{
m_TegraRcm->BitmapDisplay(LOADING);
GetParent()->UpdateWindow();
TCHAR args[] = TEXT("-w tools\\biskeydump_usb.bin BOOT:0x0");
int rc = m_TegraRcm->Smasher(args);
BOOL keyFound = FALSE;
TCHAR *rfile = m_TegraRcm->GetAbsolutePath(TEXT("out.log"), CSIDL_APPDATA);
CString Cline;
std::wifstream fin(rfile, std::ios::binary);
fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf8_utf16<wchar_t>));
CString Filename;
for (wchar_t c; fin.get(c); ) {
CString Cchar(c);
if (Cchar == TEXT("\n")) {
if (Cline.Find(TEXT("HWI")) != -1 ||
Cline.Find(TEXT("SBK")) != -1 ||
Cline.Find(TEXT("TSEC KEY")) != -1 ||
Cline.Find(TEXT("BIS KEY")) != -1) {
if (!keyFound)
{
keyFound = TRUE;
CString szFilter;
szFilter = "TXT files (*.txt)|*.txt|All files (*.*)|*.*||";
CFileDialog FileOpenDialog(
FALSE,
NULL,
TEXT("BIS_keys.txt"),
OFN_HIDEREADONLY,
szFilter,
AfxGetMainWnd());
if (FileOpenDialog.DoModal() == IDOK)
{
CFile File;
Filename = FileOpenDialog.GetPathName();
remove(CT2A(Filename));
}
else {
return;
}
}
CT2CA pszConvertedAnsiString(Cline + _T('\n'));
std::string outLine = pszConvertedAnsiString;
fstream outFile;
outFile.open(Filename, fstream::in | fstream::out | fstream::app);
outFile << outLine;
outFile.close();
}
Cline.Empty();
}
else if (Cchar != TEXT("\r") && Cchar != TEXT("")) {
Cline.Append(Cchar);
}
}
fin.close();
CString s;
if (!keyFound)
{
m_TegraRcm->BitmapDisplay(LOAD_ERROR);
s.Append(TEXT("Error while retrieving BIS keys"));
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(TEXT("Error"), s, 1000, NIIF_ERROR);
s.Append(TEXT("\r\n"));
}
else
{
m_TegraRcm->BitmapDisplay(LOADED);
CString loc(Filename);
s.Append(TEXT("BIS keys saved to : "));
s.Append(loc);
if (!m_TegraRcm->CmdShow) m_TegraRcm->ShowTrayIconBalloon(s, TEXT(" "), 1000, NIIF_INFO);
s.Append(TEXT("\r\n"));
}
m_TegraRcm->AppendLogBox(s);
}

View file

@ -4,6 +4,8 @@
#include "TegraRcm.h"
// DialogTab02 dialog
class DialogTab02 :
@ -33,4 +35,5 @@ public:
// HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnBnClickedDumpBiskey();
};

View file

@ -45,6 +45,14 @@ BOOL DialogTab03::OnInitDialog()
checkbox->SetCheck(BST_CHECKED);
}
value = m_TegraRcm->GetPreset("LOGGING");
if (value == "TRUE")
{
m_TegraRcm->LOGGING_CURR = TRUE;
CMFCButton* checkbox = (CMFCButton*)GetDlgItem(LOGGING);
checkbox->SetCheck(BST_CHECKED);
}
TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, szPath)))
{
@ -66,6 +74,8 @@ BEGIN_MESSAGE_MAP(DialogTab03, CDialogEx)
ON_BN_CLICKED(MIN_TO_TRAY, &DialogTab03::OnClickedMinToTray)
ON_BN_CLICKED(ID_INSTALL_DRIVER, &DialogTab03::OnBnClickedInstallDriver)
ON_BN_CLICKED(RUN_WINSTART, &DialogTab03::OnBnClickedWinstart)
ON_BN_CLICKED(LOGGING, &DialogTab03::OnClickedLogging)
//ON_BN_CLICKED(IDC_BUTTON2, &DialogTab03::OnBnClickedButton2)
END_MESSAGE_MAP()
@ -112,6 +122,20 @@ void DialogTab03::OnClickedMinToTray()
}
void DialogTab03::OnClickedLogging()
{
// Get Minimize to tray checkbox value (checked, unchecked)
CButton* m_ctlCheck = (CButton*)GetDlgItem(LOGGING);
BOOL IsCheckChecked = (m_ctlCheck->GetCheck() == 1) ? true : false;
if (m_TegraRcm->LOGGING_CURR != IsCheckChecked)
{
if (IsCheckChecked) m_TegraRcm->SetPreset("LOGGING", "TRUE");
else m_TegraRcm->SetPreset("LOGGING", "FALSE");
m_TegraRcm->LOGGING_CURR = IsCheckChecked;
}
}
void DialogTab03::OnBnClickedInstallDriver()
{
m_TegraRcm->InstallDriver();
@ -136,11 +160,14 @@ void DialogTab03::OnBnClickedWinstart()
{
// Remove shortcut
PathAppend(szPath, _T("\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\TegraRcmGUI.lnk"));
remove(CW2A(szPath));
if(remove(CW2A(szPath)) == 0) m_TegraRcm->AppendLogBox(TEXT("Winstart shortcut REMOVED\r\n"));
}
// Create new shortcut
if (IsCheckChecked) CreateLink();
if (IsCheckChecked) {
CreateLink();
m_TegraRcm->AppendLogBox(TEXT("Winstart shortcut ADDED\r\n"));
}
}
@ -218,4 +245,10 @@ void DialogTab03::CleanRegestry() {
}
}
}
}
}
/*
void DialogTab03::OnBnClickedButton2()
{
m_TegraRcm->SetLocale();
}
*/

View file

@ -44,6 +44,7 @@ public:
afx_msg void OnClickedMinToTray();
afx_msg void OnBnClickedInstallDriver();
afx_msg void OnBnClickedWinstart();
afx_msg void OnClickedLogging();
void CreateLink();
afx_msg void CleanRegestry();

View file

@ -27,6 +27,9 @@ SOFTWARE.
#include <stdlib.h>
#include "stdafx.h"
#include "TegraRcm.h"
#include <sstream>
#include <fstream>
#include <codecvt>
using namespace std;
@ -34,8 +37,9 @@ TegraRcm::TegraRcm(CDialog* pParent /*=NULL*/)
{
m_Parent = pParent;
m_hWnd = AfxGetMainWnd()->GetSafeHwnd();
this->LOGGING_CURR = GetPreset("LOGGING") == "TRUE";
GetFavorites();
SendUserMessage("Waiting for device in RCM mode");
//SendUserMessage("Waiting for device in RCM mode");
}
TegraRcm::~TegraRcm()
@ -256,7 +260,7 @@ void TegraRcm::ShowContextMenu(HWND hWnd)
DestroyMenu(hMenu);
}
}
LRESULT TegraRcm::OnTrayIconEvent(UINT wParam, LPARAM lParam)
LRESULT TegraRcm::OnTrayIconEvent(WPARAM wParam, LPARAM lParam)
{
if ((UINT)wParam != ID_SYSTEMTRAY)
{
@ -303,6 +307,89 @@ LRESULT TegraRcm::OnTrayIconEvent(UINT wParam, LPARAM lParam)
return ERROR_SUCCESS;
}
void TegraRcm::SetLocale()
{
TCHAR *rfile = GetAbsolutePath(TEXT("locale\\french.txt"), CSIDL_APPDATA);
std::wifstream wif(rfile);
wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
if (wif.is_open())
{
wif.seekg(0, std::ios::beg);
std::wstring wline;
std::wstring stringName;
std::wstring value;
std::wstring delimiter = L"=";
while (wif.good())
{
std::getline(wif, wline);
if (!wif.eof())
{
if (wline.find(delimiter) != std::string::npos) {
stringName = wline.substr(0, wline.find(delimiter));
value = wline.substr(wline.find(delimiter) + 1, wline.length() + 1);
CString value2 = value.c_str();
value2.Replace(_T('#'), '\n');
int intValue = stoi(stringName.c_str());;
if (intValue > 0) {
//TCITEM tcItem1;
//tcItem1.mask = TCIF_TEXT;
//tcItem1.pszText = _T("Test");
//AfxGetMainWnd()->m_tbCtrl->
//m_tbCtrl.InsertItem(0, &tcItem1);
//m_Ctrltb1->SetWindowText(_T("test"));
if (m_Ctrltb1->GetDlgItem(intValue)) {
m_Ctrltb1->SetDlgItemText(intValue, value2);
}
if (m_Ctrltb2->GetDlgItem(intValue)) {
m_Ctrltb2->SetDlgItemText(intValue, value2);
}
if (m_Ctrltb3->GetDlgItem(intValue)) {
m_Ctrltb3->SetDlgItemText(intValue, value2);
}
}
}
}
}
wif.close();
}
}
void TegraRcm::AppendLogBox(CString line) {
CEdit* pBox = (CEdit*)AfxGetMainWnd()->GetDlgItem(IDC_LOG_BOX);
CString Content;
pBox->GetWindowText(Content);
Content.Append(line);
AfxGetMainWnd()->SetDlgItemText(IDC_LOG_BOX, Content);
pBox->LineScroll(pBox->GetLineCount());
AfxGetMainWnd()->UpdateWindow();
}
void TegraRcm::UpdateLogBox() {
TCHAR *rfile = GetAbsolutePath(TEXT("out.log"), CSIDL_APPDATA);
CString Cline;
std::wifstream fin(rfile, std::ios::binary);
fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf8_utf16<wchar_t>));
for (wchar_t c; fin.get(c); ) {
CString Cchar(c);
if (Cchar == TEXT("\n")) {
Cline.Append(TEXT("\r\n"));
AppendLogBox(Cline);
Cline.Empty();
}
else if(Cchar != TEXT("\r")) {
Cline.Append(Cchar);
}
}
fin.close();
}
//
// Presets functions
@ -356,6 +443,10 @@ void TegraRcm::SetPreset(string param, string value)
readFile.close();
remove(CT2A(rfile));
rename(CT2A(wfile), CT2A(rfile));
CString paramStr(param.c_str()), valueStr(value.c_str());
AppendLogBox(TEXT("Preset \"") + paramStr + TEXT("\" set to : ") + valueStr + TEXT("\r\n"));
}
void TegraRcm::GetFavorites()
{
@ -436,6 +527,7 @@ void TegraRcm::AddFavorite(CString value)
outFile.open(GetAbsolutePath(TEXT("favorites.conf"), CSIDL_APPDATA), fstream::in | fstream::out | fstream::app);
outFile << outLine;
outFile.close();
}
void TegraRcm::SaveFavorites()
{
@ -452,8 +544,7 @@ void TegraRcm::SaveFavorites()
void TegraRcm::AppendLog(string message)
{
// DISABLED
return;
if (!this->LOGGING_CURR) return;
// Get time
@ -492,8 +583,13 @@ void TegraRcm::SendUserMessage(string message, int type)
LabelColor = RGB(0, 0, 0);
break;
}
AfxGetMainWnd()->SetDlgItemText(INFO_LABEL, wmessage);
//AfxGetMainWnd()->SetDlgItemText(INFO_LABEL, wmessage);
AppendLog(message);
/*
CString msgStr(message.c_str());
msgStr.Append(TEXT("\r\n"));
AppendLogBox(msgStr);
*/
}
@ -622,7 +718,9 @@ void TegraRcm::LookUp()
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(TRUE);
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(TRUE);
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(TRUE);
m_Ctrltb2->GetDlgItem(IDC_DUMP_BISKEY)->EnableWindow(TRUE);
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(FALSE);
}
// RCM Status = "USB Driver KO"
@ -631,6 +729,7 @@ void TegraRcm::LookUp()
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(FALSE);
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(FALSE);
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(FALSE);
m_Ctrltb2->GetDlgItem(IDC_DUMP_BISKEY)->EnableWindow(FALSE);
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(TRUE);
}
// RCM Status = "RCM not detected"
@ -639,6 +738,7 @@ void TegraRcm::LookUp()
m_Ctrltb1->GetDlgItem(IDC_INJECT)->EnableWindow(FALSE);
m_Ctrltb2->GetDlgItem(IDC_SHOFEL2)->EnableWindow(FALSE);
m_Ctrltb2->GetDlgItem(IDC_MOUNT_SD)->EnableWindow(FALSE);
m_Ctrltb2->GetDlgItem(IDC_DUMP_BISKEY)->EnableWindow(FALSE);
m_Ctrltb3->GetDlgItem(ID_INSTALL_DRIVER)->EnableWindow(TRUE);
// Delay Auto inject if needed
if (AUTOINJECT_CURR) DELAY_AUTOINJECT = TRUE;
@ -654,6 +754,8 @@ void TegraRcm::LookUp()
// Status changed to "RCM Detected"
if (rc == 0)
{
AppendLogBox(TEXT("RCM Device detected\r\n"));
BitmapDisplay(RCM_DETECTED);
CString file;
@ -665,7 +767,7 @@ void TegraRcm::LookUp()
if(AUTOINJECT_CURR) DELAY_AUTOINJECT = TRUE;
else DELAY_AUTOINJECT = FALSE;
}
if (DELAY_AUTOINJECT && file.GetLength() > 0)
if (DELAY_AUTOINJECT && file.GetLength() > 0 && AUTOINJECT_CURR)
{
BitmapDisplay(LOADING);
@ -678,7 +780,8 @@ void TegraRcm::LookUp()
if (rc >= 0)
{
BitmapDisplay(LOADED);
SendUserMessage("Payload injected !", VALID);
//SendUserMessage("Payload injected !", VALID);
AppendLogBox(TEXT("Payload successfully injected\r\n"));
if (!CmdShow) ShowTrayIconBalloon(TEXT("Payload injected"), TEXT(" "), 1000, NIIF_INFO);
WAITING_RECONNECT = TRUE;
}
@ -686,15 +789,19 @@ void TegraRcm::LookUp()
{
BitmapDisplay(LOAD_ERROR);
string s = "Error while injecting payload (RC=" + std::to_string(rc) + ")";
CString error = TEXT("Error while injecting payload");
CString rc_str;
rc_str.Format(L"%d", rc);
CString error = TEXT("Error while injecting payload (RC=") + rc_str + TEXT(")");
if (!CmdShow) ShowTrayIconBalloon(TEXT("Error"), error, 1000, NIIF_ERROR);
SendUserMessage(s.c_str(), INVALID);
//SendUserMessage(s.c_str(), INVALID);
AppendLogBox(error);
}
DELAY_AUTOINJECT = FALSE;
}
else
{
SendUserMessage("Waiting for user action");
SendUserMessage(labels[20].name);
}
}
// Status changed to "RCM not detected" or "USB driver KO"
@ -704,6 +811,7 @@ void TegraRcm::LookUp()
if (rc > -5)
{
BitmapDisplay(DRIVER_KO);
AppendLogBox(TEXT("RCM device detected but APX driver is not installed\r\n"));
InstallDriver();
}
else
@ -711,12 +819,15 @@ void TegraRcm::LookUp()
if (LookForAPXDevice())
{
BitmapDisplay(DRIVER_KO);
AppendLogBox(TEXT("RCM device detected but APX driver is not installed\r\n"));
InstallDriver();
}
else
{
BitmapDisplay(RCM_NOT_DETECTED);
if (FIRST_LOOKUP) SendUserMessage("Waiting for device in RCM mode");;
if (!FIRST_LOOKUP) AppendLogBox(TEXT("RCM device disconnected\r\n"));
else AppendLogBox(TEXT("No RCM device detected\r\n"));
if (FIRST_LOOKUP) SendUserMessage(labels[21].name);
}
}
}
@ -733,7 +844,7 @@ void TegraRcm::LookUp()
//
// Smasher => TegraRcmSmash.exe calls
//
int TegraRcm::Smasher(TCHAR args[])
int TegraRcm::Smasher(TCHAR args[4096], BOOL bInheritHandles)
{
if (WAITING_RECONNECT)
{
@ -747,11 +858,28 @@ int TegraRcm::Smasher(TCHAR args[])
}
WAITING_RECONNECT = FALSE;
}
// This should fix RC-50 issue, ! At last.
TCHAR szPath[_MAX_PATH];
VERIFY(::GetModuleFileName(AfxGetApp()->m_hInstance, szPath, _MAX_PATH));
CString csPathf(szPath);
int nIndex = csPathf.ReverseFind(_T('\\'));
if (nIndex > 0) csPath = csPathf.Left(nIndex);
else csPath.Empty();
CString csPath2(csPath);
csPath.Append(TEXT(".\\TegraRcmSmash.exe "));
TCHAR cmd[4096];
_tcscpy_s(cmd, 4095, csPath);
lstrcat(cmd, args);
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
TCHAR *rfile = GetAbsolutePath(TEXT("out.log"), CSIDL_APPDATA);
remove(CT2A(rfile));
PROCESS_INFORMATION pi;
STARTUPINFO si;
BOOL ret = FALSE;
@ -761,20 +889,24 @@ int TegraRcm::Smasher(TCHAR args[])
si.cb = sizeof(STARTUPINFO);
si.dwFlags |= STARTF_USESTDHANDLES;
si.hStdInput = NULL;
if (bInheritHandles) {
HANDLE h = CreateFile(rfile,
GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
&sa,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
si.hStdError = h;
si.hStdOutput = h;
}
// This should fix RC-50 issue, ! At last.
TCHAR szPath[_MAX_PATH];
VERIFY(::GetModuleFileName(AfxGetApp()->m_hInstance, szPath, _MAX_PATH));
CString csPathf(szPath);
int nIndex = csPathf.ReverseFind(_T('\\'));
if (nIndex > 0) csPath = csPathf.Left(nIndex);
else csPath.Empty();
csPath.Append(TEXT(".\\TegraRcmSmash.exe "));
TCHAR cmd[MAX_PATH];
_tcscpy_s(cmd, csPath);
lstrcat(cmd, args);
ret = CreateProcess(NULL, cmd, NULL, NULL, FALSE, flags, NULL, NULL, &si, &pi);
CString argsStr(args);
CString msgStr(TEXT("Invoking TegraRcmSmash.exe with args : ") + argsStr + TEXT("\r\n"));
AppendLogBox(msgStr);
ret = CreateProcess(NULL, cmd, NULL, NULL, bInheritHandles, flags, NULL, NULL, &si, &pi);
int rc = -50;
if (NULL != ret)
{
@ -802,8 +934,7 @@ int TegraRcm::Smasher(TCHAR args[])
CloseHandle(pi.hThread);
}
else {
int lastErrorCode = GetLastError();
int lastErrorCode = GetLastError();
LPWSTR lpMsgBuf = NULL;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL,
@ -814,9 +945,14 @@ int TegraRcm::Smasher(TCHAR args[])
NULL);
std::string MyString = CW2A(lpMsgBuf);
std::string intStr = std::to_string(lastErrorCode);
AppendLog(intStr);
AppendLog(MyString);
//AppendLog(intStr);
//AppendLog(MyString);
CString CLogBuf(lpMsgBuf);
msgStr = TEXT("Error : ") + CLogBuf + TEXT("\r\n");
}
if (bInheritHandles) {
UpdateLogBox();
}
return rc;
}
@ -919,7 +1055,7 @@ TCHAR* TegraRcm::GetAbsolutePath(TCHAR* relative_path, DWORD dwFlags)
{
//
//
BOOL PORTABLE = FALSE;
BOOL PORTABLE = TRUE;
//
//
@ -989,7 +1125,7 @@ char* TegraRcm::GetRelativeFilename(char *currentDirectory, char *absoluteFilena
if (currentDirectory[0] != absoluteFilename[0])
{
// not on the same drive, so only absolute filename will do
strcpy(relativeFilename, absoluteFilename);
strcpy_s(relativeFilename, MAX_FILENAME_LEN, absoluteFilename);
return relativeFilename;
}
// they are on the same drive, find out how much of the current directory
@ -1010,7 +1146,7 @@ char* TegraRcm::GetRelativeFilename(char *currentDirectory, char *absoluteFilena
// file name should not have a leading one...
i++;
}
strcpy(relativeFilename, &absoluteFilename[i]);
strcpy_s(relativeFilename, MAX_FILENAME_LEN, &absoluteFilename[i]);
return relativeFilename;
}
// The file is not in a child directory of the current directory, so we
@ -1055,6 +1191,6 @@ char* TegraRcm::GetRelativeFilename(char *currentDirectory, char *absoluteFilena
relativeFilename[rfMarker++] = SLASH;
}
// copy the rest of the filename into the result string
strcpy(&relativeFilename[rfMarker], &absoluteFilename[afMarker]);
strcpy_s(&relativeFilename[rfMarker], MAX_FILENAME_LEN, &absoluteFilename[afMarker]);
return relativeFilename;
}

View file

@ -17,6 +17,7 @@
#include <Strsafe.h>
#include "afxcmn.h"
#include <tlhelp32.h>
#pragma comment (lib, "setupapi.lib")
class TegraRcm
@ -30,6 +31,9 @@ public:
int GetRcmStatus();
ULONGLONG GetDllVersion(LPCTSTR lpszDllName);
TCHAR* GetAbsolutePath(TCHAR* relative_path, DWORD dwFlags);
void SetLocale();
void AppendLogBox(CString line);
void UpdateLogBox();
string GetPreset(string param);
void InstallDriver();
BOOL LookForAPXDevice();
@ -41,7 +45,7 @@ public:
void SaveFavorites();
void BitmapDisplay(int IMG);
void LookUp();
int Smasher(TCHAR args[]);
int Smasher(TCHAR args[], BOOL bInheritHandles = TRUE);
char* GetRelativeFilename(char *currentDirectory, char *absoluteFilename);
@ -60,7 +64,7 @@ public:
BOOL SetTrayIcon(WORD wIconID);
void ShowContextMenu(HWND hWnd);
BOOL DestroyTrayIcon();
LRESULT OnTrayIconEvent(UINT wParam, LPARAM lParam);
LRESULT OnTrayIconEvent(WPARAM wParam, LPARAM lParam);
BOOL PAUSE_LKP_DEVICE = FALSE;
BOOL AUTOINJECT_CURR = FALSE;
@ -68,6 +72,7 @@ public:
BOOL WAITING_RECONNECT = FALSE;
BOOL ASK_FOR_DRIVER = FALSE;
BOOL MIN_TO_TRAY_CURR = FALSE;
BOOL LOGGING_CURR = FALSE;
CString csPath;
COLORREF LabelColor = RGB(0, 0, 0);
@ -82,6 +87,38 @@ public:
CDialog* m_Ctrltb1;
CDialog* m_Ctrltb2;
CDialog* m_Ctrltb3;
struct Label {
int uid;
string name;
};
Label labels[23] = {
{ 0, "TegraRcmGUI"},
{ 1, "No file selected" },
{ 2, "File doesn't exist" },
{ 3, "Injecting payload..." },
{ 4, "Payload injected !" },
{ 5, "Error while injecting payload" },
{ 6, "Favorite already exists" },
{ 7, "Favorite added" },
{ 8, "Favorite removed" },
{ 9, "UMS Tool injected" },
{ 10, "Linux coreboot not found in \\shofel2 dir" },
{ 11, "Kernel not found in shofel2 directory. Do you want to automatically download arch linux kernel from SoulCipher repo ?" },
{ 12, "Kernel not found" },
{ 13, "Loading coreboot. Please wait." },
{ 14, "Coreboot injected. Waiting 5s for device..." },
{ 15, "Coreboot loaded " },
{ 16, "Error" },
{ 17, "Error while loading imx_usb.exe" },
{ 18, "APX device driver is missing. Do you want to install it now ?" },
{ 19, "APX driver not found !" },
{ 20, "Waiting for user action" },
{ 21, "Waiting for device in RCM mode" },
{ 22, "Payload already injected. Are you sure you want to overwrite the stack again ?" }
};
private:
HWND m_hWnd;
TegraRcmSmash m_Device;

Binary file not shown.

View file

@ -0,0 +1,40 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TegraRcmGUI", "TegraRcmGUI.vcxproj", "{2C091C5B-378F-44D0-91F2-53489BA7B83C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
Static Debug|x64 = Static Debug|x64
Static Debug|x86 = Static Debug|x86
Static Release|x64 = Static Release|x64
Static Release|x86 = Static Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x64.ActiveCfg = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x64.Build.0 = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x86.ActiveCfg = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Debug|x86.Build.0 = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x64.ActiveCfg = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x64.Build.0 = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x86.ActiveCfg = Release|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Release|x86.Build.0 = Release|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x64.ActiveCfg = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x64.Build.0 = Debug|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x86.ActiveCfg = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Debug|x86.Build.0 = Debug|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x64.ActiveCfg = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x64.Build.0 = Release|x64
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x86.ActiveCfg = Release|Win32
{2C091C5B-378F-44D0-91F2-53489BA7B83C}.Static Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -1,288 +1,292 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2C091C5B-378F-44D0-91F2-53489BA7B83C}</ProjectGuid>
<RootNamespace>TegraRcmGUI</RootNamespace>
<Keyword>MFCProj</Keyword>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>Version.lib;libusbK.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>Version.lib;libusbK.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<EnableUAC>true</EnableUAC>
<UACUIAccess>false</UACUIAccess>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>Version.lib;libusbK.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="DialogTab01.h" />
<ClInclude Include="DialogTab02.h" />
<ClInclude Include="DialogTab03.h" />
<ClInclude Include="libusbk_int.h" />
<ClInclude Include="MyTabCtrl.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="res\BitmapPicture.h" />
<ClInclude Include="ScopeGuard.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="TegraRcm.h" />
<ClInclude Include="TegraRcmGUI.h" />
<ClInclude Include="TegraRcmGUIDlg.h" />
<ClInclude Include="TegraRcmSmash.h" />
<ClInclude Include="Types.h" />
<ClInclude Include="Win32Def.h" />
<ClInclude Include="WinHandle.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DialogTab01.cpp" />
<ClCompile Include="DialogTab02.cpp" />
<ClCompile Include="DialogTab03.cpp" />
<ClCompile Include="MyTabCtrl.cpp" />
<ClCompile Include="res\BitmapPicture.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="TegraRcm.cpp" />
<ClCompile Include="TegraRcmGUI.cpp" />
<ClCompile Include="TegraRcmGUIDlg.cpp" />
<ClCompile Include="TegraRcmSmash.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="TegraRcmGUI.rc">
<DeploymentContent>false</DeploymentContent>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<None Include="res\TegraRcmGUI.rc2" />
</ItemGroup>
<ItemGroup>
<Image Include="..\..\..\..\..\..\Visual Studio 2015\Projects\TegraRcmGUI\TegraRcmGUI\res\TegraRcmGUI.ico" />
<Image Include="res\add.ico" />
<Image Include="res\bitmap2.bmp" />
<Image Include="res\browse.ico" />
<Image Include="res\delete.ico" />
<Image Include="res\driver_ko.bmp" />
<Image Include="res\driver_ko_2.bmp" />
<Image Include="res\error.bmp" />
<Image Include="res\error_2.bmp" />
<Image Include="res\icon1.ico" />
<Image Include="res\init_log.bmp" />
<Image Include="res\init_logo.bmp" />
<Image Include="res\init_logo_2.bmp" />
<Image Include="res\linux_icon.ico" />
<Image Include="res\loaded.bmp" />
<Image Include="res\loaded_2.bmp" />
<Image Include="res\loading.bmp" />
<Image Include="res\loading_2.bmp" />
<Image Include="res\rcm_detected.bmp" />
<Image Include="res\rcm_detected_2.bmp" />
<Image Include="res\rcm_undetected.bmp" />
<Image Include="res\rcm_undetected_2.bmp" />
<Image Include="res\status.ico" />
<Image Include="res\TegraRcmGUI.ico" />
<Image Include="res\tray_ico_connected.ico" />
<Image Include="res\tray_ico_not_connected.ico" />
<Image Include="res\usb_icon.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties RESOURCE_FILE="TegraRcmGUI.rc" />
</VisualStudio>
</ProjectExtensions>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2C091C5B-378F-44D0-91F2-53489BA7B83C}</ProjectGuid>
<RootNamespace>TegraRcmGUI</RootNamespace>
<Keyword>MFCProj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)\Output\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Output\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)\Output\$(Platform)\$(Configuration)\</OutDir>
<IntDir>Output\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>Version.lib;libusbK.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>Version.lib;libusbK.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>Version.lib;libusbK.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
<EnableUAC>true</EnableUAC>
<UACUIAccess>false</UACUIAccess>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(LIBUSBK_DIR)\includes\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(LIBUSBK_DIR)\bin\lib\$(PlatformShortName.Replace('x64','amd64'))\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>Version.lib;libusbK.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="DialogTab01.h" />
<ClInclude Include="DialogTab02.h" />
<ClInclude Include="DialogTab03.h" />
<ClInclude Include="libusbk_int.h" />
<ClInclude Include="MyTabCtrl.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="res\BitmapPicture.h" />
<ClInclude Include="ScopeGuard.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="TegraRcm.h" />
<ClInclude Include="TegraRcmGUI.h" />
<ClInclude Include="TegraRcmGUIDlg.h" />
<ClInclude Include="TegraRcmSmash.h" />
<ClInclude Include="Types.h" />
<ClInclude Include="Win32Def.h" />
<ClInclude Include="WinHandle.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="DialogTab01.cpp" />
<ClCompile Include="DialogTab02.cpp" />
<ClCompile Include="DialogTab03.cpp" />
<ClCompile Include="MyTabCtrl.cpp" />
<ClCompile Include="res\BitmapPicture.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="TegraRcm.cpp" />
<ClCompile Include="TegraRcmGUI.cpp" />
<ClCompile Include="TegraRcmGUIDlg.cpp" />
<ClCompile Include="TegraRcmSmash.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="TegraRcmGUI.rc">
<DeploymentContent>false</DeploymentContent>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<None Include="res\TegraRcmGUI.rc2" />
</ItemGroup>
<ItemGroup>
<Image Include="..\..\..\..\..\..\Visual Studio 2015\Projects\TegraRcmGUI\TegraRcmGUI\res\TegraRcmGUI.ico" />
<Image Include="res\add.ico" />
<Image Include="res\bitmap2.bmp" />
<Image Include="res\browse.ico" />
<Image Include="res\bunch-of-keys.ico" />
<Image Include="res\delete.ico" />
<Image Include="res\driver_ko.bmp" />
<Image Include="res\driver_ko_2.bmp" />
<Image Include="res\error.bmp" />
<Image Include="res\error_2.bmp" />
<Image Include="res\icon1.ico" />
<Image Include="res\init_log.bmp" />
<Image Include="res\init_logo.bmp" />
<Image Include="res\init_logo_2.bmp" />
<Image Include="res\linux_icon.ico" />
<Image Include="res\loaded.bmp" />
<Image Include="res\loaded_2.bmp" />
<Image Include="res\loading.bmp" />
<Image Include="res\loading_2.bmp" />
<Image Include="res\rcm_detected.bmp" />
<Image Include="res\rcm_detected_2.bmp" />
<Image Include="res\rcm_undetected.bmp" />
<Image Include="res\rcm_undetected_2.bmp" />
<Image Include="res\status.ico" />
<Image Include="res\TegraRcmGUI.ico" />
<Image Include="res\tray_ico_connected.ico" />
<Image Include="res\tray_ico_not_connected.ico" />
<Image Include="res\usb_icon.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties RESOURCE_FILE="TegraRcmGUI.rc" />
</VisualStudio>
</ProjectExtensions>
</Project>

View file

@ -194,5 +194,8 @@
<Image Include="res\init_logo_2.bmp">
<Filter>Resource Files</Filter>
</Image>
<Image Include="res\bunch-of-keys.ico">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
</Project>

View file

@ -101,6 +101,10 @@ END_MESSAGE_MAP()
//
BOOL CTegraRcmGUIDlg::OnInitDialog()
{
m_TegraRcm = new TegraRcm(this);
m_TegraRcm->AppendLog("new TegraRcm()");
CDialog::OnInitDialog();
// Accessibility
@ -123,7 +127,7 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
CRect rc;
AfxGetMainWnd()->GetWindowRect(rc);
int width = rc.Width();
int fontSize = width * 0.031;
if (width < 400)
{
RCM_BITMAP0.SetBitmap(INIT_LOGO_2);
@ -144,6 +148,26 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
RCM_BITMAP5.SetBitmap(LOADED);
RCM_BITMAP6.SetBitmap(LOAD_ERROR);
}
// Log Box
LOGFONT lf;
/*
CEdit* pBox = (CEdit*)AfxGetMainWnd()->GetDlgItem(IDC_LOG_BOX);
CFont* old = pBox->GetFont();
old->GetLogFont(&lf);
CFont newfont;
newfont.CreateFont(lf.lfHeight + 30, 0, lf.lfEscapement, lf.lfOrientation, lf.lfWeight, lf.lfItalic, lf.lfUnderline, lf.lfStrikeOut, lf.lfCharSet, lf.lfOutPrecision, lf.lfClipPrecision, lf.lfQuality, lf.lfPitchAndFamily, lf.lfFaceName);
pBox->SetFont(&newfont);
*/
CEdit* pBox = (CEdit*)AfxGetMainWnd()->GetDlgItem(IDC_LOG_BOX);
CFont *myFont = new CFont();
myFont->CreateFont(fontSize, 0, 0, 0, FW_NORMAL, false, false,
0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FIXED_PITCH | FF_MODERN, _T("Verdana"));
pBox->SetFont(myFont);
// Menu
@ -167,10 +191,6 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_TegraRcm = new TegraRcm(this);
m_TegraRcm->AppendLog("new TegraRcm()");
// Kill other running process of app
m_TegraRcm->KillRunningProcess(TEXT("TegraRcmGUI.exe"));
@ -204,6 +224,8 @@ BOOL CTegraRcmGUIDlg::OnInitDialog()
// Start timer to check RCM status every second
CTegraRcmGUIDlg::StartTimer();
return TRUE;
}
void CTegraRcmGUIDlg::OnSysCommand(UINT nID, LPARAM lParam)
@ -220,18 +242,25 @@ HBRUSH CTegraRcmGUIDlg::OnCtlColor(CDC* pDC, CWnd *pWnd, UINT nCtlColor)
switch (nCtlColor)
{
case CTLCOLOR_STATIC:
/*
if (GetDlgItem(IDC_RAJKOSTO)->GetSafeHwnd() == pWnd->GetSafeHwnd() || GetDlgItem(SEPARATOR)->GetSafeHwnd() == pWnd->GetSafeHwnd())
{
pDC->SetTextColor(RGB(192, 192, 192));
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
*/
if (GetDlgItem(INFO_LABEL)->GetSafeHwnd() == pWnd->GetSafeHwnd())
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(m_TegraRcm->LabelColor);
return (HBRUSH) CreateSolidBrush( WhiteRGB );
}
if (GetDlgItem(IDC_LOG_BOX)->GetSafeHwnd() == pWnd->GetSafeHwnd())
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)CreateSolidBrush(WhiteRGB);
}
if (GetDlgItem(IDC_STATUS_BG)->GetSafeHwnd() == pWnd->GetSafeHwnd())
{
return (HBRUSH)CreateSolidBrush(WhiteRGB);
@ -298,7 +327,7 @@ void CTegraRcmGUIDlg::OnClose()
PostQuitMessage(0);
}
LRESULT CTegraRcmGUIDlg::OnTrayIconEvent(UINT wParam, LPARAM lParam)
LRESULT CTegraRcmGUIDlg::OnTrayIconEvent(WPARAM wParam, LPARAM lParam)
{
return m_TegraRcm->OnTrayIconEvent(wParam, lParam);
}
@ -350,6 +379,8 @@ void CTegraRcmGUIDlg::MountCommand()
if (m_TegraRcm != NULL)
{
DialogTab02 *pt = (DialogTab02*)m_TegraRcm->m_Ctrltb2;
CComboBox* pmyComboBox = (CComboBox*)pt->GetDlgItem(ID_UMS_COMBO);
pmyComboBox->SetCurSel(3);
pt->OnBnClickedMountSd();
}
}
@ -415,7 +446,7 @@ void CTegraRcmGUIDlg::StopTimer()
KillTimer(ID_TIMER_MINUTE);
KillTimer(ID_TIMER_SECONDS);
}
void CTegraRcmGUIDlg::OnTimer(UINT nIDEvent)
void CTegraRcmGUIDlg::OnTimer(UINT_PTR nIDEvent)
{
// Each second
if (nIDEvent == ID_TIMER_SECONDS)

View file

@ -90,14 +90,14 @@ protected:
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnDestroy();
afx_msg LRESULT OnTrayIconEvent(UINT wParam, LPARAM lParam);
afx_msg LRESULT OnTrayIconEvent(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
afx_msg LRESULT OnQueryEndSession(WPARAM wParm, LPARAM lParm);
public:
void StartTimer();
void StopTimer();
void OnTimer(UINT nIDEvent);
void OnTimer(UINT_PTR nIDEvent);
int STATUS;
afx_msg void BitmapDisplay(int IMG);
@ -125,4 +125,6 @@ public:
private:
MyTabCtrl m_tbCtrl;
TegraRcm *m_TegraRcm;
public:
afx_msg void OnEnChangeLogBox();
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

View file

@ -0,0 +1,3 @@
cd shofel2
imx_usb.exe -c conf/
ping 127.0.0.1 -n 6 > nul

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,14 @@
[load:PH_0]
if=/u-boot.elf
skip=0x00010000
count=0x0006e13f
dst=0x80110000
[load:script]
if=ums_emmc_boot0.scr.img
dst=0x80100000
[boot:ENTRY]
pc=0x80110000
maxMemoryFreq=200
pwroffHoldTime=4

View file

@ -0,0 +1,14 @@
[load:PH_0]
if=/u-boot.elf
skip=0x00010000
count=0x0006e13f
dst=0x80110000
[load:script]
if=ums_emmc_boot1.scr.img
dst=0x80100000
[boot:ENTRY]
pc=0x80110000
maxMemoryFreq=-1600
pwroffHoldTime=4

View file

@ -0,0 +1,13 @@
[load:PH_0]
if=/u-boot.elf
skip=0x00010000
count=0x0006e13f
dst=0x80110000
[load:script]
if=ums_emmc.scr.img
dst=0x80100000
[boot:ENTRY]
pc=0x80110000
pwroffHoldTime=4

View file

@ -0,0 +1 @@
ums 1 mmc 0.0

Binary file not shown.

View file

@ -0,0 +1 @@
ums 1 mmc 0.1

Binary file not shown.

View file

@ -0,0 +1 @@
ums 1 mmc 0.2

Binary file not shown.

@ -0,0 +1 @@
Subproject commit ed57dd5032840ab7084bcd76e8b9408dd7245958