gitting project in git
This commit is contained in:
476
vitis/bootloader/.cproject
Normal file
476
vitis/bootloader/.cproject
Normal file
@@ -0,0 +1,476 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
|
||||
<cconfiguration id="xilinx.gnu.mb.exe.debug.787148227">
|
||||
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.debug.787148227" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
|
||||
<externalSettings/>
|
||||
|
||||
<extensions>
|
||||
|
||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
</extensions>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
|
||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.debug.787148227" name="Debug" parent="xilinx.gnu.mb.exe.debug">
|
||||
|
||||
<folderInfo id="xilinx.gnu.mb.exe.debug.787148227." name="/" resourcePath="">
|
||||
|
||||
<toolChain id="xilinx.gnu.mb.exe.debug.toolchain.966694998" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.debug.toolchain">
|
||||
|
||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.debug.415755652" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.debug"/>
|
||||
|
||||
<builder buildPath="${workspace_loc:/bootloader}/Debug" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.debug.1737839447" managedBuildOn="true" name="GNU make.Debug" superClass="xilinx.gnu.mb.toolchain.builder.debug"/>
|
||||
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.assembler.debug.1388621966" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.debug">
|
||||
|
||||
<option id="xilinx.gnu.mb.assembler.usele.735244737" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<inputType id="xilinx.gnu.assembler.input.64142705" superClass="xilinx.gnu.assembler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.debug.776270743" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.debug">
|
||||
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1066972995" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1669005533" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1164323226" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.1405857167" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.893069048" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.831207257" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1645871610" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1265612557" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.850348855" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.2018499045" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.692323687" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.642806493" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspInclude}"/>
|
||||
|
||||
</option>
|
||||
|
||||
<inputType id="xilinx.gnu.compiler.input.359278436" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.debug.645805051" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.debug">
|
||||
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.272680176" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.2058355711" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.685400822" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.36663381" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.2145736941" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.502807478" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1371860711" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1781486245" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.2027319371" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.2117027224" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.713055314" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1906149567" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspInclude}"/>
|
||||
|
||||
</option>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.toolchain.archiver.1377463170" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
||||
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.linker.debug.1015034700" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.debug">
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1310310286" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.967549118" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.1008740776" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.813310563" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.249266266" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1074211010" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.181913254" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.66007638" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mul.1141562976" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1501608344" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspLib}"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.314140228" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.1915898335" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
|
||||
<inputType id="xilinx.gnu.linker.input.177269354" superClass="xilinx.gnu.linker.input">
|
||||
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
|
||||
</inputType>
|
||||
|
||||
<inputType id="xilinx.gnu.linker.input.lscript.1358038365" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.debug.104037971" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.debug">
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1106548916" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.1346508353" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.623930981" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.878740057" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1153727488" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1393443009" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.1724752848" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.62238292" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mul.456529428" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.2097513689" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspLib}"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.848637791" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.1204220918" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.size.debug.2090451817" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.debug"/>
|
||||
|
||||
</toolChain>
|
||||
|
||||
</folderInfo>
|
||||
|
||||
<sourceEntries>
|
||||
|
||||
<entry excluding="_ide" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
|
||||
</sourceEntries>
|
||||
|
||||
</configuration>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
|
||||
</cconfiguration>
|
||||
|
||||
<cconfiguration id="xilinx.gnu.mb.exe.release.408304434">
|
||||
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.release.408304434" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
|
||||
<externalSettings/>
|
||||
|
||||
<extensions>
|
||||
|
||||
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
</extensions>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
|
||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.release.408304434" name="Release" parent="xilinx.gnu.mb.exe.release">
|
||||
|
||||
<folderInfo id="xilinx.gnu.mb.exe.release.408304434." name="/" resourcePath="">
|
||||
|
||||
<toolChain id="xilinx.gnu.mb.exe.release.toolchain.1724115306" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.release.toolchain">
|
||||
|
||||
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.release.834753559" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.release"/>
|
||||
|
||||
<builder buildPath="${workspace_loc:/bootloader}/Release" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.release.312320268" managedBuildOn="true" name="GNU make.Release" superClass="xilinx.gnu.mb.toolchain.builder.release"/>
|
||||
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.assembler.release.351712782" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.release">
|
||||
|
||||
<option id="xilinx.gnu.mb.assembler.usele.514181513" superClass="xilinx.gnu.mb.assembler.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<inputType id="xilinx.gnu.assembler.input.1089355912" superClass="xilinx.gnu.assembler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.compiler.release.218609145" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.release">
|
||||
|
||||
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.1918000656" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.1757777751" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.587772732" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.1422909417" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.301172250" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.835711007" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.2050922871" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.2077945380" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.2117224822" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.1948509195" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.331676528" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.610045271" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspInclude}"/>
|
||||
|
||||
</option>
|
||||
|
||||
<inputType id="xilinx.gnu.compiler.input.88842988" name="C source files" superClass="xilinx.gnu.compiler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.release.233554043" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.release">
|
||||
|
||||
<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.1071676241" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.option.debugging.level.142972768" superClass="xilinx.gnu.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1469893295" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.norelax.190812498" superClass="xilinx.gnu.mb.compiler.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.garbage.82656265" superClass="xilinx.gnu.mb.compiler.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usele.1293985221" superClass="xilinx.gnu.mb.compiler.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.557344692" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1584776451" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.usediv.885761566" superClass="xilinx.gnu.mb.compiler.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.fpu.250999897" superClass="xilinx.gnu.mb.compiler.inferred.fpu" value="xilinx.gnu.mb.compiler.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.compiler.inferred.mul.1901622397" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.787908182" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspInclude}"/>
|
||||
|
||||
</option>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.toolchain.archiver.2101089573" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
|
||||
|
||||
<tool id="xilinx.gnu.mb.c.toolchain.linker.release.1112198995" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.release">
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1560456653" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.922620880" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.1024317549" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.986405362" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.2054791336" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.176558075" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.997551390" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.771924786" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mul.1801825914" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.2032442504" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspLib}"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.145142568" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.301496449" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
|
||||
<inputType id="xilinx.gnu.linker.input.2118718020" superClass="xilinx.gnu.linker.input">
|
||||
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
|
||||
</inputType>
|
||||
|
||||
<inputType id="xilinx.gnu.linker.input.lscript.325304645" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.release.108220038" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.release">
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1354177354" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="11.0" valueType="string"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.norelax.2120048058" superClass="xilinx.gnu.mb.linker.inferred.norelax" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.garbage.1568018689" superClass="xilinx.gnu.mb.linker.inferred.garbage" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usele.1120071086" superClass="xilinx.gnu.mb.linker.inferred.usele" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1341801441" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1718590776" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.usediv.317272787" superClass="xilinx.gnu.mb.linker.inferred.usediv" value="true" valueType="boolean"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.fpu.428463190" superClass="xilinx.gnu.mb.linker.inferred.fpu" value="xilinx.gnu.mb.linker.inferred.fpu.basic" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.mb.linker.inferred.mul.442677204" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1295304772" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
|
||||
|
||||
<listOptionValue builtIn="false" value="${resolvePlatformFile:project=bootloader,fileType=bspLib}"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.linker.inferred.swplatform.flags.1391446590" superClass="xilinx.gnu.linker.inferred.swplatform.flags" valueType="libs">
|
||||
|
||||
<listOptionValue builtIn="false" value="-Wl,--start-group,-lxil,-lgcc,-lc,--end-group"/>
|
||||
|
||||
</option>
|
||||
|
||||
<option id="xilinx.gnu.c.linker.option.lscript.197421543" superClass="xilinx.gnu.c.linker.option.lscript" value="../src/lscript.ld" valueType="string"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="xilinx.gnu.mb.size.release.1226510156" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.release"/>
|
||||
|
||||
</toolChain>
|
||||
|
||||
</folderInfo>
|
||||
|
||||
<sourceEntries>
|
||||
|
||||
<entry excluding="_ide" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
|
||||
</sourceEntries>
|
||||
|
||||
</configuration>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
|
||||
</cconfiguration>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
|
||||
<project id="bootloader.xilinx.gnu.mb.exe.516922112" name="Xilinx MicroBlaze Executable" projectType="xilinx.gnu.mb.exe"/>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.408304434;xilinx.gnu.mb.exe.release.408304434.">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.787148227;xilinx.gnu.mb.exe.debug.787148227.">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.408304434;xilinx.gnu.mb.exe.release.408304434.;xilinx.gnu.mb.c.toolchain.compiler.release.218609145;xilinx.gnu.compiler.input.88842988">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.787148227;xilinx.gnu.mb.exe.debug.787148227.;xilinx.gnu.mb.c.toolchain.compiler.debug.776270743;xilinx.gnu.compiler.input.359278436">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="refreshScope"/>
|
||||
|
||||
</cproject>
|
||||
2
vitis/bootloader/.gitignore
vendored
Normal file
2
vitis/bootloader/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/Debug/
|
||||
/Release/
|
||||
27
vitis/bootloader/.project
Normal file
27
vitis/bootloader/.project
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>bootloader</name>
|
||||
<comment>Created by Vitis v2022.2</comment>
|
||||
<projects>
|
||||
<project>top</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.xilinx.sdx.sdk.core.SdkProjectNature</nature>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
178
vitis/bootloader/_ide/bitstream/top.mmi
Normal file
178
vitis/bootloader/_ide/bitstream/top.mmi
Normal file
@@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Product Version: Vivado v2022.2 (64-bit) -->
|
||||
<!-- SW Build 3671981 on Fri Oct 14 04:59:54 MDT 2022 -->
|
||||
<!-- -->
|
||||
<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -->
|
||||
<!-- Oct 14 2022 -->
|
||||
<!-- -->
|
||||
<!-- This file is generated by the software with the Tcl write_mem_info command. -->
|
||||
<!-- Do not edit this file. -->
|
||||
|
||||
<MemInfo Version="1" Minor="9">
|
||||
<Processor Endianness="Little" InstPath="microblaze_bd_i/microblaze_0">
|
||||
<AddressSpace Name="microblaze_bd_i_microblaze_0.microblaze_bd_i_microblaze_0_local_memory_dlmb_bram_if_cntlr" Begin="0" End="32767">
|
||||
<AddressSpaceRange Name="microblaze_bd_i_microblaze_0.microblaze_bd_i_microblaze_0_local_memory_dlmb_bram_if_cntlr" Begin="0" End="32767" CoreMemory_Width="0" MemoryType="RAM_SP" MemoryConfiguration="">
|
||||
<BusBlock>
|
||||
<BitLane MemType="RAMB36" Placement="X5Y36" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="7" LSB="4"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X5Y35" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="3" LSB="0"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X6Y36" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="15" LSB="12"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X6Y35" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="11" LSB="8"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X6Y40" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="23" LSB="20"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X6Y39" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="19" LSB="16"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X6Y38" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="31" LSB="28"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X6Y37" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="27" LSB="24"/>
|
||||
<AddressRange Begin="0" End="8191"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
</BusBlock>
|
||||
</AddressSpaceRange>
|
||||
</AddressSpace>
|
||||
</Processor>
|
||||
<Processor Endianness="Little" InstPath="microblaze_bd_i/ddr4_0/inst/u_ddr4_mem_intfc/u_ddr_cal_riu/mcs0/inst/microblaze_I">
|
||||
<AddressSpace Name="microblaze_bd_i_ddr4_0_inst_u_ddr4_mem_intfc_u_ddr_cal_riu_mcs0_inst_microblaze_I.microblaze_bd_i_ddr4_0_inst_u_ddr4_mem_intfc_u_ddr_cal_riu_mcs0_inst_dlmb_cntlr" Begin="0" End="65535">
|
||||
<AddressSpaceRange Name="microblaze_bd_i_ddr4_0_inst_u_ddr4_mem_intfc_u_ddr_cal_riu_mcs0_inst_microblaze_I.microblaze_bd_i_ddr4_0_inst_u_ddr4_mem_intfc_u_ddr_cal_riu_mcs0_inst_dlmb_cntlr" Begin="0" End="65535" CoreMemory_Width="0" MemoryType="RAM_SP" MemoryConfiguration="">
|
||||
<BusBlock>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y8" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="7" LSB="6"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y9" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="5" LSB="4"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y7" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="3" LSB="2"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y10" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="1" LSB="0"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y20" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="15" LSB="14"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X1Y24" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="13" LSB="12"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X2Y20" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="11" LSB="10"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y21" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="9" LSB="8"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y4" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="23" LSB="22"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X1Y23" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="21" LSB="20"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y24" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="19" LSB="18"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y25" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="17" LSB="16"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y22" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="31" LSB="30"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X1Y22" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="29" LSB="28"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y5" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="27" LSB="26"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
<BitLane MemType="RAMB36" Placement="X0Y6" Read_Width="0" SLR_INDEX="-1">
|
||||
<DataWidth MSB="25" LSB="24"/>
|
||||
<AddressRange Begin="0" End="16383"/>
|
||||
<BitLayout pattern=""/>
|
||||
<Parity ON="false" NumBits="0"/>
|
||||
</BitLane>
|
||||
</BusBlock>
|
||||
</AddressSpaceRange>
|
||||
</AddressSpace>
|
||||
</Processor>
|
||||
<Config>
|
||||
<Option Name="Part" Val="xcku040-ffva1156-2-i"/>
|
||||
</Config>
|
||||
<DRC>
|
||||
<Rule Name="RDADDRCHANGE" Val="false"/>
|
||||
</DRC>
|
||||
</MemInfo>
|
||||
1
vitis/bootloader/_ide/hwspec.checksum
Normal file
1
vitis/bootloader/_ide/hwspec.checksum
Normal file
@@ -0,0 +1 @@
|
||||
308456516
|
||||
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="com.xilinx.sdx.sdsoc.debug.launch.SdsTcfLaunchDelegate">
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.ui.breakpoint.main" value="true"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.ui.exec.script" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.ui.exec.script.location" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.ui.fsbl_exit_function" value="XFsbl_Exit"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.ui.fsbl_flow" value="true"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.ui.fsbl_path" value="${sdxTcfLaunchFile:project=bootloader;fileType=fsbl;}"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.ui.fsbl_run" value="true"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.ui.skip.fpga.revision.check" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uiapplication.path" value="Debug/bootloader.elf"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uicrosstrigger.bpcontainer" value="{"arch":"non_zynq","isSelected":false,"breakPoints":[]}"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uidebug.type" value="STANDALONE_DEBUG"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uienable.crosstrigger" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uifpga.device" value="Auto Detect"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uihw.bit.file" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uihw.init.tcl" value=""/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uipl.powerup" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uiproc.appl.map" value="{"microblaze_0":{"xilinx.tcf.application":"Debug/bootloader.elf","xilinx.tcf.datafiles":"","xilinx.tcf.no_download":false,"xilinx.tcf.profile_enabled":false,"xilinx.tcf.profile_frequency":"10000","xilinx.tcf.profile_non_int_frequency":"150000000","xilinx.tcf.profile_non_int_high_addr":"","xilinx.tcf.profile_non_int_low_addr":"","xilinx.tcf.profile_non_int_use_count_instr":false,"xilinx.tcf.profile_non_int_use_cumulate":false,"xilinx.tcf.profile_non_intrusive_support":false,"xilinx.tcf.profile_store_address":"0x0","xilinx.tcf.profile_use_intrusive":false,"xilinx.tcf.project":"bootloader","xilinx.tcf.relocate":false,"xilinx.tcf.relocate_addr":"","xilinx.tcf.reset":false,"xilinx.tcf.stop_at_entry":false}}"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uiproc.selection" value="microblaze_0"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uiprogram.fpga" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uiproject.name" value="bootloader"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uips.device" value="Auto Detect"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uips7.init" value="false"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uips7.post" value="false"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uireset.apu" value="false"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uireset.lock.step" value="false"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uireset.rpu" value="false"/>
|
||||
<booleanAttribute key="com.xilinx.sdk.tcf.debug.uireset.system" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdk.tcf.debug.uitarget.peer" value="Local"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.active.build.config" value="Debug"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.application.type" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.build.disabled" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.custom.launch.storage" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.data.files" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.debug.target" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.eclipse.portable.path" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.edge.kernel.function.names" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.edge.kernel.start" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.emulation" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.estimate" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.hw_spec.path" value="${sdxTcfLaunchFile:project=bootloader;fileType=hw;}"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.ingore.peer.conflict" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.launch.work.dir" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.performance.analysis" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.performance.analysis.linux.hw.target" value="Local"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.sdsoc.project" value="bootloader"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.secure.debug" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.secure.debug.image" value=""/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.system.launch" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.trace" value="false"/>
|
||||
<stringAttribute key="com.xilinx.sdx.sdsoc.debug.ui.versal.system.emulation" value="false"/>
|
||||
<stringAttribute key="ide.launch.pdi.path" value=""/>
|
||||
<stringAttribute key="ide.launch.program.device" value="false"/>
|
||||
<stringAttribute key="launch.version" value="2022.2"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/bootloader"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.tcf.debug.AttachChildren" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.tcf.debug.DisconnectOnCtxExit" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.tcf.debug.StopAtEntry" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.tcf.debug.StopAtMain" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.tcf.debug.UseContextFilter" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.tcf.debug.UseTerminal" value="false"/>
|
||||
<stringAttribute key="profile.data.transfer.trace" value="coarse"/>
|
||||
<stringAttribute key="profile.enable" value="true"/>
|
||||
<stringAttribute key="profile.mode" value="default"/>
|
||||
<stringAttribute key="profile.stall.trace" value="off"/>
|
||||
</launchConfiguration>
|
||||
11
vitis/bootloader/bootloader.prj
Normal file
11
vitis/bootloader/bootloader.prj
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="ASCII"?>
|
||||
<sdkproject:SdkProject xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sdkproject="http://www.xilinx.com/sdkproject" name="bootloader" location="/home/bkiedinger/projects/castelion/radar_alinx_kintex/vitis/bootloader" platform="/home/bkiedinger/projects/castelion/radar_alinx_kintex/vitis/top/export/top/top.xpfm" platformUID="xilinx:::0.0(custom)" systemProject="bootloader_system" sysConfig="top" runtime="cpp" cpu="standalone_microblaze_0" cpuInstance="microblaze_0" os="standalone" mssSignature="5cf4b93eb4839ad64096fe0b93be55b5">
|
||||
<configuration name="Debug" id="xilinx.gnu.mb.exe.debug.787148227">
|
||||
<configBuildOptions xsi:type="sdkproject:SdkOptions"/>
|
||||
<lastBuildOptions xsi:type="sdkproject:SdkOptions"/>
|
||||
</configuration>
|
||||
<configuration name="Release" id="xilinx.gnu.mb.exe.release.408304434" dirty="true">
|
||||
<configBuildOptions xsi:type="sdkproject:SdkOptions"/>
|
||||
</configuration>
|
||||
<template appTemplateName="srec_spi_bootloader" hasBspSettings="true"/>
|
||||
</sdkproject:SdkProject>
|
||||
7
vitis/bootloader/src/blconfig.h
Normal file
7
vitis/bootloader/src/blconfig.h
Normal file
@@ -0,0 +1,7 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2004 - 2020 Xilinx, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
******************************************************************************/
|
||||
#warning "Please provide the correct address value for the definition FLASH_IMAGE_BASEADDR. Please give the flash offset @ which SREC application is programmed"
|
||||
|
||||
#define FLASH_IMAGE_BASEADDR 0xd00000
|
||||
545
vitis/bootloader/src/bootloader.c
Normal file
545
vitis/bootloader/src/bootloader.c
Normal file
@@ -0,0 +1,545 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2009 - 2020 Xilinx, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* Simple SREC Bootloader
|
||||
* It is capable of booting an SREC format image file (Mototorola S-record format),
|
||||
* given the location of the image in memory.
|
||||
* In particular, this bootloader is designed for images stored in non-volatile flash
|
||||
* memory that is addressable from the processor.
|
||||
*
|
||||
* Please modify the define "FLASH_IMAGE_BASEADDR" in the blconfig.h header file
|
||||
* to point to the memory location from which the bootloader has to pick up the
|
||||
* flash image from.
|
||||
*
|
||||
* You can include these sources in your software application project and build
|
||||
* the project for the processor for which you want the bootload to happen.
|
||||
* You can also subsequently modify these sources to adapt the bootloader for any
|
||||
* specific scenario that you might require it for.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "blconfig.h"
|
||||
#include "portab.h"
|
||||
#include "errors.h"
|
||||
#include "srec.h"
|
||||
#include "xparameters.h"
|
||||
#include "xspi.h"
|
||||
|
||||
/* Defines */
|
||||
#define CR 13
|
||||
#define RECORD_TYPE 2
|
||||
#define BYTE_COUNT 2
|
||||
#define RECORD_TERMINATOR 2
|
||||
|
||||
/* Comment the following line, if you want a smaller and faster bootloader which will be silent */
|
||||
#define VERBOSE
|
||||
|
||||
/* Declarations */
|
||||
static void display_progress (uint32_t lines);
|
||||
static uint8_t load_exec ();
|
||||
static uint8_t flash_get_srec_line (uint8_t *buf);
|
||||
extern void init_stdout();
|
||||
uint8 grab_hex_byte (uint8 *buf);
|
||||
|
||||
/*
|
||||
* The following constant defines the slave select signal that is used to
|
||||
* to select the Flash device on the SPI bus, this signal is typically
|
||||
* connected to the chip select of the device.
|
||||
*/
|
||||
#define SPI_SELECT 0x01
|
||||
|
||||
/*
|
||||
* Number of bytes per page in the flash device.
|
||||
*/
|
||||
#define PAGE_SIZE 256
|
||||
|
||||
/*
|
||||
* Byte Positions.
|
||||
*/
|
||||
#define BYTE1 0 /* Byte 1 position */
|
||||
#define BYTE2 1 /* Byte 2 position */
|
||||
#define BYTE3 2 /* Byte 3 position */
|
||||
#define BYTE4 3 /* Byte 4 position */
|
||||
#define BYTE5 4 /* Byte 5 position */
|
||||
|
||||
#define READ_WRITE_EXTRA_BYTES 4 /* Read/Write extra bytes */
|
||||
#define READ_WRITE_EXTRA_BYTES_4BYTE_MODE 5 /**< Command extra bytes */
|
||||
|
||||
#define RD_ID_SIZE 4
|
||||
|
||||
#define ISSI_ID_BYTE0 0x9D
|
||||
#define MICRON_ID_BYTE0 0x20
|
||||
|
||||
#define ENTER_4B_ADDR_MODE 0xb7 /* Enter 4Byte Mode command */
|
||||
#define EXIT_4B_ADDR_MODE 0xe9 /* Exit 4Byte Mode command */
|
||||
#define EXIT_4B_ADDR_MODE_ISSI 0x29
|
||||
#define WRITE_ENABLE 0x06 /* Write Enable command */
|
||||
|
||||
#define ENTER_4B 1
|
||||
#define EXIT_4B 0
|
||||
|
||||
#define FLASH_16_MB 0x18
|
||||
#define FLASH_MAKE 0
|
||||
#define FLASH_SIZE 2
|
||||
|
||||
#define READ_CMD 0x03
|
||||
|
||||
/* Declarations */
|
||||
static void display_progress (uint32_t lines);
|
||||
static uint8_t load_exec ();
|
||||
static uint8_t flash_get_srec_line (uint8_t *buf);
|
||||
extern void init_stdout();
|
||||
uint8 grab_hex_byte (uint8 *buf);
|
||||
int FlashReadID(void);
|
||||
|
||||
#define SPI_DEVICE_ID XPAR_SPI_2_DEVICE_ID
|
||||
|
||||
/*
|
||||
* The instances to support the device drivers are global such that they
|
||||
* are initialized to zero each time the program runs. They could be local
|
||||
* but should at least be static so they are zeroed.
|
||||
*/
|
||||
static XSpi Spi;
|
||||
|
||||
|
||||
int mode = READ_WRITE_EXTRA_BYTES;
|
||||
|
||||
u8 WriteBuffer[PAGE_SIZE + READ_WRITE_EXTRA_BYTES];
|
||||
/*
|
||||
* Buffer used during Read transactions.
|
||||
*/
|
||||
u8 ReadBuffer[PAGE_SIZE + READ_WRITE_EXTRA_BYTES];
|
||||
|
||||
u8 FlashID[3];
|
||||
|
||||
extern int srec_line;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void outbyte(char c);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Data structures */
|
||||
static srec_info_t srinfo;
|
||||
static uint8_t sr_buf[SREC_MAX_BYTES];
|
||||
static uint8_t sr_data_buf[SREC_DATA_MAX_BYTES];
|
||||
|
||||
u32 flbuf;
|
||||
|
||||
#ifdef VERBOSE
|
||||
static int8_t *errors[] = {
|
||||
"",
|
||||
"Error while copying executable image into RAM",
|
||||
"Error while reading an SREC line from flash",
|
||||
"SREC line is corrupted",
|
||||
"SREC has invalid checksum."
|
||||
};
|
||||
#endif
|
||||
|
||||
/* We don't use interrupts/exceptions.
|
||||
Dummy definitions to reduce code size on MicroBlaze */
|
||||
#ifdef __MICROBLAZE__
|
||||
void _interrupt_handler () {}
|
||||
void _exception_handler () {}
|
||||
void _hw_exception_handler () {}
|
||||
#endif
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int Status;
|
||||
uint8_t ret;
|
||||
|
||||
#ifdef VERBOSE
|
||||
print ("\r\nSREC SPI Bootloader\r\n");
|
||||
#endif
|
||||
|
||||
sleep(3);
|
||||
|
||||
// Reset QSPI
|
||||
Xil_Out32(0x40050008, (1 << 10));
|
||||
sleep(1);
|
||||
Xil_Out32(0x40050008, 0);
|
||||
|
||||
sleep(1);
|
||||
|
||||
/*
|
||||
* Initialize the SPI driver so that it's ready to use,
|
||||
* specify the device ID that is generated in xparameters.h.
|
||||
*/
|
||||
Status = XSpi_Initialize(&Spi, SPI_DEVICE_ID);
|
||||
if(Status != XST_SUCCESS) {
|
||||
print("init fail");
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the SPI device as a master and in manual slave select mode such
|
||||
* that the slave select signal does not toggle for every byte of a
|
||||
* transfer, this must be done before the slave select is set.
|
||||
*/
|
||||
Status = XSpi_SetOptions(&Spi, XSP_MASTER_OPTION |
|
||||
XSP_MANUAL_SSELECT_OPTION);
|
||||
if(Status != XST_SUCCESS) {
|
||||
print("options fail");
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Select the flash device on the SPI bus, so that it can be
|
||||
* read and written using the SPI bus.
|
||||
*/
|
||||
Status = XSpi_SetSlaveSelect(&Spi, SPI_SELECT);
|
||||
if(Status != XST_SUCCESS) {
|
||||
print("slave select fail");
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Start the SPI driver so that interrupts and the device are enabled.
|
||||
*/
|
||||
XSpi_Start(&Spi);
|
||||
|
||||
XSpi_IntrGlobalDisable(&Spi);
|
||||
|
||||
init_stdout();
|
||||
sleep(1);
|
||||
|
||||
print ("Read Flash ID");
|
||||
Status = FlashReadID( );
|
||||
if(Status != XST_SUCCESS) {
|
||||
print("flash read id fail");
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
print ("Read Flash ID");
|
||||
Status = FlashReadID( );
|
||||
if(Status != XST_SUCCESS) {
|
||||
print("flash read id fail");
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
print ("Read Flash ID");
|
||||
Status = FlashReadID( );
|
||||
if(Status != XST_SUCCESS) {
|
||||
print("flash read id fail");
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
#ifdef VERBOSE
|
||||
print ("Loading SREC image from flash @ address: ");
|
||||
putnum (FLASH_IMAGE_BASEADDR);
|
||||
print ("\r\n");
|
||||
#endif
|
||||
|
||||
sleep(1);
|
||||
print ("After Sleep");
|
||||
|
||||
flbuf = (u32)FLASH_IMAGE_BASEADDR;
|
||||
ret = load_exec ();
|
||||
|
||||
/* If we reach here, we are in error */
|
||||
|
||||
#ifdef VERBOSE
|
||||
if (ret > LD_SREC_LINE_ERROR) {
|
||||
print ("ERROR in SREC line: ");
|
||||
putnum (srec_line);
|
||||
print (errors[ret]);
|
||||
} else {
|
||||
print ("ERROR: ");
|
||||
print (errors[ret]);
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
*
|
||||
* This function enables writes to the Serial Flash memory.
|
||||
*
|
||||
* @param Spi is a pointer to the instance of the Spi device.
|
||||
*
|
||||
* @return XST_SUCCESS if successful else XST_FAILURE.
|
||||
*
|
||||
* @note None
|
||||
*
|
||||
******************************************************************************/
|
||||
int FlashWriteEnable(XSpi *Spi)
|
||||
{
|
||||
int Status;
|
||||
u8 *NULLPtr = NULL;
|
||||
|
||||
/*
|
||||
* Prepare the WriteBuffer.
|
||||
*/
|
||||
WriteBuffer[BYTE1] = WRITE_ENABLE;
|
||||
|
||||
Status = XSpi_Transfer(Spi, WriteBuffer, NULLPtr, 1);
|
||||
if (Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
return XST_SUCCESS;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* @brief
|
||||
* This API enters the flash device into 4 bytes addressing mode.
|
||||
*
|
||||
* @param Spi is a pointer to the instance of the Spi device.
|
||||
* @param Enable is a either 1 or 0 if 1 then enters 4 byte if 0 exits.
|
||||
*
|
||||
* @return
|
||||
* - XST_SUCCESS if successful.
|
||||
* - XST_FAILURE if it fails.
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
int FlashEnterExit4BAddMode(XSpi *Spi, unsigned int Enable)
|
||||
{
|
||||
int Status;
|
||||
u8 *NULLPtr = NULL;
|
||||
|
||||
if((FlashID[FLASH_MAKE] == MICRON_ID_BYTE0) ||
|
||||
(FlashID[FLASH_MAKE] == ISSI_ID_BYTE0)) {
|
||||
|
||||
Status = FlashWriteEnable(Spi);
|
||||
if(Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if (Enable) {
|
||||
WriteBuffer[BYTE1] = ENTER_4B_ADDR_MODE;
|
||||
} else {
|
||||
if (FlashID[FLASH_MAKE] == ISSI_ID_BYTE0)
|
||||
WriteBuffer[BYTE1] = EXIT_4B_ADDR_MODE_ISSI;
|
||||
else
|
||||
WriteBuffer[BYTE1] = EXIT_4B_ADDR_MODE;
|
||||
}
|
||||
|
||||
Status = XSpi_Transfer(Spi, WriteBuffer, NULLPtr, 1);
|
||||
if (Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
return XST_SUCCESS;
|
||||
}
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
*
|
||||
* This function reads serial FLASH ID connected to the SPI interface.
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return XST_SUCCESS if read id, otherwise XST_FAILURE.
|
||||
*
|
||||
* @note None.
|
||||
*
|
||||
******************************************************************************/
|
||||
int FlashReadID(void)
|
||||
{
|
||||
int Status;
|
||||
int i;
|
||||
|
||||
/* Read ID in Auto mode.*/
|
||||
WriteBuffer[BYTE1] = 0x9f;
|
||||
WriteBuffer[BYTE2] = 0xff; /* 4 dummy bytes */
|
||||
WriteBuffer[BYTE3] = 0xff;
|
||||
WriteBuffer[BYTE4] = 0xff;
|
||||
WriteBuffer[BYTE5] = 0xff;
|
||||
|
||||
Status = XSpi_Transfer(&Spi, WriteBuffer, ReadBuffer, 5);
|
||||
if (Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
for(i = 0; i < 3; i++)
|
||||
FlashID[i] = ReadBuffer[i + 1];
|
||||
#ifdef VERBOSE
|
||||
xil_printf("FlashID=0x%x 0x%x 0x%x\n\r", ReadBuffer[1], ReadBuffer[2],
|
||||
ReadBuffer[3]);
|
||||
#endif
|
||||
return XST_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
static void display_progress (uint32_t count)
|
||||
{
|
||||
/* Send carriage return */
|
||||
outbyte (CR);
|
||||
print ("Bootloader: Processed (0x)");
|
||||
putnum (count);
|
||||
print (" S-records");
|
||||
}
|
||||
#endif
|
||||
|
||||
static uint8_t load_exec ()
|
||||
{
|
||||
uint8_t ret;
|
||||
void (*laddr)();
|
||||
int8_t done = 0;
|
||||
int Status;
|
||||
|
||||
srinfo.sr_data = sr_data_buf;
|
||||
|
||||
if(FlashID[FLASH_SIZE] > FLASH_16_MB) {
|
||||
Status = FlashEnterExit4BAddMode(&Spi, ENTER_4B);
|
||||
if(Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
mode = READ_WRITE_EXTRA_BYTES_4BYTE_MODE;
|
||||
}
|
||||
while (!done) {
|
||||
if ((ret = flash_get_srec_line (sr_buf)) != 0)
|
||||
return ret;
|
||||
|
||||
if ((ret = decode_srec_line (sr_buf, &srinfo)) != 0)
|
||||
return ret;
|
||||
|
||||
#ifdef VERBOSE
|
||||
if (srec_line % 16 == 0) {
|
||||
// Don't print every line because it takes forever over UART
|
||||
display_progress (srec_line);
|
||||
}
|
||||
#endif
|
||||
switch (srinfo.type) {
|
||||
case SREC_TYPE_0:
|
||||
break;
|
||||
case SREC_TYPE_1:
|
||||
case SREC_TYPE_2:
|
||||
case SREC_TYPE_3:
|
||||
memcpy ((void*)srinfo.addr, (void*)srinfo.sr_data, srinfo.dlen);
|
||||
break;
|
||||
case SREC_TYPE_5:
|
||||
break;
|
||||
case SREC_TYPE_7:
|
||||
case SREC_TYPE_8:
|
||||
case SREC_TYPE_9:
|
||||
laddr = (void (*)())srinfo.addr;
|
||||
done = 1;
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(FlashID[FLASH_SIZE] > FLASH_16_MB) {
|
||||
Status = FlashEnterExit4BAddMode(&Spi, EXIT_4B);
|
||||
if(Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
mode = READ_WRITE_EXTRA_BYTES;
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
print ("\r\nExecuting program starting at address: ");
|
||||
putnum ((uint32_t)laddr);
|
||||
print ("\r\n");
|
||||
#endif
|
||||
(*laddr)();
|
||||
|
||||
/* We will be dead at this point */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint8_t flash_get_srec_line (uint8_t *buf)
|
||||
{
|
||||
int Status;
|
||||
int i;
|
||||
int len;
|
||||
u8 ReadCmd = READ_CMD;
|
||||
|
||||
/*
|
||||
* Read 1st 4bytes of a record. Its contains the information about
|
||||
* the type of the record and number of bytes that follow in the
|
||||
* rest of the record (address + data + checksum).
|
||||
*/
|
||||
if(mode == READ_WRITE_EXTRA_BYTES) {
|
||||
WriteBuffer[BYTE1] = ReadCmd;
|
||||
WriteBuffer[BYTE2] = (u8) (flbuf >> 16);
|
||||
WriteBuffer[BYTE3] = (u8) (flbuf >> 8);
|
||||
WriteBuffer[BYTE4] = (u8) flbuf;
|
||||
} else {
|
||||
WriteBuffer[BYTE1] = ReadCmd;
|
||||
WriteBuffer[BYTE2] = (u8) (flbuf >> 24);
|
||||
WriteBuffer[BYTE3] = (u8) (flbuf >> 16);
|
||||
WriteBuffer[BYTE4] = (u8) (flbuf >> 8);
|
||||
WriteBuffer[BYTE5] = (u8) flbuf;
|
||||
}
|
||||
|
||||
Status = XSpi_Transfer(&Spi, WriteBuffer, ReadBuffer,
|
||||
(RECORD_TYPE + BYTE_COUNT + mode));
|
||||
if(Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
flbuf += RECORD_TYPE + BYTE_COUNT;
|
||||
|
||||
/*
|
||||
* Get the number of bytes (address + data + checksum) in a record.
|
||||
*/
|
||||
len = grab_hex_byte((ReadBuffer + mode + RECORD_TYPE)) * 2;
|
||||
|
||||
for(i = 0; i < (RECORD_TYPE + BYTE_COUNT); i++)
|
||||
*buf++ = ReadBuffer[mode + i];
|
||||
|
||||
/*
|
||||
* Read address + data + checksum from the record.
|
||||
*/
|
||||
if(mode == READ_WRITE_EXTRA_BYTES) {
|
||||
WriteBuffer[BYTE1] = ReadCmd;
|
||||
WriteBuffer[BYTE2] = (u8) (flbuf >> 16);
|
||||
WriteBuffer[BYTE3] = (u8) (flbuf >> 8);
|
||||
WriteBuffer[BYTE4] = (u8) flbuf;
|
||||
} else {
|
||||
WriteBuffer[BYTE1] = ReadCmd;
|
||||
WriteBuffer[BYTE2] = (u8) (flbuf >> 24);
|
||||
WriteBuffer[BYTE3] = (u8) (flbuf >> 16);
|
||||
WriteBuffer[BYTE4] = (u8) (flbuf >> 8);
|
||||
WriteBuffer[BYTE5] = (u8) flbuf;
|
||||
}
|
||||
|
||||
Status = XSpi_Transfer(&Spi, WriteBuffer, ReadBuffer, (len + mode));
|
||||
if(Status != XST_SUCCESS) {
|
||||
return XST_FAILURE;
|
||||
}
|
||||
|
||||
flbuf += (len + RECORD_TERMINATOR);
|
||||
|
||||
for(i = 0; i < len; i++)
|
||||
*buf++ = ReadBuffer[mode + i];
|
||||
|
||||
if ((RECORD_TYPE + BYTE_COUNT + len) > SREC_MAX_BYTES)
|
||||
return LD_SREC_LINE_ERROR;
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
#ifdef __PPC__
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
/* Save some code and data space on PowerPC
|
||||
by defining a minimal exit */
|
||||
void exit (int ret):
|
||||
{
|
||||
_exit (ret);
|
||||
}
|
||||
#endif
|
||||
13
vitis/bootloader/src/errors.h
Normal file
13
vitis/bootloader/src/errors.h
Normal file
@@ -0,0 +1,13 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2004 - 2020 Xilinx, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
******************************************************************************/
|
||||
#ifndef BL_ERRORS_H
|
||||
#define BL_ERRORS_H
|
||||
|
||||
#define LD_MEM_WRITE_ERROR 1
|
||||
#define LD_SREC_LINE_ERROR 2
|
||||
#define SREC_PARSE_ERROR 3
|
||||
#define SREC_CKSUM_ERROR 4
|
||||
|
||||
#endif /* BL_ERRORS_H */
|
||||
221
vitis/bootloader/src/lscript.ld
Normal file
221
vitis/bootloader/src/lscript.ld
Normal file
@@ -0,0 +1,221 @@
|
||||
/*******************************************************************/
|
||||
/* */
|
||||
/* This file is automatically generated by linker script generator.*/
|
||||
/* */
|
||||
/* Version: 2018.3 */
|
||||
/* */
|
||||
/* Copyright (c) 2010-2019 Xilinx, Inc. All rights reserved. */
|
||||
/* */
|
||||
/* Description : MicroBlaze Linker Script */
|
||||
/* */
|
||||
/*******************************************************************/
|
||||
|
||||
_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x400;
|
||||
_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x0;
|
||||
|
||||
/* Define Memories in the system */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem : ORIGIN = 0x50, LENGTH = 0x7FB0
|
||||
ddr4_0_C0_DDR4_MEMORY_MAP_BASEADDR_C0_DDR4_ADDRESS_BLOCK : ORIGIN = 0x80000000, LENGTH = 0x80000000
|
||||
axi_bram_ctrl_0_Mem0 : ORIGIN = 0x10000, LENGTH = 0x8000
|
||||
axi_bram_ctrl_1_Mem0 : ORIGIN = 0x20000, LENGTH = 0x8000
|
||||
axi_bram_ctrl_2_Mem0 : ORIGIN = 0x30000, LENGTH = 0x8000
|
||||
axi_bram_ctrl_3_Mem0 : ORIGIN = 0x40000, LENGTH = 0x8000
|
||||
}
|
||||
|
||||
/* Specify the default entry point to the program */
|
||||
|
||||
ENTRY(_start)
|
||||
|
||||
/* Define the sections, and where they are mapped in memory */
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.vectors.reset 0x0 : {
|
||||
KEEP (*(.vectors.reset))
|
||||
}
|
||||
|
||||
.vectors.sw_exception 0x8 : {
|
||||
KEEP (*(.vectors.sw_exception))
|
||||
}
|
||||
|
||||
.vectors.interrupt 0x10 : {
|
||||
KEEP (*(.vectors.interrupt))
|
||||
}
|
||||
|
||||
.vectors.hw_exception 0x20 : {
|
||||
KEEP (*(.vectors.hw_exception))
|
||||
}
|
||||
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.gnu.linkonce.t.*)
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.note.gnu.build-id : {
|
||||
KEEP (*(.note.gnu.build-id))
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.init : {
|
||||
KEEP (*(.init))
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.fini : {
|
||||
KEEP (*(.fini))
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.ctors : {
|
||||
__CTOR_LIST__ = .;
|
||||
___CTORS_LIST___ = .;
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
__CTOR_END__ = .;
|
||||
___CTORS_END___ = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.dtors : {
|
||||
__DTOR_LIST__ = .;
|
||||
___DTORS_LIST___ = .;
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
PROVIDE(__DTOR_END__ = .);
|
||||
PROVIDE(___DTORS_END___ = .);
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.rodata : {
|
||||
__rodata_start = .;
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
*(.gnu.linkonce.r.*)
|
||||
__rodata_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.sdata2 : {
|
||||
. = ALIGN(8);
|
||||
__sdata2_start = .;
|
||||
*(.sdata2)
|
||||
*(.sdata2.*)
|
||||
*(.gnu.linkonce.s2.*)
|
||||
. = ALIGN(8);
|
||||
__sdata2_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.sbss2 : {
|
||||
__sbss2_start = .;
|
||||
*(.sbss2)
|
||||
*(.sbss2.*)
|
||||
*(.gnu.linkonce.sb2.*)
|
||||
__sbss2_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.data : {
|
||||
. = ALIGN(4);
|
||||
__data_start = .;
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
__data_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.got : {
|
||||
*(.got)
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.got1 : {
|
||||
*(.got1)
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.got2 : {
|
||||
*(.got2)
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.eh_frame : {
|
||||
*(.eh_frame)
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.jcr : {
|
||||
*(.jcr)
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.gcc_except_table : {
|
||||
*(.gcc_except_table)
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.sdata : {
|
||||
. = ALIGN(8);
|
||||
__sdata_start = .;
|
||||
*(.sdata)
|
||||
*(.sdata.*)
|
||||
*(.gnu.linkonce.s.*)
|
||||
__sdata_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.sbss (NOLOAD) : {
|
||||
. = ALIGN(4);
|
||||
__sbss_start = .;
|
||||
*(.sbss)
|
||||
*(.sbss.*)
|
||||
*(.gnu.linkonce.sb.*)
|
||||
. = ALIGN(8);
|
||||
__sbss_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.tdata : {
|
||||
__tdata_start = .;
|
||||
*(.tdata)
|
||||
*(.tdata.*)
|
||||
*(.gnu.linkonce.td.*)
|
||||
__tdata_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.tbss : {
|
||||
__tbss_start = .;
|
||||
*(.tbss)
|
||||
*(.tbss.*)
|
||||
*(.gnu.linkonce.tb.*)
|
||||
__tbss_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.bss (NOLOAD) : {
|
||||
. = ALIGN(4);
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
__bss_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );
|
||||
|
||||
_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );
|
||||
|
||||
/* Generate Stack and Heap definitions */
|
||||
|
||||
.heap (NOLOAD) : {
|
||||
. = ALIGN(8);
|
||||
_heap = .;
|
||||
_heap_start = .;
|
||||
. += _HEAP_SIZE;
|
||||
_heap_end = .;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
.stack (NOLOAD) : {
|
||||
_stack_end = .;
|
||||
. += _STACK_SIZE;
|
||||
. = ALIGN(8);
|
||||
_stack = .;
|
||||
__stack = _stack;
|
||||
} > microblaze_0_local_memory_ilmb_bram_if_cntlr_Mem_microblaze_0_local_memory_dlmb_bram_if_cntlr_Mem
|
||||
|
||||
_end = .;
|
||||
}
|
||||
|
||||
20
vitis/bootloader/src/platform.c
Normal file
20
vitis/bootloader/src/platform.c
Normal file
@@ -0,0 +1,20 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2004 - 2020 Xilinx, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
******************************************************************************/
|
||||
#include "xparameters.h"
|
||||
#include "platform_config.h"
|
||||
|
||||
#ifdef STDOUT_IS_16550
|
||||
#include "xuartns550_l.h"
|
||||
#endif
|
||||
|
||||
void
|
||||
init_stdout()
|
||||
{
|
||||
/* if we have a uart 16550, then that needs to be initialized */
|
||||
#ifdef STDOUT_IS_16550
|
||||
XUartNs550_SetBaud(STDOUT_BASEADDR, XPAR_XUARTNS550_CLOCK_HZ, 9600);
|
||||
XUartNs550_SetLineControlReg(STDOUT_BASEADDR, XUN_LCR_8_DATA_BITS);
|
||||
#endif
|
||||
}
|
||||
4
vitis/bootloader/src/platform_config.h
Normal file
4
vitis/bootloader/src/platform_config.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#ifndef __PLATFORM_CONFIG_H_
|
||||
#define __PLATFORM_CONFIG_H_
|
||||
|
||||
#endif
|
||||
33
vitis/bootloader/src/portab.h
Normal file
33
vitis/bootloader/src/portab.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2004 - 2020 Xilinx, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
******************************************************************************/
|
||||
#ifndef BL_PORTAB_H
|
||||
#define BL_PORTAB_H
|
||||
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned short uint16;
|
||||
typedef unsigned int uint32;
|
||||
|
||||
typedef char int8;
|
||||
typedef short int16;
|
||||
typedef int int32;
|
||||
|
||||
|
||||
|
||||
/* An anonymous union allows the compiler to report typedef errors automatically */
|
||||
/* Does not work with gcc. Might work only for g++ */
|
||||
|
||||
/* static union */
|
||||
/* { */
|
||||
/* char int8_incorrect [sizeof( int8) == 1]; */
|
||||
/* char uint8_incorrect [sizeof( uint8) == 1]; */
|
||||
/* char int16_incorrect [sizeof( int16) == 2]; */
|
||||
/* char uint16_incorrect [sizeof(uint16) == 2]; */
|
||||
/* char int32_incorrect [sizeof( int32) == 4]; */
|
||||
/* char uint32_incorrect [sizeof(uint32) == 4]; */
|
||||
/* }; */
|
||||
|
||||
|
||||
|
||||
#endif /* BL_PORTTAB_H */
|
||||
153
vitis/bootloader/src/srec.c
Normal file
153
vitis/bootloader/src/srec.c
Normal file
@@ -0,0 +1,153 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2004 - 2020 Xilinx, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
******************************************************************************/
|
||||
#include "portab.h"
|
||||
#include "srec.h"
|
||||
#include "errors.h"
|
||||
|
||||
uint8 grab_hex_byte (uint8 *buf);
|
||||
uint16 grab_hex_word (uint8 *buf);
|
||||
uint32 grab_hex_dword (uint8 *buf);
|
||||
uint32 grab_hex_word24 (uint8 *buf);
|
||||
|
||||
int srec_line = 0;
|
||||
|
||||
uint8 nybble_to_val (char x)
|
||||
{
|
||||
if (x >= '0' && x <= '9')
|
||||
return (uint8)(x-'0');
|
||||
|
||||
return (uint8)((x-'A') + 10);
|
||||
}
|
||||
|
||||
uint8 grab_hex_byte (uint8 *buf)
|
||||
{
|
||||
return (uint8)((nybble_to_val ((char)buf[0]) << 4) +
|
||||
nybble_to_val ((char)buf[1]));
|
||||
}
|
||||
|
||||
uint16 grab_hex_word (uint8 *buf)
|
||||
{
|
||||
return (uint16)(((uint16)grab_hex_byte (buf) << 8) +
|
||||
grab_hex_byte ((uint8*)((int)buf+2)));
|
||||
}
|
||||
|
||||
uint32 grab_hex_word24 (uint8 *buf)
|
||||
{
|
||||
return (uint32)(((uint32)grab_hex_byte (buf) << 16) +
|
||||
grab_hex_word ((uint8*)((int)buf+2)));
|
||||
}
|
||||
|
||||
uint32 grab_hex_dword (uint8 *buf)
|
||||
{
|
||||
return (uint32)(((uint32)grab_hex_word (buf) << 16) +
|
||||
grab_hex_word ((uint8*)((int)buf+4)));
|
||||
}
|
||||
|
||||
uint8 decode_srec_data (uint8 *bufs, uint8 *bufd, uint8 count, uint8 skip)
|
||||
{
|
||||
uint8 cksum = 0, cbyte;
|
||||
int i;
|
||||
|
||||
/* Parse remaining character pairs */
|
||||
for (i=0; i < count; i++) {
|
||||
cbyte = grab_hex_byte (bufs);
|
||||
if ((i >= skip - 1) && (i != count-1)) /* Copy over only data bytes */
|
||||
*bufd++ = cbyte;
|
||||
bufs += 2;
|
||||
cksum += cbyte;
|
||||
}
|
||||
|
||||
return cksum;
|
||||
}
|
||||
|
||||
uint8 eatup_srec_line (uint8 *bufs, uint8 count)
|
||||
{
|
||||
int i;
|
||||
uint8 cksum = 0;
|
||||
|
||||
for (i=0; i < count; i++) {
|
||||
cksum += grab_hex_byte(bufs);
|
||||
bufs += 2;
|
||||
}
|
||||
|
||||
return cksum;
|
||||
}
|
||||
|
||||
uint8 decode_srec_line (uint8 *sr_buf, srec_info_t *info)
|
||||
{
|
||||
uint8 count;
|
||||
uint8 *bufs;
|
||||
uint8 cksum = 0, skip;
|
||||
int type;
|
||||
|
||||
bufs = sr_buf;
|
||||
|
||||
srec_line++; /* for debug purposes on errors */
|
||||
|
||||
if ( *bufs != 'S') {
|
||||
return SREC_PARSE_ERROR;
|
||||
}
|
||||
|
||||
type = *++bufs - '0';
|
||||
count = grab_hex_byte (++bufs);
|
||||
bufs += 2;
|
||||
cksum = count;
|
||||
|
||||
switch (type) {
|
||||
case 0:
|
||||
info->type = SREC_TYPE_0;
|
||||
info->dlen = count;
|
||||
cksum += eatup_srec_line (bufs, count);
|
||||
break;
|
||||
case 1:
|
||||
info->type = SREC_TYPE_1;
|
||||
skip = 3;
|
||||
info->addr = (uint8*)(uint32)grab_hex_word (bufs);
|
||||
info->dlen = count - skip;
|
||||
cksum += decode_srec_data (bufs, info->sr_data, count, skip);
|
||||
break;
|
||||
case 2:
|
||||
info->type = SREC_TYPE_2;
|
||||
skip = 4;
|
||||
info->addr = (uint8*)(uint32)grab_hex_word24 (bufs);
|
||||
info->dlen = count - skip;
|
||||
cksum += decode_srec_data (bufs, info->sr_data, count, skip);
|
||||
break;
|
||||
case 3:
|
||||
info->type = SREC_TYPE_3;
|
||||
skip = 5;
|
||||
info->addr = (uint8*)(uint32)grab_hex_dword (bufs);
|
||||
info->dlen = count - skip;
|
||||
cksum += decode_srec_data (bufs, info->sr_data, count, skip);
|
||||
break;
|
||||
case 5:
|
||||
info->type = SREC_TYPE_5;
|
||||
info->addr = (uint8*)(uint32)grab_hex_word (bufs);
|
||||
cksum += eatup_srec_line (bufs, count);
|
||||
break;
|
||||
case 7:
|
||||
info->type = SREC_TYPE_7;
|
||||
info->addr = (uint8*)(uint32)grab_hex_dword (bufs);
|
||||
cksum += eatup_srec_line (bufs, count);
|
||||
break;
|
||||
case 8:
|
||||
info->type = SREC_TYPE_8;
|
||||
info->addr = (uint8*)(uint32)grab_hex_word24 (bufs);
|
||||
cksum += eatup_srec_line (bufs, count);
|
||||
break;
|
||||
case 9:
|
||||
info->type = SREC_TYPE_9;
|
||||
info->addr = (uint8*)(uint32)grab_hex_word (bufs);
|
||||
cksum += eatup_srec_line (bufs, count);
|
||||
break;
|
||||
default:
|
||||
return SREC_PARSE_ERROR;
|
||||
}
|
||||
|
||||
if (++cksum) {
|
||||
return SREC_CKSUM_ERROR;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
38
vitis/bootloader/src/srec.h
Normal file
38
vitis/bootloader/src/srec.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/******************************************************************************
|
||||
* Copyright (C) 2004 - 2020 Xilinx, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* Note: This file depends on the following files having been included prior to self being included.
|
||||
1. portab.h
|
||||
*/
|
||||
|
||||
#ifndef BL_SREC_H
|
||||
#define BL_SREC_H
|
||||
|
||||
#define SREC_MAX_BYTES 255 /* Maximum record length */
|
||||
#define SREC_DATA_MAX_BYTES 123 /* Maximum of 123 data bytes */
|
||||
|
||||
#define SREC_TYPE_0 0
|
||||
#define SREC_TYPE_1 1
|
||||
#define SREC_TYPE_2 2
|
||||
#define SREC_TYPE_3 3
|
||||
#define SREC_TYPE_5 5
|
||||
#define SREC_TYPE_7 7
|
||||
#define SREC_TYPE_8 8
|
||||
#define SREC_TYPE_9 9
|
||||
|
||||
|
||||
typedef struct srec_info_s {
|
||||
int8 type;
|
||||
uint8* addr;
|
||||
uint8* sr_data;
|
||||
uint8 dlen;
|
||||
} srec_info_t;
|
||||
|
||||
uint8 decode_srec_line (uint8 *sr_buf, srec_info_t *info);
|
||||
|
||||
#endif /* BL_SREC_H */
|
||||
Reference in New Issue
Block a user