使用修改后的config.txt文件构建IoT Core映像时发生文件冲突错误

时间:2018-07-31 01:15:00

标签: raspberry-pi windows-10-iot-core windowsiot bsp

我是building a Windows 10 IoT Core image的Raspberry Pi 3B,它需要在EFIESP分区的根目录中包含一个自定义的config.txt文件。

我有edited the MyApp.FilesAndRegKeys.wm.xml file包含经过编辑的config.txt文件,如下所示:

<onecorePackageInfo
    targetPartition="EFIESP"
    releaseType="Production"
    ownerType="OEM" />
<files>
    <file
        destinationDir="$(runtime.bootDrive)"
        source="config.txt"
        name="config.txt" />
</files>

但是buildimage MyApp test命令给出了文件冲突错误:

  

错误:[00:00:01]   onecore \ base \ cbs \ mobile \ iuvalidator \ packagevalidationrules.cpp,   PackageValidationRules :: Rule_DetectFileCollisions,第716行,错误,   错误-检测到文件冲突,在软件包中找到文件'\ config.txt'   “ MyOEMName.MyApp.FilesAndRegKeys”和“ RASPBERRYPI.RPi2.BootFirmware”。

如果我将name="config.txt"更改为name="config2.txt",则没有错误,并且文件创建成功。但是我希望它替换现有文件,而不是创建一个新文件。我在config.txtC:\IoT-ADK-AddonKit的任何地方都看不到原始的C:\BSP文件,因此我不确定如何编辑此现有程序包或强制进行替换。

1 个答案:

答案 0 :(得分:1)

如果要编辑config.txt文件,则可以在映像生成后对其进行编辑。插入已闪烁图像的SD卡。您将在EFIESP驱动器中找到config.txt文件,如下所示:

enter image description here

enter image description here

参考:“ R-Pi configuration file”和“ CONFIG.TXT

更新使用修改后的config.txt文件构建IoT核心版映像

config.txt是在软件包(RASPBERRYPI.RPi2.BootFirmware.cab)中提供的。因此,我们需要使用修改后的config.txt文件重新生成RASPBERRYPI.RPi2.BootFirmware.cab。您可以按照以下步骤操作:

  1. 获取构建RASPBERRYPI.RPi2.BootFirmware.cab所需的所有文件,并将它们复制到文件夹中,例如D:\NewCab。您可以在EFIESP驱动器中找到它们(可以在闪存的SD卡中找到EFIESP驱动器):

enter image description here

  1. 编辑config.txt。
  2. 使用此RPi_UEFI.pkg.xml文件生成新的CAB文件:

<?xml version="1.0" encoding="utf-8"?>

<!--
Copyright (c) Microsoft Corporation.  All rights reserved.
-->
<Package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  Owner="RASPBERRYPI"
  Component="RPi2"
  SubComponent="BootFirmware"
  OwnerType="OEM"
  ReleaseType="Production"
  Platform="RPi2"
  Partition="EFIESP"
  BinaryPartition="false"
  xmlns="urn:Microsoft.WindowsPhone/PackageSchema.v8.00">
  <Components>
    <OSComponent>
      <Files>

        <File
          Source="bootcode.bin"
          Name="bootcode.bin"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="config.txt"
          Name="config.txt"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup.dat"
          Name="fixup.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup_cd.dat"
          Name="fixup_cd.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup_x.dat"
          Name="fixup_x.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="kernel.img"
          Name="kernel.img"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="LICENCE.broadcom"
          Name="LICENCE.broadcom"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start.elf"
          Name="start.elf"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start_cd.elf"
          Name="start_cd.elf"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start_x.elf"
          Name="start_x.elf"
          DestinationDir="$(runtime.root)"/>

      </Files>
    </OSComponent>
  </Components>
</Package>
  1. iot-adk-addonkit中启动IoTCoreShell-arm.cmd并导航到路径D:\NewCab并运行以下命令:

    pkggen RPi_UEFI.pkg.xml

    您将在工作文件夹中看到一个RASPBERRYPI.RPi2.BootFirmware.cab

  2. 使用新生成的RASPBERRYPI.RPi2.BootFirmware.cab替换此路径C:\Program Files (x86)\Windows Kits\10\MSPackages\retail\arm\fre中的默认值

之后,当您构建映像时,将在其中添加已编辑的config.txt。