但我在测试其他一些需要带配置文件之类的程序时发现了一个问题,就是当要启动的这个软件所带的配置信息过大时,系统maekimg之后产生的NK.BIN文件过大,在对系统升级时发现升级不了(目前是在我的板上出现的,其他板不一定会有此问题)。为此自己在这做个操作记录方便日后有需要时不再犯同样错误,对此种情况,可以利用网上一段从SD卡启动的代码来解决。
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
PROCESS_INFORMATION processinfo;
WIN32_FIND_DATA fd;
HANDLE hd=INVALID_HANDLE_VALUE;
lpCmdLine =_T(" Card\\ShipNavigation\\ShipNavigation.exe");//根据相应要启动的程序修改此路径
int iCount = 20;//这个值要设得足够大,否则可能等不到SD卡的加载
//等待SD卡文件系统加载完成
while(iCount--)
{
hd=::FindFirstFile(lpCmdLine,&fd);
Sleep(500);
if(INVALID_HANDLE_VALUE!=hd) break;
}
if(0==iCount)
{
CreateProcess(L");
return 0;
}
FindClose(hd);
SHELLEXECUTEINFO ShExeInfo={0};
ShExeInfo.cbSize=sizeof(SHELLEXECUTEINFO);
ShExeInfo.fMask=SEE_MASK_NOCLOSEPROCESS;
ShExeInfo.hwnd=NULL;
ShExeInfo.lpVerb=NULL;
ShExeInfo.lpFile=lpCmdLine;
ShExeInfo.lpParameters=L"";
ShExeInfo.lpDirectory=NULL;
ShExeInfo.nShow=SW_SHOW;
ShExeInfo.hInstApp=NULL;
ShellExecuteEx(&ShExeInfo);
return 0;
}
我在这次测试中发现只有在platform.reg中加入
[HKEY_LOCAL_MACHINE\init]
"Launch80"="autoRun.exe"
"Depend80"=hex:1e,00
重现 Make Image 才能正确启动。网上说通过快捷方式也可启动我一直没成功。