0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术应用程序及配置文件的生产自动拷贝简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-07 11:03 次阅读

为了帮助用户提高生产测试效率,我们提供了代为客户拷贝应用程序的服务,在主板出厂之前我们会将用户提交的所有程序和文件拷贝到用户指定的系统目录中,用户拿到主板后可直接装机测试,大大节省了生产测试时间。客户也可参考此方法,在自己的整机生产中实现应用程序及配置文件的自动拷贝。本文以下介绍在CE平台实现应用程序及配置文件自动拷贝的具体步骤。

英创主板处于调试模式启动时,会查询系统的usbdisk根目录下是否有名为autotest.txt的配置文件,如果配置文件存在则会执行文件中指定的exe程序,程序的拷贝正是利用系统的这一功能自动实现的。

实现程序的自动拷贝需要以下几个步骤:

1、编写autotest.txt配置文件

配置文件中需要指定要启动的exe完整路径,同时可配置系统网口1的网络参数,下面是示例配置。

[LOCAL_MACHINE]
DefaultGateway="192.168.201.19"
IPAddress="192.168.201.220"
SubnetMask="255.255.255.0"
[USER_EXE]
Name="\usbdisk\autocfg.exe"
Parameters=""
[SYSTEM]
Store="25"

2、编写自动配置程序

配置程序autocft.exe一般需要实现将应用程序拷贝到主板指定目录的功能,同时也可完成用户自定义的一些配置功能,比如增加特定注册表、烧写开机画面等。下面是一些示例代码可供用户参考。

AutoCopy函数实现将当前执行的配置程序所在目录的全部文件拷贝到系统的nandflash目录中。

DWORD AutoCopy( )
{
DWORD dwResult;
TCHAR szCurrentDir[MAX_PATH];
TCHAR szLocalFile[MAX_PATH];
TCHAR szNewFile[MAX_PATH];
TCHAR szDisFolder[MAX_PATH];
CHAR localFile[MAX_PATH];
CHAR newFile[MAX_PATH];
int i1, diskType;
dwResult = GetModuleFileName( NULL,szCurrentDir, sizeof( szCurrentDir ) );
if( 0 == dwResult )
{
printf("GetModuleFileName failure!\r\n" );
return -1;
}
TCHAR *pch = _tcsrchr( szCurrentDir, '\\' );
*(pch+1) = '\0';
_tcslwr(szCurrentDir);
pch = _tcsstr( szCurrentDir, _T("usb") );
if( NULL != pch )
{
_tcscpy( szLocalFile, szCurrentDir );
_tcscat( szLocalFile, _T("*.*"));
diskType = 1;
GetFolderName(diskType, szDisFolder);
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
BOOL BFind;
hFind = FindFirstFile( szLocalFile, &FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
BFind = TRUE;
while( BFind )
{
if( FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY )
{
_tcscpy( szLocalFile, szCurrentDir );
_tcscat( szLocalFile, FindFileData.cFileName );
_stprintf(szNewFile, _T("\\%s\"), szDisFolder);
_tcscat( szNewFile, FindFileData.cFileName );
dwResult = CopyFile( szLocalFile, szNewFile, FALSE );
memset( localFile, 0, sizeof(localFile));
i1 = wcslen( szLocalFile );
wcstombs( localFile, szLocalFile, i1 );
memset( newFile, 0, sizeof(newFile));
i1 = wcslen( szNewFile );
wcstombs( newFile, szNewFile, i1 );
if( dwResult == 0 )
{
printf("Copy %s to %s failure!\r\n", localFile, newFile );
return -1;
}
else
{
printf("Copy %s to %s successful!\r\n", localFile, newFile );
}
}
BFind = FindNextFile( hFind, &FindFileData );
}
}
FindClose( hFind );
}
return 0;
}
// Get "Folder" name from register.
// type = 0: SDMemory
// type = 1: Nand
// type = 2: USB
// type = 3: EMMC
//
void GetFolderName( int type, LPWSTR szName )
{
HKEY hKey = NULL;
DWORD dwType=REG_SZ;
DWORD size=100;
DWORD ret;
TCHAR szFolderPath[80];
switch( type )
{
case 0:
_tcscpy( szFolderPath, REG_SDFOLDER_PATH );
break;
case 1:
_tcscpy( szFolderPath, REG_NANDFOLDER_PATH );
break;
case 2:
_tcscpy( szFolderPath, REG_USBFOLDER_PATH );
break;
case 3:
_tcscpy( szFolderPath, REG_EMMC_PATH );
break;
default:
return;
}
//get the folder Name from registry in case BSP is using non-default name
if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPWSTR)szFolderPath,
0, NULL, REG_OPTION_NON_VOLATILE, 0, NULL, &hKey, NULL))
{
ret=RegQueryValueEx(hKey, L"Folder", 0, &dwType, (BYTE*)szName, &size);
if (ret!=ERROR_SUCCESS)
RETAILMSG(1,(L"RegQueryValueEx returned error %d dwType=%d size=%dbufSz=%d\r\n", ret,dwType,size,sizeof(szName)));
}
if( hKey!=NULL )
RegCloseKey(hKey);
return;
}

英创主板支持开机画面在线更新,《WinCE工控主板在线更新开机画面(2017新版)》中提到的lu程序,用户也可以在配置程序中直接调用实现开机画面的自动更新,下面是利用lu更新U盘目录下usersplash800480.bmp图片的示例代码。

PROCESS_INFORMATION processInfo;
TCHAR szProgram[] = _T("lu.exe");
TCHAR szCmdLine[100] = _T("usbdisk\\usersplash800480.bmp");
BOOL result = CreateProcess( szProgram, szCmdLine,NULL, NULL, FALSE,CREATE_NEW_CONSOLE, NULL, NULL, NULL, &processInfo );
if( result == 0 )
{
//执行失败...
}

3、将autotest.txt放在U盘根目录,同时将配置程序autocft.exe和需要拷贝到主板上的应用程序及文件放在U盘指定目录中。

4、将U盘连接到英创主板,主板在调试模式启动后会自动执行用户指定的配置程序,完成系统配置工作。

系统默认只会执行一次查询autotest.txt启动配置程序的过程,如果希望这个功能总是有效,可在配置程序开始处增加一个清除注册表标志的工作,当系统注册表项HKEY_LOCAL_MACHINE\Emtronix或HKEY_LOCAL_MACHINE\Wstartup下的Count等于0时,系统在调试模式下就会查询U盘中的autotest.txt配置文件。下面是count清零代码。

HKEY hKey;
DWORD dwVal, dwRet;
DWORD dwType = REG_DWORD;
DWORD dwBufLen = sizeof(DWORD);
if((dwRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("Emtronix"), 0, 0, &hKey)) != ERROR_SUCCESS)
{
dwRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("Wstartup"), 0, 0, &hKey);
}
if(dwRet == ERROR_SUCCESS)
{
dwVal = 0;
RegSetValueEx(hKey, _T("Count"), 0, dwType, (BYTE*)&dwVal, dwBufLen);
RegCloseKey(hKey); // close registry
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6086

    浏览量

    35573
收藏 人收藏

    相关推荐

    配置Skywalking告警

    Skywalking环境 对接.NET6 程序 接入微服务网关+后台微服务 添加依赖 拷贝配置文件并简单修改 在launch
    的头像 发表于 01-16 10:58 124次阅读
    <b class='flag-5'>配置</b>Skywalking告警

    迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-配置创建私有配置文件

    私有配置文件,用来填写一些驱动的默认配置信息。HDF 框架在加载驱动时,会获取相应的配置信息并将其保存在 HdfDeviceObject 的 property 中。这些配置信息通过 B
    发表于 01-10 11:13

    linux网卡配置文件

    网卡配置文件     网卡目录[root@localhost opt]# ls /etc/sysconfig/network-scripts/网卡文件名字,和我们ifconfig看到的一样
    的头像 发表于 12-10 10:09 287次阅读

    docker-compose配置文件内容详解以及常用命令介绍

    一、Docker Compose 简介 Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。通过一个  docker-compose.yml  文件,您可以配置
    的头像 发表于 12-02 09:29 1066次阅读
    docker-compose<b class='flag-5'>配置文件</b>内容详解以及常用命令介绍

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 548次阅读

    springboot的项目如何既要用jar包启动,同时还可以为不同的机房设置不同的配置文件

    作者:京东科技 李意文 1、首先先把配置文件从jar中抽离 示例代码:   org.apache.maven.plugins maven-jar-plugin 3.2.0
    的头像 发表于 10-19 16:48 576次阅读
    springboot的项目如何既要用jar包启动,同时还可以为不同的机房设置不同的<b class='flag-5'>配置文件</b>

    如何使用SCP和Rsync远程拷贝文件

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你
    的头像 发表于 09-29 15:54 475次阅读

    HID over GATT配置文件(HOGP)低功耗蓝牙

    电子发烧友网站提供《HID over GATT配置文件(HOGP)低功耗蓝牙.pdf》资料免费下载
    发表于 09-26 11:01 1次下载
    HID over GATT<b class='flag-5'>配置文件</b>(HOGP)低功耗蓝牙

    确定LDO的任务配置文件兼容性

    电子发烧友网站提供《确定LDO的任务配置文件兼容性.pdf》资料免费下载
    发表于 09-24 10:44 0次下载
    确定LDO的任务<b class='flag-5'>配置文件</b>兼容性

    鸿蒙开发Ability Kit程序框架服务:FA模型应用配置文件

    应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、
    的头像 发表于 06-24 14:49 403次阅读
    鸿蒙开发Ability Kit<b class='flag-5'>程序</b>框架服务:FA模型应用<b class='flag-5'>配置文件</b>

    鸿蒙开发:【Stage模型应用配置文件

    应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、
    的头像 发表于 06-15 09:15 1762次阅读
    鸿蒙开发:【Stage模型应用<b class='flag-5'>配置文件</b>】

    使用Docker部署Go Web应用程序步骤

    大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版和配置文件。而当一个项目中有很多文件的时候,由于很多
    发表于 04-20 09:33 549次阅读
    使用Docker部署Go Web<b class='flag-5'>应用程序</b>步骤

    RX78M组 EtherCAT ETG.5003示例程序固件信息技术

    电子发烧友网站提供《RX78M组 EtherCAT ETG.5003示例程序固件信息技术.pdf》资料免费下载
    发表于 02-21 14:22 1次下载
    RX78M组  EtherCAT ETG.5003示例<b class='flag-5'>程序</b>固件<b class='flag-5'>信息技术</b>

    支持CiA402驱动器配置文件的示例程序用于通过EtherCAT®通信进行电机控制

    电子发烧友网站提供《支持CiA402驱动器配置文件的示例程序用于通过EtherCAT®通信进行电机控制.pdf》资料免费下载
    发表于 02-21 14:21 2次下载
    支持CiA402驱动器<b class='flag-5'>配置文件</b>的示例<b class='flag-5'>程序</b>用于通过EtherCAT®通信进行电机控制

    Linux系统中的配置文件

    系统文件,用于配置主机名与 IP 地址的映射关系。当系统需要解析主机名时,会首先查找 /etc/hosts 文件,如果在该文件中找到了相应的映射关系,则直接使用对应的 IP 地址进行通
    发表于 02-19 17:36 1385次阅读