This commit is contained in:
BlubbFish 2015-11-15 18:18:42 +00:00
parent 9ac343fc45
commit 72be7b0c2f
580 changed files with 356252 additions and 6 deletions

View File

@ -252,8 +252,8 @@ namespace Matomat
}
Factory.getLCD().print("Koffein im Umlauf: " + k.ToString().PadLeft(4, ' ') + " mg (" + avg.ToString().PadLeft(4, ' ') + " mg/Per)" +
"²²²²²²²²²²²²²²²²²²²²²²²²²²²²" + p[0] +
"² MATOMAT Wilkommen! ²" + p[1] +
"² Frohes genießen der Mate ²" + p[2]);
"² MATOMAT Willkommen! ²" + p[1] +
"² Frohes Genießen der Mate ²" + p[2]);
}
public static void showUserInfo(User user)

View File

@ -29,10 +29,13 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>icon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="mysql.data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@ -90,6 +93,7 @@
<Content Include="dll\mysql.data.entity.dll" />
<Content Include="dll\mysql.visualstudio.dll" />
<Content Include="dll\mysql.web.dll" />
<Content Include="icon.ico" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />

View File

@ -41,9 +41,11 @@ namespace Matomat.Output
private volatile bool _shouldStop;
private SerialPort serialPort;
private bool disable = false;
private string ComPort;
private LCDDisplay(string port)
{
this.ComPort = port;
this.serialPort = new SerialPort(port, 19200, Parity.None, 8, StopBits.One);
try
{
@ -132,6 +134,14 @@ namespace Matomat.Output
text = text.PadRight(160, ' ');
text = text.Substring(0, 40) + "\n" + text.Substring(40, 40) + "\n" + text.Substring(80, 40) + "\n" + text.Substring(120, 40);
Console.WriteLine(text);
if (!disable)
{
if (this.serialPort.IsOpen)
{
this.serialPort.Close();
}
this.serialPort.Open();
}
}
private void displayClear()

View File

@ -11,7 +11,7 @@ using System.Resources;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("BlubbFish")]
[assembly: AssemblyProduct("Matomat")]
[assembly: AssemblyCopyright("Copyright © BlubbFish 2013")]
[assembly: AssemblyCopyright("Copyright © BlubbFish 2013-2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -33,6 +33,6 @@ using System.Resources;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyFileVersion("1.0.0.1")]
[assembly: AssemblyVersion("1.0.0.2")]
[assembly: AssemblyFileVersion("1.0.0.2")]
[assembly: NeutralResourcesLanguageAttribute("de-DE")]

BIN
Matomat/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -0,0 +1,8 @@
src/start/Cstartup_SAM7.o: src/start/Cstartup_SAM7.c include/board.h \
include/AT91SAM7.h include/lib_AT91SAM7.h
include/board.h:
include/AT91SAM7.h:
include/lib_AT91SAM7.h:

View File

@ -0,0 +1,46 @@
src/os/blinkcode.o: src/os/blinkcode.c src/os/pit.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
src/os/dbgu.h src/os/led.h src/os/blinkcode.h
src/os/pit.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
src/os/dbgu.h:
src/os/led.h:
src/os/blinkcode.h:

3
firmware/.dep/ctype.o.d Normal file
View File

@ -0,0 +1,3 @@
lib/ctype.o: lib/ctype.c include/asm/ctype.h
include/asm/ctype.h:

67
firmware/.dep/dbgu.o.d Normal file
View File

@ -0,0 +1,67 @@
src/dfu/dbgu.o: src/dfu/dbgu.c include/lib_AT91SAM7.h include/AT91SAM7.h \
include/board.h src/dfu/dbgu.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
include/board.h:
src/dfu/dbgu.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:

86
firmware/.dep/dfu.o.d Normal file
View File

@ -0,0 +1,86 @@
src/dfu/dfu.o: src/dfu/dfu.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
include/usb_ch9.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/usb_dfu.h include/board.h include/AT91SAM7.h \
include/lib_AT91SAM7.h src/pcd/usb_strings_dfu.h src/dfu/dfu.h \
src/dfu/../config.h src/dfu/dbgu.h src/os/flash.h src/os/pcd_enumerate.h \
include/asm/atomic.h include/asm/system.h include/asm/compiler.h \
include/openpcd.h src/dfu/../openpcd.h include/compile.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
include/usb_ch9.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/usb_dfu.h:
include/board.h:
include/AT91SAM7.h:
include/lib_AT91SAM7.h:
src/pcd/usb_strings_dfu.h:
src/dfu/dfu.h:
src/dfu/../config.h:
src/dfu/dbgu.h:
src/os/flash.h:
src/os/pcd_enumerate.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
include/openpcd.h:
src/dfu/../openpcd.h:
include/compile.h:

57
firmware/.dep/fifo.o.d Normal file
View File

@ -0,0 +1,57 @@
src/os/fifo.o: src/os/fifo.c src/os/fifo.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h
src/os/fifo.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:

46
firmware/.dep/flash.o.d Normal file
View File

@ -0,0 +1,46 @@
src/os/flash.o: src/os/flash.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/lib_AT91SAM7.h include/AT91SAM7.h src/dfu/dbgu.h include/board.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/dfu/dbgu.h:
include/board.h:

62
firmware/.dep/led.o.d Normal file
View File

@ -0,0 +1,62 @@
src/os/led.o: src/os/led.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
include/lib_AT91SAM7.h include/AT91SAM7.h include/openpcd.h \
src/os/../openpcd.h src/os/usb_handler.h src/os/req_ctx.h src/os/dbgu.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
include/openpcd.h:
src/os/../openpcd.h:
src/os/usb_handler.h:
src/os/req_ctx.h:
src/os/dbgu.h:

View File

@ -0,0 +1,44 @@
lib/lib_AT91SAM7.o: lib/lib_AT91SAM7.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/AT91SAM7.h include/lib_AT91SAM7.h include/AT91SAM7.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/AT91SAM7.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:

108
firmware/.dep/main.o.d Normal file
View File

@ -0,0 +1,108 @@
src/os/main.o: src/os/main.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
include/compile.h include/lib_AT91SAM7.h include/AT91SAM7.h \
src/os/dbgu.h src/os/led.h src/os/blinkcode.h src/os/main.h \
src/os/power.h src/os/system_irq.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
src/os/pit.h src/os/wdt.h src/os/usbcmd_generic.h src/os/pcd_enumerate.h \
include/lib_AT91SAM7.h include/asm/atomic.h include/asm/system.h \
include/asm/compiler.h include/openpcd.h src/dfu/dfu.h include/usb_ch9.h \
include/usb_dfu.h src/dfu/../config.h src/os/../openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
include/compile.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/dbgu.h:
src/os/led.h:
src/os/blinkcode.h:
src/os/main.h:
src/os/power.h:
src/os/system_irq.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
src/os/pit.h:
src/os/wdt.h:
src/os/usbcmd_generic.h:
src/os/pcd_enumerate.h:
include/lib_AT91SAM7.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
include/openpcd.h:
src/dfu/dfu.h:
include/usb_ch9.h:
include/usb_dfu.h:
src/dfu/../config.h:
src/os/../openpcd.h:

View File

@ -0,0 +1,136 @@
src/pcd/main_dumbreader.o: src/pcd/main_dumbreader.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
include/lib_AT91SAM7.h include/AT91SAM7.h include/openpcd.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
src/os/dbgu.h src/pcd/rc632.h include/cl_rc632.h \
../librfid//include/librfid/rfid.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h \
../librfid//include/librfid/rfid_system.h \
../librfid//include/librfid/rfid_asic.h \
../librfid//include/librfid/rfid_asic_rc632.h \
../librfid//include/librfid/rfid_layer2.h \
../librfid//include/librfid/rfid_layer2_iso14443a.h \
../librfid//include/librfid/rfid_layer2_iso14443b.h \
../librfid//include/librfid/rfid_layer2_iso15693.h \
../librfid//include/librfid/rfid_layer2_icode1.h \
src/pcd/rc632_highlevel.h src/os/led.h src/os/pcd_enumerate.h \
include/lib_AT91SAM7.h include/asm/atomic.h include/asm/system.h \
include/asm/compiler.h include/openpcd.h src/dfu/dfu.h include/usb_ch9.h \
include/usb_dfu.h src/dfu/../config.h src/os/usb_handler.h \
src/os/req_ctx.h src/pcd/../openpcd.h src/os/main.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
include/openpcd.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
src/os/dbgu.h:
src/pcd/rc632.h:
include/cl_rc632.h:
../librfid//include/librfid/rfid.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h:
../librfid//include/librfid/rfid_system.h:
../librfid//include/librfid/rfid_asic.h:
../librfid//include/librfid/rfid_asic_rc632.h:
../librfid//include/librfid/rfid_layer2.h:
../librfid//include/librfid/rfid_layer2_iso14443a.h:
../librfid//include/librfid/rfid_layer2_iso14443b.h:
../librfid//include/librfid/rfid_layer2_iso15693.h:
../librfid//include/librfid/rfid_layer2_icode1.h:
src/pcd/rc632_highlevel.h:
src/os/led.h:
src/os/pcd_enumerate.h:
include/lib_AT91SAM7.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
include/openpcd.h:
src/dfu/dfu.h:
include/usb_ch9.h:
include/usb_dfu.h:
src/dfu/../config.h:
src/os/usb_handler.h:
src/os/req_ctx.h:
src/pcd/../openpcd.h:
src/os/main.h:

View File

@ -0,0 +1,87 @@
src/os/pcd_enumerate.o: src/os/pcd_enumerate.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
include/usb_ch9.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/asm/atomic.h include/asm/system.h include/asm/compiler.h \
include/lib_AT91SAM7.h include/AT91SAM7.h include/openpcd.h \
src/pcd/usb_strings_app.h src/os/pcd_enumerate.h src/dfu/dfu.h \
include/usb_dfu.h src/dfu/../config.h src/os/req_ctx.h \
src/os/../openpcd.h src/os/dbgu.h src/os/../config.h \
src/os/usb_descriptors_openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
include/usb_ch9.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
include/openpcd.h:
src/pcd/usb_strings_app.h:
src/os/pcd_enumerate.h:
src/dfu/dfu.h:
include/usb_dfu.h:
src/dfu/../config.h:
src/os/req_ctx.h:
src/os/../openpcd.h:
src/os/dbgu.h:
src/os/../config.h:
src/os/usb_descriptors_openpcd.h:

60
firmware/.dep/pio_irq.o.d Normal file
View File

@ -0,0 +1,60 @@
src/os/pio_irq.o: src/os/pio_irq.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/lib_AT91SAM7.h include/AT91SAM7.h src/os/pio_irq.h src/os/dbgu.h \
src/os/req_ctx.h include/openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/pio_irq.h:
src/os/dbgu.h:
src/os/req_ctx.h:
include/openpcd.h:

65
firmware/.dep/pit.o.d Normal file
View File

@ -0,0 +1,65 @@
src/os/pit.o: src/os/pit.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/asm/system.h include/lib_AT91SAM7.h include/AT91SAM7.h \
src/os/pit.h src/os/dbgu.h src/os/system_irq.h src/os/../openpcd.h \
include/openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/asm/system.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/pit.h:
src/os/dbgu.h:
src/os/system_irq.h:
src/os/../openpcd.h:
include/openpcd.h:

80
firmware/.dep/pwm.o.d Normal file
View File

@ -0,0 +1,80 @@
src/os/pwm.o: src/os/pwm.c include/lib_AT91SAM7.h include/AT91SAM7.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
include/openpcd.h src/os/usb_handler.h src/os/req_ctx.h \
src/os/pcd_enumerate.h include/asm/atomic.h include/asm/system.h \
include/asm/compiler.h src/dfu/dfu.h include/usb_ch9.h include/usb_dfu.h \
src/dfu/../config.h src/os/dbgu.h src/os/../openpcd.h
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
include/openpcd.h:
src/os/usb_handler.h:
src/os/req_ctx.h:
src/os/pcd_enumerate.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
src/dfu/dfu.h:
include/usb_ch9.h:
include/usb_dfu.h:
src/dfu/../config.h:
src/os/dbgu.h:
src/os/../openpcd.h:

133
firmware/.dep/rc632.o.d Normal file
View File

@ -0,0 +1,133 @@
src/pcd/rc632.o: src/pcd/rc632.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
include/lib_AT91SAM7.h include/AT91SAM7.h include/cl_rc632.h \
include/openpcd.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
src/pcd/../openpcd.h src/os/fifo.h src/os/dbgu.h src/os/pcd_enumerate.h \
include/asm/atomic.h include/asm/system.h include/asm/compiler.h \
src/dfu/dfu.h include/usb_ch9.h include/usb_dfu.h src/dfu/../config.h \
src/os/usb_handler.h src/os/req_ctx.h src/pcd/rc632.h \
../librfid//include/librfid/rfid.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h \
../librfid//include/librfid/rfid_system.h \
../librfid//include/librfid/rfid_asic.h \
../librfid//include/librfid/rfid_asic_rc632.h \
../librfid//include/librfid/rfid_layer2.h \
../librfid//include/librfid/rfid_layer2_iso14443a.h \
../librfid//include/librfid/rfid_layer2_iso14443b.h \
../librfid//include/librfid/rfid_layer2_iso15693.h \
../librfid//include/librfid/rfid_layer2_icode1.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
include/cl_rc632.h:
include/openpcd.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
src/pcd/../openpcd.h:
src/os/fifo.h:
src/os/dbgu.h:
src/os/pcd_enumerate.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
src/dfu/dfu.h:
include/usb_ch9.h:
include/usb_dfu.h:
src/dfu/../config.h:
src/os/usb_handler.h:
src/os/req_ctx.h:
src/pcd/rc632.h:
../librfid//include/librfid/rfid.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h:
../librfid//include/librfid/rfid_system.h:
../librfid//include/librfid/rfid_asic.h:
../librfid//include/librfid/rfid_asic_rc632.h:
../librfid//include/librfid/rfid_layer2.h:
../librfid//include/librfid/rfid_layer2_iso14443a.h:
../librfid//include/librfid/rfid_layer2_iso14443b.h:
../librfid//include/librfid/rfid_layer2_iso15693.h:
../librfid//include/librfid/rfid_layer2_icode1.h:

View File

@ -0,0 +1,112 @@
src/pcd/rc632_highlevel.o: src/pcd/rc632_highlevel.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
include/cl_rc632.h src/pcd/rc632.h ../librfid//include/librfid/rfid.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h \
../librfid//include/librfid/rfid_system.h \
../librfid//include/librfid/rfid_asic.h \
../librfid//include/librfid/rfid_asic_rc632.h \
../librfid//include/librfid/rfid_layer2.h \
../librfid//include/librfid/rfid_layer2_iso14443a.h \
../librfid//include/librfid/rfid_layer2_iso14443b.h \
../librfid//include/librfid/rfid_layer2_iso15693.h \
../librfid//include/librfid/rfid_layer2_icode1.h src/os/dbgu.h \
../librfid//include/librfid/rfid_protocol_mifare_classic.h \
../librfid//include/librfid/rfid_protocol.h \
../librfid//include/librfid/rfid_protocol_tcl.h \
../librfid//include/librfid/rfid_protocol_mifare_ul.h \
../librfid//include/librfid/rfid_protocol_tagit.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
include/cl_rc632.h:
src/pcd/rc632.h:
../librfid//include/librfid/rfid.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h:
../librfid//include/librfid/rfid_system.h:
../librfid//include/librfid/rfid_asic.h:
../librfid//include/librfid/rfid_asic_rc632.h:
../librfid//include/librfid/rfid_layer2.h:
../librfid//include/librfid/rfid_layer2_iso14443a.h:
../librfid//include/librfid/rfid_layer2_iso14443b.h:
../librfid//include/librfid/rfid_layer2_iso15693.h:
../librfid//include/librfid/rfid_layer2_icode1.h:
src/os/dbgu.h:
../librfid//include/librfid/rfid_protocol_mifare_classic.h:
../librfid//include/librfid/rfid_protocol.h:
../librfid//include/librfid/rfid_protocol_tcl.h:
../librfid//include/librfid/rfid_protocol_mifare_ul.h:
../librfid//include/librfid/rfid_protocol_tagit.h:

77
firmware/.dep/req_ctx.o.d Normal file
View File

@ -0,0 +1,77 @@
src/os/req_ctx.o: src/os/req_ctx.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/unistd.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/unistd.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/stdlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/alloca.h \
include/asm/bitops.h include/asm/system.h src/os/dbgu.h src/os/req_ctx.h \
include/lib_AT91SAM7.h include/AT91SAM7.h src/os/../openpcd.h \
include/openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/unistd.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/unistd.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/stdlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/alloca.h:
include/asm/bitops.h:
include/asm/system.h:
src/os/dbgu.h:
src/os/req_ctx.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/../openpcd.h:
include/openpcd.h:

52
firmware/.dep/string.o.d Normal file
View File

@ -0,0 +1,52 @@
lib/string.o: lib/string.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
include/asm/ctype.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
include/asm/ctype.h:

View File

@ -0,0 +1,71 @@
src/os/syscalls.o: src/os/syscalls.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/stdlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/alloca.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stat.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/time.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/time.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
include/board.h include/AT91SAM7.h include/lib_AT91SAM7.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/stdlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/alloca.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stat.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/time.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/time.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
include/board.h:
include/AT91SAM7.h:
include/lib_AT91SAM7.h:

View File

@ -0,0 +1,51 @@
src/os/system_irq.o: src/os/system_irq.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/lib_AT91SAM7.h include/AT91SAM7.h src/os/system_irq.h \
src/os/dbgu.h src/os/../openpcd.h include/openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/system_irq.h:
src/os/dbgu.h:
src/os/../openpcd.h:
include/openpcd.h:

51
firmware/.dep/tc_cdiv.o.d Normal file
View File

@ -0,0 +1,51 @@
src/os/tc_cdiv.o: src/os/tc_cdiv.c include/lib_AT91SAM7.h \
include/AT91SAM7.h src/os/dbgu.h src/os/../openpcd.h include/openpcd.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
src/os/tc_cdiv.h
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/dbgu.h:
src/os/../openpcd.h:
include/openpcd.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
src/os/tc_cdiv.h:

49
firmware/.dep/trigger.o.d Normal file
View File

@ -0,0 +1,49 @@
src/os/trigger.o: src/os/trigger.c include/lib_AT91SAM7.h \
include/AT91SAM7.h src/os/trigger.h src/os/../openpcd.h \
include/openpcd.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/trigger.h:
src/os/../openpcd.h:
include/openpcd.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:

View File

@ -0,0 +1,93 @@
src/os/usb_benchmark.o: src/os/usb_benchmark.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
include/lib_AT91SAM7.h include/AT91SAM7.h src/os/led.h src/os/dbgu.h \
src/os/pcd_enumerate.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/asm/atomic.h include/asm/system.h include/asm/compiler.h \
include/openpcd.h src/dfu/dfu.h include/usb_ch9.h include/usb_dfu.h \
src/dfu/../config.h src/os/usb_handler.h src/os/req_ctx.h \
src/os/../openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/led.h:
src/os/dbgu.h:
src/os/pcd_enumerate.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
include/openpcd.h:
src/dfu/dfu.h:
include/usb_ch9.h:
include/usb_dfu.h:
src/dfu/../config.h:
src/os/usb_handler.h:
src/os/req_ctx.h:
src/os/../openpcd.h:

View File

@ -0,0 +1,92 @@
src/os/usb_handler.o: src/os/usb_handler.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
include/openpcd.h src/os/pcd_enumerate.h include/lib_AT91SAM7.h \
include/AT91SAM7.h include/asm/atomic.h include/asm/system.h \
include/asm/compiler.h src/dfu/dfu.h include/usb_ch9.h include/usb_dfu.h \
src/dfu/../config.h src/os/usb_handler.h src/os/req_ctx.h src/os/led.h \
src/os/dbgu.h src/os/../openpcd.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/errno.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
include/openpcd.h:
src/os/pcd_enumerate.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
include/asm/atomic.h:
include/asm/system.h:
include/asm/compiler.h:
src/dfu/dfu.h:
include/usb_ch9.h:
include/usb_dfu.h:
src/dfu/../config.h:
src/os/usb_handler.h:
src/os/req_ctx.h:
src/os/led.h:
src/os/dbgu.h:
src/os/../openpcd.h:

View File

@ -0,0 +1,110 @@
src/os/usbcmd_generic.o: src/os/usbcmd_generic.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
include/openpcd.h src/os/req_ctx.h include/lib_AT91SAM7.h \
include/AT91SAM7.h src/os/usb_handler.h src/os/led.h src/os/dbgu.h \
src/os/main.h src/os/flash.h include/board.h src/pcd/rc632_highlevel.h \
../librfid//include/librfid/rfid_asic.h \
../librfid//include/librfid/rfid_asic_rc632.h \
../librfid//include/librfid/rfid.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h \
../librfid//include/librfid/rfid_system.h \
../librfid//include/librfid/rfid_layer2.h \
../librfid//include/librfid/rfid_layer2_iso14443a.h \
../librfid//include/librfid/rfid_layer2_iso14443b.h \
../librfid//include/librfid/rfid_layer2_iso15693.h \
../librfid//include/librfid/rfid_layer2_icode1.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
include/openpcd.h:
src/os/req_ctx.h:
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/usb_handler.h:
src/os/led.h:
src/os/dbgu.h:
src/os/main.h:
src/os/flash.h:
include/board.h:
src/pcd/rc632_highlevel.h:
../librfid//include/librfid/rfid_asic.h:
../librfid//include/librfid/rfid_asic_rc632.h:
../librfid//include/librfid/rfid.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/stdio.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/stdio.h:
../librfid//include/librfid/rfid_system.h:
../librfid//include/librfid/rfid_layer2.h:
../librfid//include/librfid/rfid_layer2_iso14443a.h:
../librfid//include/librfid/rfid_layer2_iso14443b.h:
../librfid//include/librfid/rfid_layer2_iso15693.h:
../librfid//include/librfid/rfid_layer2_icode1.h:

View File

@ -0,0 +1,68 @@
lib/vsprintf.o: lib/vsprintf.c \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h \
include/asm/ctype.h include/asm/div64.h include/asm/system.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include-fixed/limits.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include-fixed/syslimits.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/limits.h
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stdarg.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/string.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/reent.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/string.h:
include/asm/ctype.h:
include/asm/div64.h:
include/asm/system.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include-fixed/limits.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include-fixed/syslimits.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/limits.h:

46
firmware/.dep/wdt.o.d Normal file
View File

@ -0,0 +1,46 @@
src/os/wdt.o: src/os/wdt.c include/lib_AT91SAM7.h include/AT91SAM7.h \
src/os/dbgu.h src/os/system_irq.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h \
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h
include/lib_AT91SAM7.h:
include/AT91SAM7.h:
src/os/dbgu.h:
src/os/system_irq.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/_ansi.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/newlib.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/config.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/ieeefp.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/features.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/_default_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/_types.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/sys/lock.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/include/stddef.h:
e:\programme\mingw\libexec\arm\bin\../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/include/machine/types.h:

339
firmware/COPYING Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

613
firmware/Makefile Normal file
View File

@ -0,0 +1,613 @@
# Hey Emacs, this is a -*- makefile -*-
#
# WinARM makefile for the FreeRTOS-demo on LPC2138
# based in information from the FreeRTOS LPC2106 example
#
# by Martin Thomas, Kaiserslautern, Germany
# <eversmith@heizung-thomas.de>
#
# based on the WinAVR makefile written by Eric B. Weddington, Jörg Wunsch, et al.
# Released to the Public Domain
# Please read the make user manual!
#
#
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make program = Download the hex file to the device
#
# (TODO: make filename.s = Just compile filename.c into the assembler code only)
#
# To rebuild project do "make clean" then "make all".
#
# Changelog:
# - 17. Feb. 2005 - added thumb-interwork support (mth)
# - 28. Apr. 2005 - added C++ support (mth)
# - 29. Arp. 2005 - changed handling for lst-Filename (mth)
# - 1. Nov. 2005 - exception-vector placement options (mth)
# - 15. Nov. 2005 - added library-search-path (EXTRA_LIB...) (mth)
# - 2. Dec. 2005 - fixed ihex and binary file extensions (mth)
# - 22. Feb. 2006 - added AT91LIBNOWARN setting (mth)
# - 19. Apr. 2006 - option FLASH_TOOL (default lpc21isp); variable IMGEXT (mth)
# - 19. Mai. 2006 - USE_THUMB_MODE switch, ROM_RUN->RUN_FROM_ROM RAM_RUN->RUN_FROM_RAM
LIBRFID_DIR:=../librfid/
FLASH_TOOL = AT91FLASH
#FLASH_TOOL = UVISION
#FLASH_TOOL = OPENOCD
# MCU name and submodel
MCU = arm7tdmi
#SUBMDL = AT91SAM7S64
SUBMDL = AT91SAM7S128
USE_THUMB_MODE = NO
#USE_THUMB_MODE = YES
## Create ROM-Image (final)
RUN_MODE=RUN_FROM_ROM
## Create RAM-Image (debugging) - not used in this example
#RUN_MODE=RUN_FROM_RAM
## We want to produce a full-flash image, but including DFU
IMGTYPE=-sam7dfu-app
# with / at end
PATH_TO_LINKSCRIPTS=link/
#### not used in this example:
## Exception-Vector placement only supported for "ROM_RUN"
## (placement settings ignored when using "RAM_RUN")
## - Exception vectors in ROM:
#VECTOR_LOCATION=VECTORS_IN_ROM
## - Exception vectors in RAM:
#VECTOR_LOCATION=VECTORS_IN_RAM
# Target file name (without extension).
TARGET:=main_reqa
USBSTRINGS=src/picc/usb_strings_app.h src/pcd/usb_strings_app.h
# List C source files here. (C dependencies are automatically generated.)
# use file-extension c for "c-only"-files
SRC =
# List C source files here which must be compiled in ARM-Mode.
# use file-extension c for "c-only"-files
# First, build library ...
SRCARM = lib/lib_AT91SAM7.c
ifdef DEBUG
SRCARM += lib/vsprintf.c lib/ctype.c lib/string.c
endif
# then, OS ...
SRCARM += src/os/pcd_enumerate.c src/os/fifo.c src/os/dbgu.c \
src/os/led.c src/os/req_ctx.c src/os/trigger.c \
src/os/main.c src/os/syscalls.c src/os/usb_handler.c \
src/os/usb_benchmark.c src/os/tc_cdiv.c src/os/pit.c \
src/os/pwm.c src/os/pio_irq.c src/os/usbcmd_generic.c \
src/os/wdt.c src/os/blinkcode.c src/os/system_irq.c \
src/os/flash.c
ifeq ($(BOARD), PCD)
# PCD support code
SRCARM += src/pcd/rc632.c src/pcd/rc632_highlevel.c
# finally, the actual main application
SRCARM += src/pcd/$(TARGET).c
endif
ifeq ($(BOARD), PICC)
# PICC support code
SRCARM += src/picc/tc_fdt.c src/picc/ssc_picc.c src/picc/adc.c \
src/picc/decoder.c src/picc/decoder_miller.c \
src/picc/load_modulation.c src/picc/tc_cdiv_sync.c \
src/picc/decoder_nrzl.c src/picc/da.c src/picc/pll.c \
src/picc/openpicc.c
# finally, the actual main application
SRCARM += src/picc/$(TARGET).c
endif
# List C++ source files here.
# use file-extension cpp for C++-files (use extension .cpp)
CPPSRC =
# List C++ source files here which must be compiled in ARM-Mode.
# use file-extension cpp for C++-files (use extension .cpp)
#CPPSRCARM = $(TARGET).cpp
CPPSRCARM =
# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC =
ASRCLIB = lib/changebit.S lib/clearbit.S lib/setbit.S lib/testchangebit.S \
lib/testclearbit.S lib/testsetbit.S
ifdef DEBUG
#ASRCLIB += lib/memcpy.S lib/memset.S lib/lib1funcs.S lib/div64.S
ASRCLIB += lib/lib1funcs.S lib/div64.S
endif
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM = src/start/Cstartup_app.S $(ASRCLIB)
## Output format. (can be ihex or binary)
## (binary i.e. for openocd and SAM-BA, hex i.e. for lpc21isp and uVision)
#FORMAT = ihex
FORMAT = binary
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = 2
#OPT = 0
# Debugging format.
# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
#DEBUGF = stabs
DEBUGF = dwarf-2
# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
#### FreeRTOS
EXTRAINCDIRS = $(LIBRFID_DIR)/include/
# List any extra directories to look for library files here.
# Each directory must be seperated by a space.
#EXTRA_LIBDIRS = ../arm7_efsl_0_2_4
EXTRA_LIBDIRS = $(LIBRFID_DIR)/src/.libs/
## Using the Atmel AT91_lib produces warning with
## the default warning-levels.
## yes - disable these warnings; no - keep default settings
AT91LIBNOWARN = yes
#AT91LIBNOWARN = no
# Compiler flag to set the C Standard level.
# c89 - "ANSI" C
# gnu89 - c89 plus GCC extensions
# c99 - ISO C99 standard (not yet fully implemented)
# gnu99 - c99 plus GCC extensions
CSTANDARD = -std=gnu99
# Place -D or -U options for C here
CDEFS = -D$(RUN_MODE) -D__MS_types__ -D__LIBRFID__
ifdef DEBUG
CDEFS += -DDEBUG
endif
ifdef OLIMEX
CDEFS += -DOLIMEX
endif
ifeq ($(BOARD),PICC)
CDEFS += -DPICC
CINCS = -Isrc/picc
endif
ifeq ($(BOARD),PCD)
CDEFS += -DPCD
CINCS = -Isrc/pcd
endif
# Place -I options here
CINCS += -Iinclude -Isrc
# Place -D or -U options for ASM here
ADEFS = -D$(RUN_MODE)
ifdef VECTOR_LOCATION
CDEFS += -D$(VECTOR_LOCATION)
ADEFS += -D$(VECTOR_LOCATION)
endif
CDEFS += -D__$(SUBMDL)__
ADEFS += -D__$(SUBMDL)__
# Compiler flags.
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns...: create assembler listing
#
# Flags for C and C++ (arm-elf-gcc/arm-elf-g++)
CFLAGS = -g$(DEBUGF)
CFLAGS += $(CDEFS) $(CINCS)
CFLAGS += -O$(OPT)
CFLAGS += -Wall -Wextra -Wcast-align -Wimplicit -Wunused
CFLAGS += -Wpointer-arith -Wswitch
CFLAGS += -Wredundant-decls -Wreturn-type -Wshadow
CFLAGS += -Wbad-function-cast -Wsign-compare -Waggregate-return
CFLAGS += -Wa,-adhlns=$(subst $(suffix $<),.lst,$<)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
#CFLAGS += -ffunction-sections -fdata-sections
# flags only for C
CONLYFLAGS += -Wnested-externs
CONLYFLAGS += $(CSTANDARD)
ifneq ($(AT91LIBNOWARN),yes)
#AT91-lib warnings with:
CFLAGS += -Wcast-qual
CONLYFLAGS += -Wmissing-prototypes
CONLYFLAGS += -Wstrict-prototypes
CONLYFLAGS += -Wmissing-declarations
endif
# flags only for C++ (arm-elf-g++)
# CPPFLAGS = -fno-rtti -fno-exceptions
CPPFLAGS =
# Assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlns: create listing
# -g$(DEBUGF): have the assembler create line number information
ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:.S=.lst),--g$(DEBUGF) -Iinclude/ -D__ASSEMBLY__
#Additional libraries.
# Extra libraries
# Each library-name must be seperated by a space.
# To add libxyz.a, libabc.a and libefsl.a:
# EXTRA_LIBS = xyz abc efsl
#EXTRA_LIBS = efsl
ifeq ($(TARGET),main_librfid)
EXTRA_LIBS = rfid
endif
ifeq ($(TARGET),main_reqa)
EXTRA_LIBS = rfid
endif
ifeq ($(TARGET),main_presence)
EXTRA_LIBS = rfid
endif
ifeq ($(TARGET),main_mifare)
EXTRA_LIBS = rfid
endif
#Support for newlibc-lpc (file: libnewlibc-lpc.a)
#NEWLIBLPC = -lnewlib-lpc
MATH_LIB = #-lm
# CPLUSPLUS_LIB = -lstdc++
# Linker flags.
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -nostartfiles -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += $(NEWLIBLPC) $(MATH_LIB)
LDFLAGS += -lc -lgcc
LDFLAGS += $(CPLUSPLUS_LIB)
LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS))
LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS))
#LDFLAGS += --gc-sections
# Set Linker-Script Depending On Selected Memory and Controller
ifeq ($(RUN_MODE),RUN_FROM_RAM)
LDFLAGS +=-T$(PATH_TO_LINKSCRIPTS)$(SUBMDL)-RAM.ld
else
LDFLAGS +=-T$(PATH_TO_LINKSCRIPTS)$(SUBMDL)-ROM$(IMGTYPE).ld
endif
# ---------------------------------------------------------------------------
# Flash-Programming support using lpc21isp by Martin Maurer
# only for Philips LPC and Analog ADuC ARMs
#
# Settings and variables:
#LPC21ISP = lpc21isp
LPC21ISP = lpc21isp
LPC21ISP_PORT = com1
LPC21ISP_BAUD = 38400
LPC21ISP_XTAL = 12000
LPC21ISP_FLASHFILE = $(TARGET).hex
# verbose output:
#LPC21ISP_DEBUG = -debug
# enter bootloader via RS232 DTR/RTS (only if hardware supports this
# feature - see Philips AppNote):
LPC21ISP_CONTROL = -control
# ---------------------------------------------------------------------------
# Define directories, if needed.
## DIRARM = c:/WinARM/
## DIRARMBIN = $(DIRAVR)/bin/
## DIRAVRUTILS = $(DIRAVR)/utils/bin/
# Define programs and commands.
SHELL = sh
CC = arm-none-eabi-gcc
CPP = arm-none-eabi-g++
OBJCOPY = arm-none-eabi-objcopy
OBJDUMP = arm-none-eabi-objdump
SIZE = arm-none-eabi-size
NM = arm-none-eabi-nm
#CC = arm-elf-gcc
#CPP = arm-elf-g++
#OBJCOPY = arm-elf-objcopy
#OBJDUMP = arm-elf-objdump
#SIZE = arm-elf-size
#NM = arm-elf-nm
REMOVE = rm -f
COPY = cp
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = "-------- begin (mode: $(RUN_MODE)) --------"
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_FLASH = Creating load file for Flash:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling C:
MSG_COMPILING_ARM = "Compiling C (ARM-only):"
MSG_COMPILINGCPP = Compiling C++:
MSG_COMPILINGCPP_ARM = "Compiling C++ (ARM-only):"
MSG_ASSEMBLING = Assembling:
MSG_ASSEMBLING_ARM = "Assembling (ARM-only):"
MSG_CLEANING = Cleaning project:
MSG_FORMATERROR = Can not handle output-format
MSG_LPC21_RESETREMINDER = You may have to bring the target in bootloader-mode now.
# Define all object files.
COBJ = $(SRC:.c=.o)
AOBJ = $(ASRC:.S=.o)
COBJARM = $(SRCARM:.c=.o)
AOBJARM = $(ASRCARM:.S=.o)
CPPOBJ = $(CPPSRC:.cpp=.o)
CPPOBJARM = $(CPPSRCARM:.cpp=.o)
# Define all listing files.
LST = $(ASRC:.S=.lst) $(ASRCARM:.S=.lst) $(SRC:.c=.lst) $(SRCARM:.c=.lst)
LST += $(CPPSRC:.cpp=.lst) $(CPPSRCARM:.cpp=.lst)
# Compiler flags to generate dependency files.
### GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mcpu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
ALL_ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: begin gccversion sizebefore build sizeafter finished end
ifeq ($(FORMAT),ihex)
build: elf hex lss sym
hex: $(TARGET).hex
IMGEXT=hex
else
ifeq ($(FORMAT),binary)
build: elf bin lss sym
bin: $(TARGET).bin
IMGEXT=bin
else
$(error "$(MSG_FORMATERROR) $(FORMAT)")
endif
endif
elf: $(TARGET).elf
lss: $(TARGET).lss
sym: $(TARGET).sym
# Eye candy.
begin:
@echo
@echo $(MSG_BEGIN)
finished:
@echo $(MSG_ERRORS_NONE)
end:
@echo $(MSG_END)
@echo
# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf
sizebefore:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
sizeafter:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
# Display compiler version information.
gccversion :
@$(CC) --version
# Program the device.
# Program the device by using our relais card robot over USB
ifeq ($(FLASH_TOOL),AT91FLASH)
program: $(TARGET).$(IMGEXT)
ls -l $(TARGET).$(IMGEXT)
at91flash $(TARGET).$(IMGEXT)
else
ifeq ($(FLASH_TOOL),UVISION)
# Program the device with Keil's uVision (needs configured uVision-Workspace).
program: $(TARGET).$(IMGEXT)
@echo
@echo "Programming with uVision"
C:\Keil\uv3\Uv3.exe -f uvisionflash.Uv2 -ouvisionflash.txt
else
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(TARGET).$(IMGEXT)
@echo
@echo "Programming with OPENOCD"
C:\WinARM\utils\openocd\openocd_svn59\openocd.exe -f oocd_sam7_flash.cfg
else
# Program the device. - lpc21isp will not work for SAM7
program: $(TARGET).$(IMGEXT)
@echo
@echo $(MSG_LPC21_RESETREMINDER)
$(LPC21ISP) $(LPC21ISP_OPTIONS) $(LPC21ISP_DEBUG) $(LPC21ISP_FLASHFILE) $(LPC21ISP_PORT) $(LPC21ISP_BAUD) $(LPC21ISP_XTAL)
endif
endif
endif
# Create final output file (.hex) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) $< $@
# Create final output file (.bin) from ELF output file.
%.bin: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
# testing: option -C
%.lss: %.elf
@echo
@echo $(MSG_EXTENDED_LISTING) $@
$(OBJDUMP) -h -S -C $< > $@
# Create a symbol table from ELF output file.
%.sym: %.elf
@echo
@echo $(MSG_SYMBOL_TABLE) $@
$(NM) -n $< > $@
# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
%.elf: $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
@echo
@echo $(MSG_LINKING) $@
$(CC) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS)
# Compile: create object files from C source files. ARM/Thumb
$(COBJ) : %.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
# Compile: create object files from C source files. ARM-only
$(COBJARM) : %.o : %.c include/compile.h $(USBSTRINGS)
@echo
@echo $(MSG_COMPILING_ARM) $<
$(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
# Compile: create object files from C++ source files. ARM/Thumb
$(CPPOBJ) : %.o : %.cpp
@echo
@echo $(MSG_COMPILINGCPP) $<
$(CPP) -c $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
# Compile: create object files from C++ source files. ARM-only
$(CPPOBJARM) : %.o : %.cpp
@echo
@echo $(MSG_COMPILINGCPP_ARM) $<
$(CPP) -c $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
# Compile: create assembler files from C source files. ARM/Thumb
## does not work - TODO - hints welcome
##$(COBJ) : %.s : %.c
## $(CC) $(THUMB) -S $(ALL_CFLAGS) $< -o $@
# Assemble: create object files from assembler source files. ARM/Thumb
$(AOBJ) : %.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Assemble: create object files from assembler source files. ARM-only
$(AOBJARM) : %.o : %.S
@echo
@echo $(MSG_ASSEMBLING_ARM) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Target: clean project.
clean: begin clean_list finished end
clean_list :
@echo
@echo $(MSG_CLEANING)
$(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).bin
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).a90
$(REMOVE) $(TARGET).sym
$(REMOVE) $(TARGET).lnk
$(REMOVE) $(TARGET).lss
$(REMOVE) $(COBJ)
$(REMOVE) $(CPPOBJ)
$(REMOVE) $(AOBJ)
$(REMOVE) $(COBJARM)
$(REMOVE) $(CPPOBJARM)
$(REMOVE) $(AOBJARM)
$(REMOVE) $(LST)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)
$(REMOVE) $(SRCARM:.c=.s)
$(REMOVE) $(SRCARM:.c=.d)
$(REMOVE) $(CPPSRC:.cpp=.s)
$(REMOVE) $(CPPSRC:.cpp=.d)
$(REMOVE) $(CPPSRCARM:.cpp=.s)
$(REMOVE) $(CPPSRCARM:.cpp=.d)
$(REMOVE) .dep/*
$(REMOVE) include/compile.h
$(REMOVE) src/picc/usb_strings_app.h
$(REMOVE) scripts/usbstring
.PHONY: include/compile.h
include/compile.h:
scripts/mkcompile_h > $@
$(USBSTRINGS): %.h : %.txt ./scripts/usbstring
cat $< | ./scripts/usbstring > $@
scripts/usbstring: scripts/usbstring.c
gcc $^ -o $@
# Include the dependency files.
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion \
build elf hex bin lss sym clean clean_list program

572
firmware/Makefile.dfu Normal file
View File

@ -0,0 +1,572 @@
# Hey Emacs, this is a -*- makefile -*-
#
# WinARM makefile for the FreeRTOS-demo on LPC2138
# based in information from the FreeRTOS LPC2106 example
#
# by Martin Thomas, Kaiserslautern, Germany
# <eversmith@heizung-thomas.de>
#
# based on the WinAVR makefile written by Eric B. Weddington, Jörg Wunsch, et al.
# Released to the Public Domain
# Please read the make user manual!
#
#
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make program = Download the hex file to the device
#
# (TODO: make filename.s = Just compile filename.c into the assembler code only)
#
# To rebuild project do "make clean" then "make all".
#
# Changelog:
# - 17. Feb. 2005 - added thumb-interwork support (mth)
# - 28. Apr. 2005 - added C++ support (mth)
# - 29. Arp. 2005 - changed handling for lst-Filename (mth)
# - 1. Nov. 2005 - exception-vector placement options (mth)
# - 15. Nov. 2005 - added library-search-path (EXTRA_LIB...) (mth)
# - 2. Dec. 2005 - fixed ihex and binary file extensions (mth)
# - 22. Feb. 2006 - added AT91LIBNOWARN setting (mth)
# - 19. Apr. 2006 - option FLASH_TOOL (default lpc21isp); variable IMGEXT (mth)
# - 19. Mai. 2006 - USE_THUMB_MODE switch, ROM_RUN->RUN_FROM_ROM RAM_RUN->RUN_FROM_RAM
FLASH_TOOL = AT91FLASH
#FLASH_TOOL = UVISION
#FLASH_TOOL = OPENOCD
# MCU name and submodel
MCU = arm7tdmi
#SUBMDL = AT91SAM7S64
SUBMDL = AT91SAM7S256
USE_THUMB_MODE = NO
#USE_THUMB_MODE = YES
## Create ROM-Image (final)
RUN_MODE=RUN_FROM_ROM
## Create RAM-Image (debugging) - not used in this example
#RUN_MODE=RUN_FROM_RAM
## We want to produce a full-flash image, but including DFU
IMGTYPE=-sam7dfu-dfu
# with / at end
PATH_TO_LINKSCRIPTS=link/
#### not used in this example:
## Exception-Vector placement only supported for "ROM_RUN"
## (placement settings ignored when using "RAM_RUN")
## - Exception vectors in ROM:
#VECTOR_LOCATION=VECTORS_IN_ROM
## - Exception vectors in RAM:
#VECTOR_LOCATION=VECTORS_IN_RAM
# Target file name (without extension).
TARGET:=dfu
USBSTRINGS=src/picc/usb_strings_dfu.h src/pcd/usb_strings_dfu.h
# List C source files here. (C dependencies are automatically generated.)
# use file-extension c for "c-only"-files
SRC =
# List C source files here which must be compiled in ARM-Mode.
# use file-extension c for "c-only"-files
SRCARM = src/start/Cstartup_SAM7.c lib/lib_AT91SAM7.c \
src/dfu/dfu.c src/dfu/dbgu.c src/os/flash.c
# List C++ source files here.
# use file-extension cpp for C++-files (use extension .cpp)
CPPSRC =
# List C++ source files here which must be compiled in ARM-Mode.
# use file-extension cpp for C++-files (use extension .cpp)
#CPPSRCARM = $(TARGET).cpp
CPPSRCARM =
# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC =
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM = src/start/Cstartup.S
ifeq ($(DEBUG),1)
SRCARM += lib/vsprintf.c lib/ctype.c lib/string.c
ASRCARM += lib/div64.S
endif
## Output format. (can be ihex or binary)
## (binary i.e. for openocd and SAM-BA, hex i.e. for lpc21isp and uVision)
#FORMAT = ihex
FORMAT = binary
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
#OPT = 0
# Debugging format.
# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
#DEBUGF = stabs
DEBUGF = dwarf-2
# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
#### FreeRTOS
EXTRAINCDIRS =
# List any extra directories to look for library files here.
# Each directory must be seperated by a space.
#EXTRA_LIBDIRS = ../arm7_efsl_0_2_4
EXTRA_LIBDIRS =
## Using the Atmel AT91_lib produces warning with
## the default warning-levels.
## yes - disable these warnings; no - keep default settings
AT91LIBNOWARN = yes
#AT91LIBNOWARN = no
# Compiler flag to set the C Standard level.
# c89 - "ANSI" C
# gnu89 - c89 plus GCC extensions
# c99 - ISO C99 standard (not yet fully implemented)
# gnu99 - c99 plus GCC extensions
CSTANDARD = -std=gnu99
# Place -D or -U options for C here
CDEFS = -D$(RUN_MODE) -D__MS_types__ -D__LIBRFID__
ifdef DEBUG
CDEFS += -DDEBUG
ADEFS += -DDEBUG
endif
ifeq ($(BOARD),OLIMEX)
CDEFS += -DOLIMEX
ADEFS += -DOLIMEX
endif
ifeq ($(BOARD),PICC)
CDEFS += -DPICC
ADEFS += -DPICC
CINCS = -Isrc/picc
endif
ifeq ($(BOARD),PCD)
SUBMDL = AT91SAM7S128
CDEFS += -DPCD
ADEFS += -DPCD
CINCS = -Isrc/pcd
endif
# Place -I options here
CINCS += -Iinclude -Isrc
# Place -D or -U options for ASM here
ADEFS += -D$(RUN_MODE)
ifdef VECTOR_LOCATION
CDEFS += -D$(VECTOR_LOCATION)
ADEFS += -D$(VECTOR_LOCATION)
endif
CDEFS += -D__$(SUBMDL)__
ADEFS += -D__$(SUBMDL)__
# Compiler flags.
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns...: create assembler listing
#
# Flags for C and C++ (arm-elf-gcc/arm-elf-g++)
CFLAGS += -g$(DEBUGF) -DBOARD=$(BOARD)
CFLAGS += $(CDEFS) $(CINCS)
CFLAGS += -O$(OPT)
CFLAGS += -Wall -Wextra -Wcast-align -Wimplicit -Wunused
CFLAGS += -Wpointer-arith -Wswitch
CFLAGS += -Wredundant-decls -Wreturn-type -Wshadow
CFLAGS += -Wbad-function-cast -Wsign-compare -Waggregate-return
CFLAGS += -Wa,-adhlns=$(subst $(suffix $<),.lst,$<)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
#CFLAGS += -ffunction-sections -fdata-sections
# flags only for C
CONLYFLAGS += -Wnested-externs
CONLYFLAGS += $(CSTANDARD)
ifneq ($(AT91LIBNOWARN),yes)
#AT91-lib warnings with:
CFLAGS += -Wcast-qual
CONLYFLAGS += -Wmissing-prototypes
CONLYFLAGS += -Wstrict-prototypes
CONLYFLAGS += -Wmissing-declarations
endif
# flags only for C++ (arm-elf-g++)
# CPPFLAGS = -fno-rtti -fno-exceptions
CPPFLAGS =
# Assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlns: create listing
# -g$(DEBUGF): have the assembler create line number information
ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:.S=.lst),--g$(DEBUGF) -Iinclude/ -D__ASSEMBLY__
#Additional libraries.
# Extra libraries
# Each library-name must be seperated by a space.
# To add libxyz.a, libabc.a and libefsl.a:
# EXTRA_LIBS = xyz abc efsl
#EXTRA_LIBS = efsl
EXTRA_LIBS =
#Support for newlibc-lpc (file: libnewlibc-lpc.a)
#NEWLIBLPC = -lnewlib-lpc
MATH_LIB = #-lm
# CPLUSPLUS_LIB = -lstdc++
# Linker flags.
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -nostartfiles -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += $(NEWLIBLPC) $(MATH_LIB)
LDFLAGS += -lc -lgcc
LDFLAGS += $(CPLUSPLUS_LIB)
LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS))
LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS))
#LDFLAGS += --gc-sections
# Set Linker-Script Depending On Selected Memory and Controller
ifeq ($(RUN_MODE),RUN_FROM_RAM)
LDFLAGS +=-T$(PATH_TO_LINKSCRIPTS)$(SUBMDL)-RAM.ld
else
LDFLAGS +=-T$(PATH_TO_LINKSCRIPTS)$(SUBMDL)-ROM$(IMGTYPE).ld
endif
# ---------------------------------------------------------------------------
# Flash-Programming support using lpc21isp by Martin Maurer
# only for Philips LPC and Analog ADuC ARMs
#
# Settings and variables:
#LPC21ISP = lpc21isp
LPC21ISP = lpc21isp
LPC21ISP_PORT = com1
LPC21ISP_BAUD = 38400
LPC21ISP_XTAL = 12000
LPC21ISP_FLASHFILE = $(TARGET).hex
# verbose output:
#LPC21ISP_DEBUG = -debug
# enter bootloader via RS232 DTR/RTS (only if hardware supports this
# feature - see Philips AppNote):
LPC21ISP_CONTROL = -control
# ---------------------------------------------------------------------------
# Define directories, if needed.
## DIRARM = c:/WinARM/
## DIRARMBIN = $(DIRAVR)/bin/
## DIRAVRUTILS = $(DIRAVR)/utils/bin/
# Define programs and commands.
SHELL = sh
CC = arm-none-eabi-gcc
CPP = arm-none-eabi-g++
OBJCOPY = arm-none-eabi-objcopy
OBJDUMP = arm-none-eabi-objdump
SIZE = arm-none-eabi-size
NM = arm-none-eabi-nm
#CC = arm-elf-gcc
#CPP = arm-elf-g++
#OBJCOPY = arm-elf-objcopy
#OBJDUMP = arm-elf-objdump
#SIZE = arm-elf-size
#NM = arm-elf-nm
REMOVE = rm -f
COPY = cp
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = "-------- begin (mode: $(RUN_MODE)) --------"
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_FLASH = Creating load file for Flash:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling C:
MSG_COMPILING_ARM = "Compiling C (ARM-only):"
MSG_COMPILINGCPP = Compiling C++:
MSG_COMPILINGCPP_ARM = "Compiling C++ (ARM-only):"
MSG_ASSEMBLING = Assembling:
MSG_ASSEMBLING_ARM = "Assembling (ARM-only):"
MSG_CLEANING = Cleaning project:
MSG_FORMATERROR = Can not handle output-format
MSG_LPC21_RESETREMINDER = You may have to bring the target in bootloader-mode now.
# Define all object files.
COBJ = $(SRC:.c=.o)
AOBJ = $(ASRC:.S=.o)
COBJARM = $(SRCARM:.c=.o)
AOBJARM = $(ASRCARM:.S=.o)
CPPOBJ = $(CPPSRC:.cpp=.o)
CPPOBJARM = $(CPPSRCARM:.cpp=.o)
# Define all listing files.
LST = $(ASRC:.S=.lst) $(ASRCARM:.S=.lst) $(SRC:.c=.lst) $(SRCARM:.c=.lst)
LST += $(CPPSRC:.cpp=.lst) $(CPPSRCARM:.cpp=.lst)
# Compiler flags to generate dependency files.
### GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mcpu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
ALL_ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: begin gccversion sizebefore build sizeafter finished end
ifeq ($(FORMAT),ihex)
build: elf hex lss sym
hex: $(TARGET).hex
IMGEXT=hex
else
ifeq ($(FORMAT),binary)
build: elf bin lss sym
bin: $(TARGET).bin
IMGEXT=bin
else
$(error "$(MSG_FORMATERROR) $(FORMAT)")
endif
endif
elf: $(TARGET).elf
lss: $(TARGET).lss
sym: $(TARGET).sym
# Eye candy.
begin:
@echo
@echo $(MSG_BEGIN)
finished:
@echo $(MSG_ERRORS_NONE)
end:
@echo $(MSG_END)
@echo
# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf
sizebefore:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
sizeafter:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
# Display compiler version information.
gccversion :
@$(CC) --version
# Program the device.
# Program the device by using our relais card robot over USB
ifeq ($(FLASH_TOOL),AT91FLASH)
program: $(TARGET).$(IMGEXT)
ls -l $(TARGET).$(IMGEXT)
at91flash $(TARGET).$(IMGEXT)
else
ifeq ($(FLASH_TOOL),UVISION)
# Program the device with Keil's uVision (needs configured uVision-Workspace).
program: $(TARGET).$(IMGEXT)
@echo
@echo "Programming with uVision"
C:\Keil\uv3\Uv3.exe -f uvisionflash.Uv2 -ouvisionflash.txt
else
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(TARGET).$(IMGEXT)
@echo
@echo "Programming with OPENOCD"
C:\WinARM\utils\openocd\openocd_svn59\openocd.exe -f oocd_sam7_flash.cfg
else
# Program the device. - lpc21isp will not work for SAM7
program: $(TARGET).$(IMGEXT)
@echo
@echo $(MSG_LPC21_RESETREMINDER)
$(LPC21ISP) $(LPC21ISP_OPTIONS) $(LPC21ISP_DEBUG) $(LPC21ISP_FLASHFILE) $(LPC21ISP_PORT) $(LPC21ISP_BAUD) $(LPC21ISP_XTAL)
endif
endif
endif
# Create final output file (.hex) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) $< $@
# Create final output file (.bin) from ELF output file.
%.bin: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
# testing: option -C
%.lss: %.elf
@echo
@echo $(MSG_EXTENDED_LISTING) $@
$(OBJDUMP) -h -S -C $< > $@
# Create a symbol table from ELF output file.
%.sym: %.elf
@echo
@echo $(MSG_SYMBOL_TABLE) $@
$(NM) -n $< > $@
# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
%.elf: $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
@echo
@echo $(MSG_LINKING) $@
$(CC) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS)
# Compile: create object files from C source files. ARM/Thumb
$(COBJ) : %.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
# Compile: create object files from C source files. ARM-only
$(COBJARM) : %.o : %.c include/compile.h $(USBSTRINGS)
@echo
@echo $(MSG_COMPILING_ARM) $<
$(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
# Compile: create object files from C++ source files. ARM/Thumb
$(CPPOBJ) : %.o : %.cpp
@echo
@echo $(MSG_COMPILINGCPP) $<
$(CPP) -c $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
# Compile: create object files from C++ source files. ARM-only
$(CPPOBJARM) : %.o : %.cpp
@echo
@echo $(MSG_COMPILINGCPP_ARM) $<
$(CPP) -c $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
# Compile: create assembler files from C source files. ARM/Thumb
## does not work - TODO - hints welcome
##$(COBJ) : %.s : %.c
## $(CC) $(THUMB) -S $(ALL_CFLAGS) $< -o $@
# Assemble: create object files from assembler source files. ARM/Thumb
$(AOBJ) : %.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Assemble: create object files from assembler source files. ARM-only
$(AOBJARM) : %.o : %.S
@echo
@echo $(MSG_ASSEMBLING_ARM) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Target: clean project.
clean: begin clean_list finished end
clean_list :
@echo
@echo $(MSG_CLEANING)
$(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).bin
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).a90
$(REMOVE) $(TARGET).sym
$(REMOVE) $(TARGET).lnk
$(REMOVE) $(TARGET).lss
$(REMOVE) $(COBJ)
$(REMOVE) $(CPPOBJ)
$(REMOVE) $(AOBJ)
$(REMOVE) $(COBJARM)
$(REMOVE) $(CPPOBJARM)
$(REMOVE) $(AOBJARM)
$(REMOVE) $(LST)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)
$(REMOVE) $(SRCARM:.c=.s)
$(REMOVE) $(SRCARM:.c=.d)
$(REMOVE) $(CPPSRC:.cpp=.s)
$(REMOVE) $(CPPSRC:.cpp=.d)
$(REMOVE) $(CPPSRCARM:.cpp=.s)
$(REMOVE) $(CPPSRCARM:.cpp=.d)
$(REMOVE) .dep/*
$(REMOVE) src/picc/usb_strings_dfu.h
$(REMOVE) src/dfu/usb_strings_dfu.h
$(REMOVE) scripts/usbstring
.PHONY: include/compile.h
include/compile.h:
scripts/mkcompile_h > $@
.PHONY:
$(USBSTRINGS): %.h : %.txt ./scripts/usbstring
cat $< | ./scripts/usbstring > $@
scripts/usbstring: scripts/usbstring.c
gcc $^ -o $@
# Include the dependency files.
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion \
build elf hex bin lss sym clean clean_list program

13
firmware/README Normal file
View File

@ -0,0 +1,13 @@
Different Targets can be built by implementing a _init_func() and _main_func()_
function in src/main_foo.c
The resulting binary main_foo.bin can be built by issuing
make BOARD=PCD TARGET=main_foo
If you want to add debugging support (debug unit aka DBGU, RS232), add DEBUG=1
Building dfu.bin (the DFU loader binary):
make -f Makefile.dfu BOARD=PCD
For more information, please read http://wiki.openpcd.org/wiki/Firmware

23
firmware/TODO Normal file
View File

@ -0,0 +1,23 @@
SPI:
- use PDC DMA for SPI transfers
RC632:
- Fix locking between 'atomic' ops like set/clear bit and RC632 IRQ
- Implement VFIFO handling
USB:
- Implement suspend/resume handshake
- Make sure we don't eat a lot of power before entering the configured state
DFU:
- fix DFU download (usb control write / zlp at end)
- add capability to flash DFU itself
- add a header to the application program, checksum and size
- checksum application image. If wrong, enter DFU recovery mode
- Get rid of lots of constant values and replace them by proper defines
Generic:
- why is watchdog apparently not working?
Way Later, for librfid:
- Implement parts (or all of) 14443 in firmware as alternative configuration

BIN
firmware/dfu.bin Normal file

Binary file not shown.

BIN
firmware/dfu.elf Normal file

Binary file not shown.

4097
firmware/dfu.lss Normal file

File diff suppressed because it is too large Load Diff

428
firmware/dfu.map Normal file
View File

@ -0,0 +1,428 @@
Archive member included because of file (symbol)
e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
lib/lib_AT91SAM7.o (__aeabi_uidiv)
e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
src/dfu/dfu.o (__aeabi_idivmod)
e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_dvmd_tls.o)
e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o) (__aeabi_idiv0)
Memory Configuration
Name Origin Length Attributes
FLASH 0x00000000 0x00004000 xr
DATA 0x00200000 0x00008000 rw
STACK 0x00208000 0x00000000 rw
*default* 0x00000000 0xffffffff
Linker script and memory map
LOAD src/start/Cstartup.o
LOAD src/start/Cstartup_SAM7.o
LOAD lib/lib_AT91SAM7.o
LOAD src/dfu/dfu.o
LOAD src/dfu/dbgu.o
LOAD src/os/flash.o
LOAD e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib\libc.a
LOAD e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a
START GROUP
LOAD e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a
LOAD e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib\libc.a
END GROUP
0x00000000 . = 0x0
.text 0x00000000 0x1ac0
*(.reset)
.reset 0x00000000 0x0 src/start/Cstartup.o
*(.text)
.text 0x00000000 0x1f0 src/start/Cstartup.o
0x0000004c IRQ_Handler_Entry
0x000001a0 exit
0x000001a4 AT91F_Default_FIQ_handler
0x000001a8 AT91F_Default_IRQ_handler
0x000001ac AT91F_Spurious_handler
.text 0x000001f0 0x10c src/start/Cstartup_SAM7.o
0x000001f0 AT91F_LowLevelInit
.text 0x000002fc 0x580 lib/lib_AT91SAM7.o
0x0000035c AT91F_AIC_ConfigureIt
0x00000394 AT91F_AIC_SetExceptionVector
0x000003c8 AT91F_AIC_Open
0x00000444 AT91F_PDC_Open
0x000004b0 AT91F_PDC_Close
0x00000508 AT91F_PDC_SendFrame
0x0000055c AT91F_PDC_ReceiveFrame
0x000005b0 AT91F_PMC_GetMasterClock
0x0000063c AT91F_RTTReadValue
0x0000066c AT91F_SPI_Close
0x000006ac AT91F_ADC_CfgTimings
0x00000714 AT91F_SSC_SetBaudrate
0x00000778 AT91F_SSC_Configure
0x000007c4 AT91F_US_Configure
0x00000844 AT91F_US_Close
.text 0x0000087c 0xb20 src/dfu/dfu.o
0x00000c74 dfu_ep0_handler
0x000012d8 dfu_main
.text 0x0000139c 0x140 src/dfu/dbgu.o
0x0000139c AT91F_DBGU_Ready
0x000013b0 AT91F_DBGU_Init
0x00001440 AT91F_DBGU_Printk
0x00001468 AT91F_DBGU_Get
.text 0x000014dc 0x7c src/os/flash.o
0x000014e8 flash_page
0x00001544 flash_init
.text 0x00001558 0x114 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
0x00001558 __aeabi_uidiv
0x00001558 __udivsi3
0x0000164c __aeabi_uidivmod
.text 0x0000166c 0x148 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
0x0000166c __divsi3
0x0000166c __aeabi_idiv
0x00001794 __aeabi_idivmod
.text 0x000017b4 0x4 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_dvmd_tls.o)
0x000017b4 __aeabi_idiv0
0x000017b4 __aeabi_ldiv0
*(.rodata*)
.rodata 0x000017b8 0x1e4 src/dfu/dfu.o
0x000017b8 dfu_dev_descriptor
0x000017ca dfu_cfg_descriptor
.rodata.str1.1
0x0000199c 0x110 src/dfu/dfu.o
.rodata.str1.1
0x00001aac 0x11 src/dfu/dbgu.o
0x14 (size before relaxing)
0x00001ac0 . = ALIGN (0x4)
*fill* 0x00001abd 0x3 00
0x00001ac0 _etext = .
0x00001ac0 PROVIDE (etext, .)
.glue_7 0x00001ac0 0x0
.glue_7 0x00000000 0x0 linker stubs
.glue_7t 0x00001ac0 0x0
.glue_7t 0x00000000 0x0 linker stubs
.vfp11_veneer 0x00001ac0 0x0
.vfp11_veneer 0x00000000 0x0 linker stubs
.v4_bx 0x00001ac0 0x0
.v4_bx 0x00000000 0x0 linker stubs
.data.shared 0x00200020 0x8 load address 0x00001ac0
0x00200020 _data_shared = .
*(.data.shared)
.data.shared 0x00200020 0x8 src/dfu/dfu.o
0x00200020 dfu_state
0x00200028 . = ALIGN (0x4)
0x00200028 _edata_shared = .
0x00001ac8 _data_flash = (LOADADDR (.data.shared) + SIZEOF (.data.shared))
.data 0x00201ac0 0x24 load address 0x00001ac8
0x00201ac0 _data = .
*(.vectram)
.vectram 0x00201ac0 0x1c src/start/Cstartup.o
0x00201ac0 _remap_call_dfu
*(.data)
.data 0x00201adc 0x0 src/start/Cstartup.o
.data 0x00201adc 0x0 src/start/Cstartup_SAM7.o
.data 0x00201adc 0x0 lib/lib_AT91SAM7.o
.data 0x00201adc 0x8 src/dfu/dfu.o
0x00201ae0 foo
.data 0x00201ae4 0x0 src/dfu/dbgu.o
.data 0x00201ae4 0x0 src/os/flash.o
.data 0x00201ae4 0x0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
.data 0x00201ae4 0x0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
.data 0x00201ae4 0x0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_dvmd_tls.o)
0x00201ae4 . = ALIGN (0x4)
0x00201ae4 _edata = .
0x00201ae4 PROVIDE (edata, .)
.dfu.functab 0x00003fd0 0x30
*(.dfu.functab)
.dfu.functab 0x00003fd0 0x24 src/dfu/dfu.o
0x00003fd0 dfu_api
0x00004000 . = ALIGN (0x1000)
*fill* 0x00003ff4 0xc 00
.bss 0x00201ae4 0x105 load address 0x00001aec
0x00201ae4 __bss_start = .
0x00201ae4 __bss_start__ = .
*(.bss)
.bss 0x00201ae4 0x0 src/start/Cstartup.o
.bss 0x00201ae4 0x0 src/start/Cstartup_SAM7.o
.bss 0x00201ae4 0x0 lib/lib_AT91SAM7.o
.bss 0x00201ae4 0x104 src/dfu/dfu.o
.bss 0x00201be8 0x1 src/dfu/dbgu.o
.bss 0x00201be9 0x0 src/os/flash.o
.bss 0x00201be9 0x0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
.bss 0x00201be9 0x0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
.bss 0x00201be9 0x0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_dvmd_tls.o)
*(COMMON)
0x00201bec . = ALIGN (0x4)
0x00201bec __bss_end__ = .
0x00201bec __bss_end__ = .
0x00201bec PROVIDE (main, .)
0x00201bec _end = .
0x00201bec . = ALIGN (0x4)
.int_data 0x00208000 0x0
*(.internal_ram_top)
.internal_ram_top
0x00208000 0x0 src/start/Cstartup.o
0x00208000 PROVIDE (end, .)
.stab
*(.stab)
.stabstr
*(.stabstr)
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.ARM.attributes
0x00000000 0x2e
.ARM.attributes
0x00000000 0x22 src/start/Cstartup.o
.ARM.attributes
0x00000022 0x32 src/start/Cstartup_SAM7.o
.ARM.attributes
0x00000054 0x32 lib/lib_AT91SAM7.o
.ARM.attributes
0x00000086 0x32 src/dfu/dfu.o
.ARM.attributes
0x000000b8 0x32 src/dfu/dbgu.o
.ARM.attributes
0x000000ea 0x32 src/os/flash.o
.ARM.attributes
0x0000011c 0x1a e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
.ARM.attributes
0x00000136 0x1a e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
.ARM.attributes
0x00000150 0x18 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_dvmd_tls.o)
.comment 0x00000000 0x2a
*(.comment)
.comment 0x00000000 0x2a src/start/Cstartup_SAM7.o
0x2b (size before relaxing)
.comment 0x00000000 0x2b lib/lib_AT91SAM7.o
.comment 0x00000000 0x2b src/dfu/dfu.o
.comment 0x00000000 0x2b src/dfu/dbgu.o
.comment 0x00000000 0x2b src/os/flash.o
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0xc8
*(.debug_aranges)
.debug_aranges
0x00000000 0x28 src/start/Cstartup.o
.debug_aranges
0x00000028 0x20 src/start/Cstartup_SAM7.o
.debug_aranges
0x00000048 0x20 lib/lib_AT91SAM7.o
.debug_aranges
0x00000068 0x20 src/dfu/dfu.o
.debug_aranges
0x00000088 0x20 src/dfu/dbgu.o
.debug_aranges
0x000000a8 0x20 src/os/flash.o
.debug_pubnames
0x00000000 0x2b7
*(.debug_pubnames)
.debug_pubnames
0x00000000 0x29 src/start/Cstartup_SAM7.o
.debug_pubnames
0x00000029 0x177 lib/lib_AT91SAM7.o
.debug_pubnames
0x000001a0 0x83 src/dfu/dfu.o
.debug_pubnames
0x00000223 0x64 src/dfu/dbgu.o
.debug_pubnames
0x00000287 0x30 src/os/flash.o
.debug_info 0x00000000 0x40e7
*(.debug_info .gnu.linkonce.wi.*)
.debug_info 0x00000000 0x6a src/start/Cstartup.o
.debug_info 0x0000006a 0x428 src/start/Cstartup_SAM7.o
.debug_info 0x00000492 0x161b lib/lib_AT91SAM7.o
.debug_info 0x00001aad 0x172c src/dfu/dfu.o
.debug_info 0x000031d9 0xb8d src/dfu/dbgu.o
.debug_info 0x00003d66 0x381 src/os/flash.o
.debug_abbrev 0x00000000 0xbb3
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x12 src/start/Cstartup.o
.debug_abbrev 0x00000012 0xd7 src/start/Cstartup_SAM7.o
.debug_abbrev 0x000000e9 0x2c6 lib/lib_AT91SAM7.o
.debug_abbrev 0x000003af 0x403 src/dfu/dfu.o
.debug_abbrev 0x000007b2 0x226 src/dfu/dbgu.o
.debug_abbrev 0x000009d8 0x1db src/os/flash.o
.debug_line 0x00000000 0x89e
*(.debug_line)
.debug_line 0x00000000 0xce src/start/Cstartup.o
.debug_line 0x000000ce 0x95 src/start/Cstartup_SAM7.o
.debug_line 0x00000163 0x20e lib/lib_AT91SAM7.o
.debug_line 0x00000371 0x315 src/dfu/dfu.o
.debug_line 0x00000686 0xf7 src/dfu/dbgu.o
.debug_line 0x0000077d 0x121 src/os/flash.o
.debug_frame 0x00000000 0x540
*(.debug_frame)
.debug_frame 0x00000000 0x24 src/start/Cstartup_SAM7.o
.debug_frame 0x00000024 0x254 lib/lib_AT91SAM7.o
.debug_frame 0x00000278 0x1b4 src/dfu/dfu.o
.debug_frame 0x0000042c 0x84 src/dfu/dbgu.o
.debug_frame 0x000004b0 0x50 src/os/flash.o
.debug_frame 0x00000500 0x20 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
.debug_frame 0x00000520 0x20 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
.debug_str 0x00000000 0x1637
*(.debug_str)
.debug_str 0x00000000 0x226 src/start/Cstartup_SAM7.o
0x233 (size before relaxing)
.debug_str 0x00000226 0x918 lib/lib_AT91SAM7.o
0xb13 (size before relaxing)
.debug_str 0x00000b3e 0x843 src/dfu/dfu.o
0xb30 (size before relaxing)
.debug_str 0x00001381 0x1f1 src/dfu/dbgu.o
0x605 (size before relaxing)
.debug_str 0x00001572 0xc5 src/os/flash.o
0x21e (size before relaxing)
.debug_loc 0x00000000 0x1193
*(.debug_loc)
.debug_loc 0x00000000 0x57 src/start/Cstartup_SAM7.o
.debug_loc 0x00000057 0x86c lib/lib_AT91SAM7.o
.debug_loc 0x000008c3 0x729 src/dfu/dfu.o
.debug_loc 0x00000fec 0xcf src/dfu/dbgu.o
.debug_loc 0x000010bb 0xd8 src/os/flash.o
.debug_macinfo
*(.debug_macinfo)
.debug_weaknames
*(.debug_weaknames)
.debug_funcnames
*(.debug_funcnames)
.debug_typenames
*(.debug_typenames)
.debug_varnames
*(.debug_varnames)
OUTPUT(dfu.elf elf32-littlearm)
.debug_ranges 0x00000000 0x1d0
.debug_ranges 0x00000000 0x20 src/start/Cstartup.o
.debug_ranges 0x00000020 0xa8 lib/lib_AT91SAM7.o
.debug_ranges 0x000000c8 0x60 src/dfu/dfu.o
.debug_ranges 0x00000128 0x48 src/dfu/dbgu.o
.debug_ranges 0x00000170 0x60 src/os/flash.o
.debug_pubtypes
0x00000000 0x485
.debug_pubtypes
0x00000000 0x6a src/start/Cstartup_SAM7.o
.debug_pubtypes
0x0000006a 0x128 lib/lib_AT91SAM7.o
.debug_pubtypes
0x00000192 0x1ec src/dfu/dfu.o
.debug_pubtypes
0x0000037e 0xb0 src/dfu/dbgu.o
.debug_pubtypes
0x0000042e 0x57 src/os/flash.o
Cross Reference Table
Symbol File
AT91F_ADC_CfgTimings lib/lib_AT91SAM7.o
AT91F_AIC_ConfigureIt lib/lib_AT91SAM7.o
src/dfu/dbgu.o
AT91F_AIC_Open lib/lib_AT91SAM7.o
AT91F_AIC_SetExceptionVector lib/lib_AT91SAM7.o
AT91F_DBGU_Get src/dfu/dbgu.o
AT91F_DBGU_Init src/dfu/dbgu.o
src/dfu/dfu.o
AT91F_DBGU_Printk src/dfu/dbgu.o
src/dfu/dfu.o
AT91F_DBGU_Ready src/dfu/dbgu.o
AT91F_Default_FIQ_handler src/start/Cstartup.o
src/start/Cstartup_SAM7.o
AT91F_Default_IRQ_handler src/start/Cstartup.o
src/start/Cstartup_SAM7.o
AT91F_LowLevelInit src/start/Cstartup_SAM7.o
src/start/Cstartup.o
AT91F_PDC_Close lib/lib_AT91SAM7.o
AT91F_PDC_Open lib/lib_AT91SAM7.o
AT91F_PDC_ReceiveFrame lib/lib_AT91SAM7.o
AT91F_PDC_SendFrame lib/lib_AT91SAM7.o
AT91F_PMC_GetMasterClock lib/lib_AT91SAM7.o
AT91F_RTTReadValue lib/lib_AT91SAM7.o
AT91F_SPI_Close lib/lib_AT91SAM7.o
AT91F_SSC_Configure lib/lib_AT91SAM7.o
AT91F_SSC_SetBaudrate lib/lib_AT91SAM7.o
AT91F_Spurious_handler src/start/Cstartup.o
src/start/Cstartup_SAM7.o
AT91F_US_Close lib/lib_AT91SAM7.o
AT91F_US_Configure lib/lib_AT91SAM7.o
src/dfu/dbgu.o
IRQ_Handler_Entry src/start/Cstartup.o
Top_Stack src/start/Cstartup.o
__aeabi_idiv e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
__aeabi_idiv0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_dvmd_tls.o)
e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
__aeabi_idivmod e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
src/dfu/dfu.o
__aeabi_ldiv0 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_dvmd_tls.o)
__aeabi_uidiv e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
lib/lib_AT91SAM7.o
__aeabi_uidivmod e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
lib/lib_AT91SAM7.o
__bss_end__ src/start/Cstartup.o
__bss_start__ src/start/Cstartup.o
__divsi3 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_divsi3.o)
__udivsi3 e:/programme/mingw/libexec/arm/bin/../lib/gcc/arm-none-eabi/4.5.2\libgcc.a(_udivsi3.o)
_data src/start/Cstartup.o
_data_flash src/start/Cstartup.o
_data_shared src/start/Cstartup.o
_edata src/start/Cstartup.o
_edata_shared src/start/Cstartup.o
_etext src/start/Cstartup.o
_remap_call_dfu src/start/Cstartup.o
_startup src/start/Cstartup.o
dfu_api src/dfu/dfu.o
dfu_cfg_descriptor src/dfu/dfu.o
dfu_dev_descriptor src/dfu/dfu.o
dfu_ep0_handler src/dfu/dfu.o
dfu_main src/dfu/dfu.o
src/start/Cstartup.o
dfu_state src/dfu/dfu.o
src/start/Cstartup.o
exit src/start/Cstartup.o
flash_init src/os/flash.o
src/dfu/dfu.o
flash_page src/os/flash.o
src/dfu/dfu.o
foo src/dfu/dfu.o

127
firmware/dfu.sym Normal file
View File

@ -0,0 +1,127 @@
U _startup
00000000 t reset
00000002 a AT91C_ID_PIOA
00000004 t undefvec
00000008 t swivec
0000000c t pabtvec
00000010 t dabtvec
00000011 a ARM_MODE_FIQ
00000012 a ARM_MODE_IRQ
00000013 a ARM_MODE_SVC
00000014 t rsvdvec
00000018 t irqvec
0000001c t fiqvec
00000020 t dfu_state_dummy
00000024 t FIQ_Handler_Entry
0000003c a PIOA_PDSR
00000040 a F_BIT
0000004c T IRQ_Handler_Entry
00000080 a I_BIT
0000009c t .RAM_TOP
000000a0 t InitReset
000000fc t dfu_magic_end
00000100 a AIC_IVR
00000104 a AIC_FVR
00000108 t LoopRelDS
00000130 a AIC_EOICR
00000144 t _reloc_dfu
00000150 t LoopRel
0000016c t LoopZI
00000188 t loop_rel_t
000001a0 T exit
000001a4 T AT91F_Default_FIQ_handler
000001a8 T AT91F_Default_IRQ_handler
000001ac T AT91F_Spurious_handler
000001f0 T AT91F_LowLevelInit
000002fc t AT91F_PDC_SetNextRx
00000308 t AT91F_PDC_SetNextTx
00000314 t AT91F_PDC_SetRx
00000320 t AT91F_PDC_SetTx
0000032c t AT91F_PDC_DisableTx
00000338 t AT91F_PDC_DisableRx
00000344 t AT91F_CKGR_GetMainClock
0000035c T AT91F_AIC_ConfigureIt
00000394 T AT91F_AIC_SetExceptionVector
000003c8 T AT91F_AIC_Open
00000400 a FIQ_Stack_Size
00000400 a IRQ_Stack_Size
00000444 T AT91F_PDC_Open
000004b0 T AT91F_PDC_Close
00000508 T AT91F_PDC_SendFrame
0000055c T AT91F_PDC_ReceiveFrame
000005b0 T AT91F_PMC_GetMasterClock
0000063c T AT91F_RTTReadValue
0000066c T AT91F_SPI_Close
000006ac T AT91F_ADC_CfgTimings
00000714 T AT91F_SSC_SetBaudrate
00000778 T AT91F_SSC_Configure
000007c4 T AT91F_US_Configure
00000844 T AT91F_US_Close
0000087c t udp_ep0_send_data
00000958 t udp_ep0_send_zlp
0000099c t udp_ep0_send_stall
000009e0 t handle_getstate
00000a08 t handle_upload.clone.0
00000a7c t handle_dnload.clone.1
00000bd0 t handle_getstatus
00000c74 T dfu_ep0_handler
00000e90 t AT91F_PIO_CfgOutput.clone.5
00000ea0 t udp_init
00000ed8 t AT91F_PIO_SetOutput.clone.6
00000ee4 t AT91F_PIO_ClearOutput.clone.7
00000ef0 t AT91F_RSTSoftReset.clone.8
00000f00 a AIC_MCR_RCR
00000f04 t dfu_udp_irq
000012bc t dfu_switch
000012d8 T dfu_main
0000139c T AT91F_DBGU_Ready
000013b0 T AT91F_DBGU_Init
00001440 T AT91F_DBGU_Printk
00001468 T AT91F_DBGU_Get
00001488 t DBGU_irq_handler
000014dc t AT91F_MC_EFC_PerformCmd.clone.3
000014e8 T flash_page
00001544 T flash_init
00001558 t .udivsi3_skip_div0_test
00001558 T __aeabi_uidiv
00001558 T __udivsi3
0000164c T __aeabi_uidivmod
0000166c T __aeabi_idiv
0000166c T __divsi3
00001674 t .divsi3_skip_div0_test
00001794 T __aeabi_idivmod
000017b4 W __aeabi_idiv0
000017b4 W __aeabi_ldiv0
000017b8 T dfu_dev_descriptor
000017ca T dfu_cfg_descriptor
000017f0 t usb_strings
00001808 t string0
0000180c t string1
00001874 t string2
000018b2 t string3
000018e6 t string4
00001942 t string5
00001ac0 A _etext
00001ac8 A _data_flash
00003fd0 R dfu_api
00200020 D _data_shared
00200020 D dfu_state
00200024 d dfu_status
00200028 A _edata_shared
00201ac0 D _data
00201ac0 D _remap_call_dfu
00201adc d ptr
00201ae0 D foo
00201ae4 B __bss_start
00201ae4 B __bss_start__
00201ae4 A _edata
00201ae4 b pagebuf32
00201be4 b cur_config
00201be8 b value.6564
00201bec A __bss_end__
00201bec A _end
00208000 N Top_Stack
08000000 a PIO_BOOTLDR
fffff000 a AT91C_BASE_AIC
fffff400 a AT91C_BASE_PIOA
fffffc10 a AT91C_PMC_PCER

131
firmware/doc/dfu.txt Normal file
View File

@ -0,0 +1,131 @@
- data that is needed from both app and dfu mode
- code that is needed from both app and dfu mode
- function pointers
- copy code to RAM in case of DFU switch
- data that is only needed in DFU mode
- can be overwritten in case of reset-to-application
- data that is only needed in app mode
- can be overwritten with DFU data in case of DFU switch
- code that is only needed in DFU mode
- has to be copied to ram in case of DFU switch
- code that is only needed in app mode
- can be read from flash, no action required
=> abandoned that complicated idea.
now all DFU functions are __ramfunc's and thus always present.
interaction between app and dfu code:
- dfu_switch(void)
- dfu_status (can be put in accessor function, if required)
- dfu_cfg_descriptor
- dfu_dev_descriptor
- dfu_ep0_handler()
order of events at boot;
- start at reset vector in flash
- AT91F_LowLevelInit()
- setup stack for each mode
- relocate 'data' of bootloader, including ramfunc/vectram
- clear 'bss' of bootloader
- call remap command
- call usb initialization (irq, clock)
- if keypress,
- call dfu_main()
- wait for ep0 / busreset interrupt
- else call main()
memory layout:
0: lowlevel startup code
Cstartup.o 0x00bc
Cstartup_SAM7.o 0x0100
dfufunc 0x1dcc
dfustruct 0x0038
text text 0x0070
data data 0x0000
bss bss 0x000c
flash = text + data (= 8k)
ram/rel = data + bss (12 bytes)
If we drop the DFU-can-flash-DFU requirement, we can leave all DFU related code
in flash. no need for any function to be permanently in RAM. However, not
preventing this feature in some future version, we shouldn't do that.
Function DFU runtime
udp_init x x RAM
udp_ep0_send_data x x RAM
udp_ep0_send_zlp x x RAM
udp_sp0_send_stall x x RAM
handle_dnload x - flash/relocated
handle_upload x - flash/relocated
handle_getstatus x - flash/relocated
handle_getstate x - flash/relocated
dfu_ep0_handler x x RAM
dfu_dev_descriptor x - flash/relocated
dfu_cfg_descriptor x - flash/relocated
dfu_udp_ep0_handler x - flash/relocated
dfu_udp_irq x - flash/relocated
dfu_switch - x RAM
dfu_main x - flash/relocated
vectram x x flash/relocated/switched
IRQ_Handler_EntryR x x flash/relocated/switched
_remap x - flash/reloaded
dfu_api x x flash (const anyway)
dfu_state x x RAM
preconditions:
- dfu code assumes to be loaded to address zero to make it work from both ram and rom
startup:
- exception vectors (in flash)
- call lowlevel_init
- setup user/supervisor/FIQ/IRQ stack
- relocate dfu_state
- if DFU switch is pressed
- jump to dfu_main in flash
- relocate all of DFU .text/.data into ram (including exception vectors)
- initialize DFU .bss
- remap RAM to address zero
- if DFU switch is not pressed jump to entry address of app
- Cstartup_app.S
- relocate application .data
- initialize application .bss
- jump to appliction main
- application uses dfu_api in flash, pointing to in-flash data
- application calls dfu_switch()
- disable all interupts but USB
- relocate all of DFU .text/.data into ram (including exception vectors)
- remap RAM to address zero
- check whether app has already remapped RAM before !?!
memory map:
load_addr run_Addr
0x00100000 0x00000000 exception vectors (DFU Cstartup)
Cstartup_SAM7
0x00200000
DFU constants:
_etext:
_data: 0x200000
_edata:
APP contants:
_data: _edata_dfu

View File

@ -0,0 +1,34 @@
- code to control digital potentiometers via SPI [MM]
- chip select not SPI CS
- idea: use comparator to determine voltage range, then reconfigure amplifier
- later
- problem: capacitance of digital poti
- idea 1:
- idea 2: logarithmic amplifier using transistor
- ADC driver
- core [MM]
- trigger function (we want to read all values ASAP)
- callback function (once new values are available)
- init function (initialize ADC)
- USB integration [HW]
- simple READ_ADC command
- one reply packet with all ADC channels
- OS timer
- how often?
- 'load modulation' driver
x set PA2/PA3 to binary 0..3
x add IO definitions for
- PLL INHIBIT low
- SPI_SS1_GAIN
- SPI_SS2_DATA_THRESHOLD
- BOOTLDR
- sampled data continuous output into file / stdout
- trigger sampling by raising/falling edge (configurable)
- sample only one buffer

42
firmware/doc/piccsim.txt Normal file
View File

@ -0,0 +1,42 @@
PICCSIM design
ISO14443 anticollision:
- Configure TC
- to reset TC2 on every falling edge
- to use FORCE_FAST for TC IRQ
- to enable TC2 ETRGS
- CARRIER_DIV is switched to 212kHz / 424kHz
- this results in SSC Rx is 4x (2x?) oversampling
- Set SSC Rx start condition to 4x/2x SOF pattern
- upon reception of first falling edge, we
- end up in TC FIQ
- read out TC0 current value
- reconfigure TC0 RA/RB to be in-phase with previously-read TC0
value (subtracting some fixed offset depending on FIQ latency)
- reconfigure TC2
- to use external event on every rising edge
- to reset(trigger) on every external event
- to clear TIOA2 on RC compare (RC is high)
- to set TIOA2 on RA compare (RA set later)
- disable TC2 IRQ (and FIQ FAST_FORCE)
- Wait for SSC Rx Interrupt (DMA complete, or PIO)
- Read and decode single 32bit word
- determine whether it is REQA or WUPA
- abort if not, start over
- depending on last bit 0/1, configure TC2 RA (FDT)
- recconfig TC0 to produce 1.6MHz CARRIER_DIV clock for SSC Tx
- make sure this is done synchronously
-
- set up SSC Tx
- DMA with pre-encoded (and user-configured) ATQA
- start Tx at a rising edge of TF (asserted by TC2 RA)
- Send Interrupt once TX DMA is done
- Once TC2 RA compare happens, the rising edge of TIOA2 will trigger SSC
- Wait for SSC Tx DMA to finish
- Repeat similar steps for ANTICOL/SELECT command, differences:
- single-byte compare after frame Rx is not sufficient
- evaluate number of valid bits ASAP
- we might receive and transmit split frame at non-byte-boundaries
- just shift a prepared ANTICOL/Select response
- make sure parity is handled correctly!
- Once we've completed the select, we go on with normal

1947
firmware/include/AT91SAM7.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,97 @@
/*
* linux/include/asm-arm/assembler.h
*
* Copyright (C) 1996-2000 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This file contains arm architecture specific defines
* for the different processors.
*
* Do not include any C declarations in this file - it is included by
* assembler source.
*/
#ifndef __ASSEMBLY__
#error "Only include this from assembly code"
#endif
#include <asm/ptrace.h>
#define pull lsl
#define push lsr
#define get_byte_0 lsr #24
#define get_byte_1 lsr #16
#define get_byte_2 lsr #8
#define get_byte_3 lsl #0
#define put_byte_0 lsl #24
#define put_byte_1 lsl #16
#define put_byte_2 lsl #8
#define put_byte_3 lsl #0
#define PLD(code...)
#define MODE_USR USR_MODE
#define MODE_FIQ FIQ_MODE
#define MODE_IRQ IRQ_MODE
#define MODE_SVC SVC_MODE
#define DEFAULT_FIQ MODE_FIQ
/*
* LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
*/
#ifdef __STDC__
#define LOADREGS(cond, base, reglist...)\
ldm##cond base,reglist
#else
#define LOADREGS(cond, base, reglist...)\
ldm/**/cond base,reglist
#endif
/*
* Build a return instruction for this processor type.
*/
#define RETINSTR(instr, regs...)\
instr regs
/*
* Enable and disable interrupts
*/
.macro disable_irq
msr cpsr_c, #PSR_I_BIT | SVC_MODE
.endm
.macro enable_irq
msr cpsr_c, #SVC_MODE
.endm
/*
* Save the current IRQ state and disable IRQs. Note that this macro
* assumes FIQs are enabled, and that the processor is in SVC mode.
*/
.macro save_and_disable_irqs, oldcpsr
mrs \oldcpsr, cpsr
disable_irq
.endm
/*
* Restore interrupt state previously stored in a register. We don't
* guarantee that this will preserve the flags.
*/
.macro restore_irqs, oldcpsr
msr cpsr_c, \oldcpsr
.endm
/*
* These two are used to save LR/restore PC over a user-based access.
* The old 26-bit architecture requires that we do. On 32-bit
* architecture, we can safely ignore this requirement.
*/
.macro save_lr
.endm
.macro restore_pc
mov pc, lr
.endm

View File

@ -0,0 +1,106 @@
/*
* linux/include/asm-arm/atomic.h
*
* Copyright (C) 1996 Russell King.
* Copyright (C) 2002 Deep Blue Solutions Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __ASM_ARM_ATOMIC_H
#define __ASM_ARM_ATOMIC_H
typedef struct { volatile int counter; } atomic_t;
#define ATOMIC_INIT(i) { (i) }
#define atomic_read(v) ((v)->counter)
#include <asm/system.h>
#include <asm/compiler.h>
#define atomic_set(v,i) (((v)->counter) = (i))
static inline int atomic_add_return(int i, atomic_t *v)
{
unsigned long flags;
int val;
local_irq_save(flags);
val = v->counter;
v->counter = val += i;
local_irq_restore(flags);
return val;
}
static inline int atomic_sub_return(int i, atomic_t *v)
{
unsigned long flags;
int val;
local_irq_save(flags);
val = v->counter;
v->counter = val -= i;
local_irq_restore(flags);
return val;
}
static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
{
int ret;
unsigned long flags;
local_irq_save(flags);
ret = v->counter;
if (likely(ret == old))
v->counter = new;
local_irq_restore(flags);
return ret;
}
static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
{
unsigned long flags;
local_irq_save(flags);
*addr &= ~mask;
local_irq_restore(flags);
}
#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
static inline int atomic_add_unless(atomic_t *v, int a, int u)
{
int c, old;
c = atomic_read(v);
while (c != u && (old = atomic_cmpxchg((v), c, c + a)) != c)
c = old;
return c != u;
}
#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
#define atomic_add(i, v) (void) atomic_add_return(i, v)
#define atomic_inc(v) (void) atomic_add_return(1, v)
#define atomic_sub(i, v) (void) atomic_sub_return(i, v)
#define atomic_dec(v) (void) atomic_sub_return(1, v)
#define atomic_inc_and_test(v) (atomic_add_return(1, v) == 0)
#define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0)
#define atomic_inc_return(v) (atomic_add_return(1, v))
#define atomic_dec_return(v) (atomic_sub_return(1, v))
#define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
#define atomic_add_negative(i,v) (atomic_add_return(i, v) < 0)
/* Atomic operations are already serializing on ARM */
#define smp_mb__before_atomic_dec() barrier()
#define smp_mb__after_atomic_dec() barrier()
#define smp_mb__before_atomic_inc() barrier()
#define smp_mb__after_atomic_inc() barrier()
#endif

View File

@ -0,0 +1,225 @@
/*
* Copyright 1995, Russell King.
* Various bits and pieces copyrights include:
* Linus Torvalds (test_bit).
* Big endian support: Copyright 2001, Nicolas Pitre
* reworked by rmk.
*
* bit 0 is the LSB of an "unsigned long" quantity.
*
* Please note that the code in this file should never be included
* from user space. Many of these are not implemented in assembler
* since they would be too costly. Also, they require privileged
* instructions (which are not available from user mode) to ensure
* that they are atomic.
*/
#ifndef __ASM_ARM_BITOPS_H
#define __ASM_ARM_BITOPS_H
#include <asm/system.h>
#define smp_mb__before_clear_bit() mb()
#define smp_mb__after_clear_bit() mb()
/*
* These functions are the basis of our bit ops.
*
* First, the atomic bitops. These use native endian.
*/
static inline void ____atomic_set_bit(unsigned int bit, volatile unsigned long *p)
{
unsigned long flags;
unsigned long mask = 1UL << (bit & 31);
p += bit >> 5;
local_irq_save(flags);
*p |= mask;
local_irq_restore(flags);
}
static inline void ____atomic_clear_bit(unsigned int bit, volatile unsigned long *p)
{
unsigned long flags;
unsigned long mask = 1UL << (bit & 31);
p += bit >> 5;
local_irq_save(flags);
*p &= ~mask;
local_irq_restore(flags);
}
static inline void ____atomic_change_bit(unsigned int bit, volatile unsigned long *p)
{
unsigned long flags;
unsigned long mask = 1UL << (bit & 31);
p += bit >> 5;
local_irq_save(flags);
*p ^= mask;
local_irq_restore(flags);
}
static inline int
____atomic_test_and_set_bit(unsigned int bit, volatile unsigned long *p)
{
unsigned long flags;
unsigned int res;
unsigned long mask = 1UL << (bit & 31);
p += bit >> 5;
local_irq_save(flags);
res = *p;
*p = res | mask;
local_irq_restore(flags);
return res & mask;
}
static inline int
____atomic_test_and_clear_bit(unsigned int bit, volatile unsigned long *p)
{
unsigned long flags;
unsigned int res;
unsigned long mask = 1UL << (bit & 31);
p += bit >> 5;
local_irq_save(flags);
res = *p;
*p = res & ~mask;
local_irq_restore(flags);
return res & mask;
}
static inline int
____atomic_test_and_change_bit(unsigned int bit, volatile unsigned long *p)
{
unsigned long flags;
unsigned int res;
unsigned long mask = 1UL << (bit & 31);
p += bit >> 5;
local_irq_save(flags);
res = *p;
*p = res ^ mask;
local_irq_restore(flags);
return res & mask;
}
//#include <asm-generic/bitops/non-atomic.h>
/*
* A note about Endian-ness.
* -------------------------
*
* When the ARM is put into big endian mode via CR15, the processor
* merely swaps the order of bytes within words, thus:
*
* ------------ physical data bus bits -----------
* D31 ... D24 D23 ... D16 D15 ... D8 D7 ... D0
* little byte 3 byte 2 byte 1 byte 0
* big byte 0 byte 1 byte 2 byte 3
*
* This means that reading a 32-bit word at address 0 returns the same
* value irrespective of the endian mode bit.
*
* Peripheral devices should be connected with the data bus reversed in
* "Big Endian" mode. ARM Application Note 61 is applicable, and is
* available from http://www.arm.com/.
*
* The following assumes that the data bus connectivity for big endian
* mode has been followed.
*
* Note that bit 0 is defined to be 32-bit word bit 0, not byte 0 bit 0.
*/
/*
* Little endian assembly bitops. nr = 0 -> byte 0 bit 0.
*/
extern void _set_bit_le(int nr, volatile unsigned long * p);
extern void _clear_bit_le(int nr, volatile unsigned long * p);
extern void _change_bit_le(int nr, volatile unsigned long * p);
extern int _test_and_set_bit_le(int nr, volatile unsigned long * p);
extern int _test_and_clear_bit_le(int nr, volatile unsigned long * p);
extern int _test_and_change_bit_le(int nr, volatile unsigned long * p);
extern int _find_first_zero_bit_le(const void * p, unsigned size);
extern int _find_next_zero_bit_le(const void * p, int size, int offset);
extern int _find_first_bit_le(const unsigned long *p, unsigned size);
extern int _find_next_bit_le(const unsigned long *p, int size, int offset);
/*
* Big endian assembly bitops. nr = 0 -> byte 3 bit 0.
*/
extern void _set_bit_be(int nr, volatile unsigned long * p);
extern void _clear_bit_be(int nr, volatile unsigned long * p);
extern void _change_bit_be(int nr, volatile unsigned long * p);
extern int _test_and_set_bit_be(int nr, volatile unsigned long * p);
extern int _test_and_clear_bit_be(int nr, volatile unsigned long * p);
extern int _test_and_change_bit_be(int nr, volatile unsigned long * p);
extern int _find_first_zero_bit_be(const void * p, unsigned size);
extern int _find_next_zero_bit_be(const void * p, int size, int offset);
extern int _find_first_bit_be(const unsigned long *p, unsigned size);
extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
/*
* The __* form of bitops are non-atomic and may be reordered.
*/
#define ATOMIC_BITOP_LE(name,nr,p) \
(__builtin_constant_p(nr) ? \
____atomic_##name(nr, p) : \
_##name##_le(nr,p))
#define ATOMIC_BITOP_BE(name,nr,p) \
(__builtin_constant_p(nr) ? \
____atomic_##name(nr, p) : \
_##name##_be(nr,p))
#define NONATOMIC_BITOP(name,nr,p) \
(____nonatomic_##name(nr, p))
/*
* These are the little endian, atomic definitions.
*/
#define set_bit(nr,p) ATOMIC_BITOP_LE(set_bit,nr,p)
#define clear_bit(nr,p) ATOMIC_BITOP_LE(clear_bit,nr,p)
#define change_bit(nr,p) ATOMIC_BITOP_LE(change_bit,nr,p)
#define test_and_set_bit(nr,p) ATOMIC_BITOP_LE(test_and_set_bit,nr,p)
#define test_and_clear_bit(nr,p) ATOMIC_BITOP_LE(test_and_clear_bit,nr,p)
#define test_and_change_bit(nr,p) ATOMIC_BITOP_LE(test_and_change_bit,nr,p)
#define find_first_zero_bit(p,sz) _find_first_zero_bit_le(p,sz)
#define find_next_zero_bit(p,sz,off) _find_next_zero_bit_le(p,sz,off)
#define find_first_bit(p,sz) _find_first_bit_le(p,sz)
#define find_next_bit(p,sz,off) _find_next_bit_le(p,sz,off)
#define WORD_BITOFF_TO_LE(x) ((x))
#if 0
#include <asm-generic/bitops/ffz.h>
#include <asm-generic/bitops/__ffs.h>
#include <asm-generic/bitops/fls.h>
#include <asm-generic/bitops/ffs.h>
#include <asm-generic/bitops/fls64.h>
#include <asm-generic/bitops/sched.h>
#include <asm-generic/bitops/hweight.h>
#endif
#define BITS_PER_LONG 32
#define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
#define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
static inline int test_bit(int nr, const volatile unsigned long *addr)
{
return 1UL & (addr[BITOP_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
}
#endif /* _ARM_BITOPS_H */

View File

@ -0,0 +1,7 @@
#ifndef _ASM_COMPILER_H
#define _ASM_COMPILER_H
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif

View File

@ -0,0 +1,54 @@
#ifndef _LINUX_CTYPE_H
#define _LINUX_CTYPE_H
/*
* NOTE! This ctype does not handle EOF like the standard C
* library is required to.
*/
#define _U 0x01 /* upper */
#define _L 0x02 /* lower */
#define _D 0x04 /* digit */
#define _C 0x08 /* cntrl */
#define _P 0x10 /* punct */
#define _S 0x20 /* white space (space/lf/tab) */
#define _X 0x40 /* hex digit */
#define _SP 0x80 /* hard space (0x20) */
extern unsigned char _ctype[];
#define __ismask(x) (_ctype[(int)(unsigned char)(x)])
#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
#define iscntrl(c) ((__ismask(c)&(_C)) != 0)
#define isdigit(c) ((__ismask(c)&(_D)) != 0)
#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
#define islower(c) ((__ismask(c)&(_L)) != 0)
#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
#define ispunct(c) ((__ismask(c)&(_P)) != 0)
#define isspace(c) ((__ismask(c)&(_S)) != 0)
#define isupper(c) ((__ismask(c)&(_U)) != 0)
#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
#define isascii(c) (((unsigned char)(c))<=0x7f)
#define toascii(c) (((unsigned char)(c))&0x7f)
static inline unsigned char __tolower(unsigned char c)
{
if (isupper(c))
c -= 'A'-'a';
return c;
}
static inline unsigned char __toupper(unsigned char c)
{
if (islower(c))
c -= 'a'-'A';
return c;
}
#define tolower(c) __tolower(c)
#define toupper(c) __toupper(c)
#endif

View File

@ -0,0 +1,48 @@
#ifndef __ASM_ARM_DIV64
#define __ASM_ARM_DIV64
#include <asm/system.h>
/*
* The semantics of do_div() are:
*
* uint32_t do_div(uint64_t *n, uint32_t base)
* {
* uint32_t remainder = *n % base;
* *n = *n / base;
* return remainder;
* }
*
* In other words, a 64-bit dividend with a 32-bit divisor producing
* a 64-bit result and a 32-bit remainder. To accomplish this optimally
* we call a special __do_div64 helper with completely non standard
* calling convention for arguments and results (beware).
*/
#ifdef __ARMEB__
#define __xh "r0"
#define __xl "r1"
#else
#define __xl "r0"
#define __xh "r1"
#endif
#define do_div(n,base) \
({ \
register unsigned int __base asm("r4") = base; \
register unsigned long long __n asm("r0") = n; \
register unsigned long long __res asm("r2"); \
register unsigned int __rem asm(__xh); \
asm( __asmeq("%0", __xh) \
__asmeq("%1", "r2") \
__asmeq("%2", "r0") \
__asmeq("%3", "r4") \
"bl __do_div64" \
: "=r" (__rem), "=r" (__res) \
: "r" (__n), "r" (__base) \
: "ip", "lr", "cc"); \
n = __res; \
__rem; \
})
#endif

View File

@ -0,0 +1,18 @@
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
/* asm-arm/linkage.h */
#define __ALIGN .align 0
#define __ALIGN_STR ".align 0"
/* linux/linkage.h */
#define ALIGN __ALIGN
#define ENTRY(name) \
.globl name; \
ALIGN; \
name:
#endif

View File

@ -0,0 +1,128 @@
/*
* linux/include/asm-arm/ptrace.h
*
* Copyright (C) 1996-2003 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __ASM_ARM_PTRACE_H
#define __ASM_ARM_PTRACE_H
/*
* PSR bits
*/
#define USR26_MODE 0x00000000
#define FIQ26_MODE 0x00000001
#define IRQ26_MODE 0x00000002
#define SVC26_MODE 0x00000003
#define USR_MODE 0x00000010
#define FIQ_MODE 0x00000011
#define IRQ_MODE 0x00000012
#define SVC_MODE 0x00000013
#define ABT_MODE 0x00000017
#define UND_MODE 0x0000001b
#define SYSTEM_MODE 0x0000001f
#define MODE32_BIT 0x00000010
#define MODE_MASK 0x0000001f
#define PSR_T_BIT 0x00000020
#define PSR_F_BIT 0x00000040
#define PSR_I_BIT 0x00000080
#define PSR_J_BIT 0x01000000
#define PSR_Q_BIT 0x08000000
#define PSR_V_BIT 0x10000000
#define PSR_C_BIT 0x20000000
#define PSR_Z_BIT 0x40000000
#define PSR_N_BIT 0x80000000
#define PCMASK 0
/*
* Groups of PSR bits
*/
#define PSR_f 0xff000000 /* Flags */
#define PSR_s 0x00ff0000 /* Status */
#define PSR_x 0x0000ff00 /* Extension */
#define PSR_c 0x000000ff /* Control */
#ifndef __ASSEMBLY__
/*
* This struct defines the way the registers are stored on the
* stack during a system call. Note that sizeof(struct pt_regs)
* has to be a multiple of 8.
*/
struct pt_regs {
long uregs[18];
};
#define ARM_cpsr uregs[16]
#define ARM_pc uregs[15]
#define ARM_lr uregs[14]
#define ARM_sp uregs[13]
#define ARM_ip uregs[12]
#define ARM_fp uregs[11]
#define ARM_r10 uregs[10]
#define ARM_r9 uregs[9]
#define ARM_r8 uregs[8]
#define ARM_r7 uregs[7]
#define ARM_r6 uregs[6]
#define ARM_r5 uregs[5]
#define ARM_r4 uregs[4]
#define ARM_r3 uregs[3]
#define ARM_r2 uregs[2]
#define ARM_r1 uregs[1]
#define ARM_r0 uregs[0]
#define ARM_ORIG_r0 uregs[17]
#define user_mode(regs) \
(((regs)->ARM_cpsr & 0xf) == 0)
#ifdef CONFIG_ARM_THUMB
#define thumb_mode(regs) \
(((regs)->ARM_cpsr & PSR_T_BIT))
#else
#define thumb_mode(regs) (0)
#endif
#define processor_mode(regs) \
((regs)->ARM_cpsr & MODE_MASK)
#define interrupts_enabled(regs) \
(!((regs)->ARM_cpsr & PSR_I_BIT))
#define fast_interrupts_enabled(regs) \
(!((regs)->ARM_cpsr & PSR_F_BIT))
#define condition_codes(regs) \
((regs)->ARM_cpsr & (PSR_V_BIT|PSR_C_BIT|PSR_Z_BIT|PSR_N_BIT))
/* Are the current registers suitable for user mode?
* (used to maintain security in signal handlers)
*/
static inline int valid_user_regs(struct pt_regs *regs)
{
if (user_mode(regs) &&
(regs->ARM_cpsr & (PSR_F_BIT|PSR_I_BIT)) == 0)
return 1;
/*
* Force CPSR to something logical...
*/
regs->ARM_cpsr &= PSR_f | PSR_s | PSR_x | PSR_T_BIT | MODE32_BIT;
return 0;
}
#define pc_pointer(v) \
((v) & ~PCMASK)
#define instruction_pointer(regs) \
(pc_pointer((regs)->ARM_pc))
#define profile_pc(regs) instruction_pointer(regs)
#endif /* __ASSEMBLY__ */
#endif

View File

@ -0,0 +1,109 @@
#ifndef __ASM_ARM_SYSTEM_H
#define __ASM_ARM_SYSTEM_H
/* Generic ARM7TDMI (ARMv4T) synchronisation primitives, mostly
* taken from Linux kernel source, licensed under GPL */
#define local_irq_save(x) \
({ \
unsigned long temp; \
(void) (&temp == &x); \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_save\n" \
" orr %1, %0, #128\n" \
" msr cpsr_c, %1" \
: "=r" (x), "=r" (temp) \
: \
: "memory", "cc"); \
})
/*
* Enable IRQs
*/
#define local_irq_enable() \
({ \
unsigned long temp; \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_enable\n" \
" bic %0, %0, #128\n" \
" msr cpsr_c, %0" \
: "=r" (temp) \
: \
: "memory", "cc"); \
})
/*
* Disable IRQs
*/
#define local_irq_disable() \
({ \
unsigned long temp; \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_irq_disable\n" \
" orr %0, %0, #128\n" \
" msr cpsr_c, %0" \
: "=r" (temp) \
: \
: "memory", "cc"); \
})
/*
* Enable FIQs
*/
#define local_fiq_enable() \
({ \
unsigned long temp; \
__asm__ __volatile__( \
"mrs %0, cpsr @ stf\n" \
" bic %0, %0, #64\n" \
" msr cpsr_c, %0" \
: "=r" (temp) \
: \
: "memory", "cc"); \
})
/*
* Disable FIQs
*/
#define local_fiq_disable() \
({ \
unsigned long temp; \
__asm__ __volatile__( \
"mrs %0, cpsr @ clf\n" \
" orr %0, %0, #64\n" \
" msr cpsr_c, %0" \
: "=r" (temp) \
: \
: "memory", "cc"); \
})
/*
* Save the current interrupt enable state.
*/
#define local_save_flags(x) \
({ \
__asm__ __volatile__( \
"mrs %0, cpsr @ local_save_flags" \
: "=r" (x) : : "memory", "cc"); \
})
/*
* restore saved IRQ & FIQ state
*/
#define local_irq_restore(x) \
__asm__ __volatile__( \
"msr cpsr_c, %0 @ local_irq_restore\n" \
: \
: "r" (x) \
: "memory", "cc")
#define irqs_disabled() \
({ \
unsigned long flags; \
local_save_flags(flags); \
(int)(flags & PSR_I_BIT); \
})
#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"
#endif

14
firmware/include/board.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef __BOARD_H__
#define __BOARD_H__
#include <AT91SAM7.h>
#include <lib_AT91SAM7.h>
/*--------------*/
/* Master Clock */
/*--------------*/
#define EXT_OSC 18432000 // External Crystal Oscillator
#define MCK 47923200 // Resulting PLL CLock
#define ENVIRONMENT_SIZE ( AT91C_IFLASH_PAGE_SIZE )
#endif/*__BOARD_H__*/

271
firmware/include/cl_rc632.h Normal file
View File

@ -0,0 +1,271 @@
/* Register definitions for Philips CL RC632 RFID Reader IC
*
* (C) 2005 Harald Welte <laforge@gnumonks.org>
*
* Licensed under GNU General Public License, Version 2
*/
#ifndef _CLRC632_H
#define _CLRC632_H
enum rc632_registers {
RC632_REG_PAGE0 = 0x00,
RC632_REG_COMMAND = 0x01,
RC632_REG_FIFO_DATA = 0x02,
RC632_REG_PRIMARY_STATUS = 0x03,
RC632_REG_FIFO_LENGTH = 0x04,
RC632_REG_SECONDARY_STATUS = 0x05,
RC632_REG_INTERRUPT_EN = 0x06,
RC632_REG_INTERRUPT_RQ = 0x07,
RC632_REG_PAGE1 = 0x08,
RC632_REG_CONTROL = 0x09,
RC632_REG_ERROR_FLAG = 0x0a,
RC632_REG_COLL_POS = 0x0b,
RC632_REG_TIMER_VALUE = 0x0c,
RC632_REG_CRC_RESULT_LSB = 0x0d,
RC632_REG_CRC_RESULT_MSB = 0x0e,
RC632_REG_BIT_FRAMING = 0x0f,
RC632_REG_PAGE2 = 0x10,
RC632_REG_TX_CONTROL = 0x11,
RC632_REG_CW_CONDUCTANCE = 0x12,
RC632_REG_MOD_CONDUCTANCE = 0x13,
RC632_REG_CODER_CONTROL = 0x14,
RC632_REG_MOD_WIDTH = 0x15,
RC632_REG_MOD_WIDTH_SOF = 0x16,
RC632_REG_TYPE_B_FRAMING = 0x17,
RC632_REG_PAGE3 = 0x18,
RC632_REG_RX_CONTROL1 = 0x19,
RC632_REG_DECODER_CONTROL = 0x1a,
RC632_REG_BIT_PHASE = 0x1b,
RC632_REG_RX_THRESHOLD = 0x1c,
RC632_REG_BPSK_DEM_CONTROL = 0x1d,
RC632_REG_RX_CONTROL2 = 0x1e,
RC632_REG_CLOCK_Q_CONTROL = 0x1f,
RC632_REG_PAGE4 = 0x20,
RC632_REG_RX_WAIT = 0x21,
RC632_REG_CHANNEL_REDUNDANCY = 0x22,
RC632_REG_CRC_PRESET_LSB = 0x23,
RC632_REG_CRC_PRESET_MSB = 0x24,
RC632_REG_TIME_SLOT_PERIOD = 0x25,
RC632_REG_MFOUT_SELECT = 0x26,
RC632_REG_PRESET_27 = 0x27,
RC632_REG_PAGE5 = 0x28,
RC632_REG_FIFO_LEVEL = 0x29,
RC632_REG_TIMER_CLOCK = 0x2a,
RC632_REG_TIMER_CONTROL = 0x2b,
RC632_REG_TIMER_RELOAD = 0x2c,
RC632_REG_IRQ_PIN_CONFIG = 0x2d,
RC632_REG_PRESET_2E = 0x2e,
RC632_REG_PRESET_2F = 0x2f,
RC632_REG_PAGE6 = 0x30,
RC632_REG_PAGE7 = 0x38,
RC632_REG_TEST_ANA_SELECT = 0x3a,
RC632_REG_TEST_DIGI_SELECT = 0x3d,
};
enum rc632_reg_status {
RC632_STAT_LOALERT = 0x01,
RC632_STAT_HIALERT = 0x02,
RC632_STAT_ERR = 0x04,
RC632_STAT_IRQ = 0x08,
#define RC632_STAT_MODEM_MASK 0x70
RC632_STAT_MODEM_IDLE = 0x00,
RC632_STAT_MODEM_TXSOF = 0x10,
RC632_STAT_MODEM_TXDATA = 0x20,
RC632_STAT_MODEM_TXEOF = 0x30,
RC632_STAT_MODEM_GOTORX = 0x40,
RC632_STAT_MODEM_PREPARERX = 0x50,
RC632_STAT_MODEM_AWAITINGRX = 0x60,
RC632_STAT_MODEM_RECV = 0x70,
};
enum rc632_reg_command {
RC632_CMD_IDLE = 0x00,
RC632_CMD_WRITE_E2 = 0x01,
RC632_CMD_READ_E2 = 0x03,
RC632_CMD_LOAD_CONFIG = 0x07,
RC632_CMD_LOAD_KEY_E2 = 0x0b,
RC632_CMD_AUTHENT1 = 0x0c,
RC632_CMD_CALC_CRC = 0x12,
RC632_CMD_AUTHENT2 = 0x14,
RC632_CMD_RECEIVE = 0x16,
RC632_CMD_LOAD_KEY = 0x19,
RC632_CMD_TRANSMIT = 0x1a,
RC632_CMD_TRANSCEIVE = 0x1e,
RC632_CMD_STARTUP = 0x3f,
};
enum rc632_reg_interrupt {
RC632_INT_LOALERT = 0x01,
RC632_INT_HIALERT = 0x02,
RC632_INT_IDLE = 0x04,
RC632_INT_RX = 0x08,
RC632_INT_TX = 0x10,
RC632_INT_TIMER = 0x20,
RC632_INT_SET = 0x80,
};
enum rc632_reg_control {
RC632_CONTROL_FIFO_FLUSH = 0x01,
RC632_CONTROL_TIMER_START = 0x02,
RC632_CONTROL_TIMER_STOP = 0x04,
RC632_CONTROL_CRYPTO1_ON = 0x08,
RC632_CONTROL_POWERDOWN = 0x10,
RC632_CONTROL_STANDBY = 0x20,
};
enum rc632_reg_error_flag {
RC632_ERR_FLAG_COL_ERR = 0x01,
RC632_ERR_FLAG_PARITY_ERR = 0x02,
RC632_ERR_FLAG_FRAMING_ERR = 0x04,
RC632_ERR_FLAG_CRC_ERR = 0x08,
RC632_ERR_FLAG_FIFO_OVERFLOW = 0x10,
RC632_ERR_FLAG_ACCESS_ERR = 0x20,
RC632_ERR_FLAG_KEY_ERR = 0x40,
};
enum rc632_reg_tx_control {
RC632_TXCTRL_TX1_RF_EN = 0x01,
RC632_TXCTRL_TX2_RF_EN = 0x02,
RC632_TXCTRL_TX2_CW = 0x04,
RC632_TXCTRL_TX2_INV = 0x08,
RC632_TXCTRL_FORCE_100_ASK = 0x10,
RC632_TXCTRL_MOD_SRC_LOW = 0x00,
RC632_TXCTRL_MOD_SRC_HIGH = 0x20,
RC632_TXCTRL_MOD_SRC_INT = 0x40,
RC632_TXCTRL_MOD_SRC_MFIN = 0x60,
};
enum rc632_reg_coder_control {
/* bit 2-0 TXCoding */
#define RC632_CDRCTRL_TXCD_MASK 0x07
RC632_CDRCTRL_TXCD_NRZ = 0x00,
RC632_CDRCTRL_TXCD_14443A = 0x01,
RC632_CDRCTRL_TXCD_ICODE_STD = 0x04,
RC632_CDRCTRL_TXCD_ICODE_FAST = 0x05,
RC632_CDRCTRL_TXCD_15693_STD = 0x06,
RC632_CDRCTRL_TXCD_15693_FAST = 0x07,
/* bit5-3 CoderRate*/
#define RC632_CDRCTRL_RATE_MASK 0x38
RC632_CDRCTRL_RATE_848K = 0x00,
RC632_CDRCTRL_RATE_424K = 0x08,
RC632_CDRCTRL_RATE_212K = 0x10,
RC632_CDRCTRL_RATE_106K = 0x18,
RC632_CDRCTRL_RATE_14443B = 0x20,
RC632_CDRCTRL_RATE_15693 = 0x28,
RC632_CDRCTRL_RATE_ICODE_FAST = 0x30,
/* bit 7 SendOnePuls */
RC632_CDRCTRL_15693_EOF_PULSE = 0x80,
};
enum rc632_erg_type_b_framing {
RC632_TBFRAMING_SOF_10L_2H = 0x00,
RC632_TBFRAMING_SOF_10L_3H = 0x01,
RC632_TBFRAMING_SOF_11L_2H = 0x02,
RC632_TBFRAMING_SOF_11L_3H = 0x03,
RC632_TBFRAMING_EOF_10 = 0x00,
RC632_TBFRAMING_EOF_11 = 0x20,
RC632_TBFRAMING_NO_TX_SOF = 0x80,
RC632_TBFRAMING_NO_TX_EOF = 0x40,
};
#define RC632_TBFRAMING_SPACE_SHIFT 2
#define RC632_TBFRAMING_SPACE_MASK 7
enum rc632_reg_rx_control1 {
RC632_RXCTRL1_GAIN_20DB = 0x00,
RC632_RXCTRL1_GAIN_24DB = 0x01,
RC632_RXCTRL1_GAIN_31DB = 0x02,
RC632_RXCTRL1_GAIN_35DB = 0x03,
RC632_RXCTRL1_LP_OFF = 0x04,
RC632_RXCTRL1_ISO15693 = 0x08,
RC632_RXCTRL1_ISO14443 = 0x10,
#define RC632_RXCTRL1_SUBCP_MASK 0xe0
RC632_RXCTRL1_SUBCP_1 = 0x00,
RC632_RXCTRL1_SUBCP_2 = 0x20,
RC632_RXCTRL1_SUBCP_4 = 0x40,
RC632_RXCTRL1_SUBCP_8 = 0x60,
RC632_RXCTRL1_SUBCP_16 = 0x80,
};
enum rc632_reg_decoder_control {
RC632_DECCTRL_MANCHESTER = 0x00,
RC632_DECCTRL_BPSK = 0x01,
RC632_DECCTRL_RX_INVERT = 0x04,
RC632_DECCTRL_RXFR_ICODE = 0x00,
RC632_DECCTRL_RXFR_14443A = 0x08,
RC632_DECCTRL_RXFR_15693 = 0x10,
RC632_DECCTRL_RXFR_14443B = 0x18,
RC632_DECCTRL_ZEROAFTERCOL = 0x20,
RC632_DECCTRL_RX_MULTIPLE = 0x40,
};
enum rc632_reg_bpsk_dem_control {
RC632_BPSKD_TAUB_SHIFT = 0x00,
RC632_BPSKD_TAUB_MASK = 0x03,
RC632_BPSKD_TAUD_SHIFT = 0x02,
RC632_BPSKD_TAUD_MASK = 0x03,
RC632_BPSKD_FILTER_AMP_DETECT = 0x10,
RC632_BPSKD_NO_RX_EOF = 0x20,
RC632_BPSKD_NO_RX_EGT = 0x40,
RC632_BPSKD_NO_RX_SOF = 0x80,
};
enum rc632_reg_rx_control2 {
RC632_RXCTRL2_DECSRC_LOW = 0x00,
RC632_RXCTRL2_DECSRC_INT = 0x01,
RC632_RXCTRL2_DECSRC_SUBC_MFIN = 0x10,
RC632_RXCTRL2_DECSRC_BASE_MFIN = 0x11,
RC632_RXCTRL2_AUTO_PD = 0x40,
RC632_RXCTRL2_CLK_I = 0x80,
RC632_RXCTRL2_CLK_Q = 0x00,
};
enum rc632_reg_channel_redundancy {
RC632_CR_PARITY_ENABLE = 0x01,
RC632_CR_PARITY_ODD = 0x02,
RC632_CR_TX_CRC_ENABLE = 0x04,
RC632_CR_RX_CRC_ENABLE = 0x08,
RC632_CR_CRC8 = 0x10,
RC632_CR_CRC3309 = 0x20,
};
enum rc632_reg_timer_control {
RC632_TMR_START_TX_BEGIN = 0x01,
RC632_TMR_START_TX_END = 0x02,
RC632_TMR_STOP_RX_BEGIN = 0x04,
RC632_TMR_STOP_RX_END = 0x08,
};
enum rc632_reg_irq_pin_cfg {
RC632_IRQCFG_CMOS = 0x01,
RC632_IRQCFG_INV = 0x02,
};
enum rc632_reg_secondary_status {
RC632_SEC_ST_TMR_RUNNING = 0x80,
RC632_SEC_ST_E2_READY = 0x40,
RC632_SEC_ST_CRC_READY = 0x20,
};
#endif

View File

@ -0,0 +1,9 @@
#ifndef _COMPILE_H
#define _COMPILE_H
/* This file is auto generated */
#define COMPILE_DATE "20110510-160907"
#define COMPILE_BY "netz@BlubbFish"
#define COMPILE_SVNREV "495-unclean"
#endif /* _COMPILE_H */

File diff suppressed because it is too large Load Diff

111
firmware/include/openpcd.h Normal file
View File

@ -0,0 +1,111 @@
#ifndef _OPENPCD_PROTO_H
#define _OPENPCD_PROTO_H
/* This header file describes the USB protocol of the OpenPCD RFID reader */
#include <sys/types.h>
struct openpcd_hdr {
u_int8_t cmd; /* command. high nibble: class,
* low nibble: cmd */
u_int8_t flags;
u_int8_t reg; /* register */
u_int8_t val; /* value (in case of write *) */
u_int8_t data[0];
} __attribute__ ((packed));
#define OPCD_REV_LEN 16
struct openpcd_compile_version {
char svnrev[OPCD_REV_LEN];
char by[OPCD_REV_LEN];
char date[OPCD_REV_LEN];
} __attribute__ ((packed));
#define OPENPCD_FLAG_RESPOND 0x01 /* Response requested */
#define OPENPCD_FLAG_ERROR 0x80 /* An error occurred */
enum openpcd_cmd_class {
OPENPCD_CMD_CLS_GENERIC = 0x0,
/* PCD (reader) side */
OPENPCD_CMD_CLS_RC632 = 0x1,
//OPENPCD_CMD_CLS_LED = 0x2,
OPENPCD_CMD_CLS_SSC = 0x3,
OPENPCD_CMD_CLS_PWM = 0x4,
OPENPCD_CMD_CLS_ADC = 0x5,
OPENPCD_CMD_CLS_LIBRFID = 0x6,
OPENPCD_CMD_CLS_PRESENCE = 0x7,
/* PICC (transponder) side */
OPENPCD_CMD_CLS_PICC = 0xe,
OPENPCD_CMD_CLS_USBTEST = 0xf,
};
#define OPENPCD_REG_MAX 0x3f
#define OPENPCD_CMD_CLS(x) (x >> 4)
#define OPENPCD_CMD(x) (x & 0xf)
#define OPENPCD_CLS2CMD(x) (x << 4)
/* Generic */
#define OPENPCD_CMD_GET_VERSION (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC))
#define OPENPCD_CMD_SET_LED (0x2|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC))
#define OPENPCD_CMD_GET_SERIAL (0x3|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC))
#define OPENPCD_CMD_GET_API_VERSION (0x4|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC))
#define OPENPCD_CMD_GET_ENVIRONMENT (0x5|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC))
#define OPENPCD_CMD_SET_ENVIRONMENT (0x6|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC))
#define OPENPCD_CMD_RESET (0x7|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_GENERIC))
/* CMD_CLS_RC632 */
#define OPENPCD_CMD_WRITE_REG (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_WRITE_FIFO (0x2|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_WRITE_VFIFO (0x3|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_REG_BITS_CLEAR (0x4|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_REG_BITS_SET (0x5|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_READ_REG (0x6|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_READ_FIFO (0x7|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_READ_VFIFO (0x8|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_DUMP_REGS (0x9|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_IRQ (0xa|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
#define OPENPCD_CMD_WRITE_REG_SET (0xb|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_RC632))
/* CMD_CLS_SSC */
#define OPENPCD_CMD_SSC_READ (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_SSC))
#define OPENPCD_CMD_SSC_WRITE (0x2|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_SSC))
/* CMD_CLS_PWM */
#define OPENPCD_CMD_PWM_ENABLE (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PWM))
#define OPENPCD_CMD_PWM_DUTY_SET (0x2|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PWM))
#define OPENPCD_CMD_PWM_DUTY_GET (0x3|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PWM))
#define OPENPCD_CMD_PWM_FREQ_SET (0x4|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PWM))
#define OPENPCD_CMD_PWM_FREQ_GET (0x5|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PWM))
/* CMD_CLS_PICC */
#define OPENPCD_CMD_PICC_REG_WRITE (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PICC))
#define OPENPCD_CMD_PICC_REG_READ (0x2|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PICC))
/* CMD_CLS_ADC */
#define OPENPCD_CMD_ADC_READ (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_ADC))
/* CMD_CLS_LIBRFID */
#define OPENPCD_CMD_LRFID_DETECT_IRQ (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_LIBRFID))
/* CMD_CLS_LIBRFID */
#define OPENPCD_CMD_PRESENCE_UID_GET (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_PRESENCE))
/* CMD_CLS_USBTEST */
#define OPENPCD_CMD_USBTEST_IN (0x1|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_USBTEST))
#define OPENPCD_CMD_USBTEST_OUT (0x2|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_USBTEST))
/* FIXME */
#define OPENPCD_CMD_PIO_IRQ (0x3|OPENPCD_CLS2CMD(OPENPCD_CMD_CLS_USBTEST))
#define OPENPCD_VENDOR_ID 0x16c0
#define OPENPCD_PRODUCT_ID 0x076b
#define OPENPICC_PRODUCT_ID 0x076c
#define OPENPCD_OUT_EP 0x01
#define OPENPCD_IN_EP 0x82
#define OPENPCD_IRQ_EP 0x83
#endif

View File

@ -0,0 +1,31 @@
#ifndef _OPENPICC_H
#define _OPENPICC_H
/* OpenPICC Register definition
* (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
*/
enum openpicc_register {
OPICC_REG_MODE, /* operational mode */
OPICC_REG_ISO14443A_FDT_0, /* FDT (after 0) in carrier cycles */
OPICC_REG_ISO14443A_FDT_1, /* FDT (after 1) in carrier cycles */
OPICC_REG_BITCLK_PHASE_CORR, /* signed 8bit phase correction */
OPICC_REG_SPEED_RX,
OPICC_REG_SPEED_TX,
OPICC_REG_UID_PUPI, /* UID (14443A) / PUPI (14443B) */
};
enum openpicc_reg_mode {
OPICC_MODE_14443A,
OPICC_MODE_14443B,
OPICC_MODE_LOWLEVEL, /* low-level bit-transceive mode TBD */
};
enum openpicc_reg_speed {
OPICC_SPEED_14443_106K,
OPICC_SPEED_14443_212K,
OPICC_SPEED_14443_424K,
OPICC_SPEED_14443_848K,
};
#endif /* _OPENPICC_H */

View File

@ -0,0 +1,47 @@
#ifndef _OPENPICC_STATE
#define _OPENPICC_STATE
/* according to ISO 14443-3(2000) 6.2 */
enum opicc_14443a_state {
ISO14443A_ST_POWEROFF,
ISO14443A_ST_IDLE,
ISO14443A_ST_READY,
ISO14443A_ST_ACTIVE,
ISO14443A_ST_HALT,
ISO14443A_ST_READY2,
ISO14443A_ST_ACTIVE2,
};
enum opicc_reg_tx_control {
OPICC_REG_TX_BPSK = 0x01,
OPICC_REG_TX_MANCHESTER = 0x02,
OPICC_REG_TX_INTENSITY0 = 0x00,
OPICC_REG_TX_INTENSITY1 = 0x10,
OPICC_REG_TX_INTENSITY2 = 0x20,
OPICC_REG_TX_INTENSITY3 = 0x30,
};
enum opicc_reg {
OPICC_REG_14443A_UIDLEN,/* Length of UID in bytes */
OPICC_REG_14443A_FDT0, /* Frame delay time if last bit 0 */
OPICC_REG_14443A_FDT1, /* Frame delay time if last bit 1 */
OPICC_REG_14443A_STATE, /* see 'enum opicc_14443a_state' */
OPICC_REG_14443A_ATQA, /* The ATQA template for 14443A */
OPICC_REG_RX_CLK_DIV, /* Clock divider for Rx sample clock */
OPICC_REG_RX_CLK_PHASE, /* Phase shift of Rx sample clock */
OPICC_REG_RX_COMP_LEVEL,/* Comparator level of Demodulator */
OPICC_REG_RX_CONTROL,
OPICC_REG_TX_CLK_DIV, /* Clock divider for Tx sample clock */
OPICC_REG_TX_CONTROL, /* see 'enum opicc_reg_tx_Control */
_OPICC_NUM_REGS,
};
enum openpicc_14443a_sregs {
/* string 'registers' */
OPICC_REG_14443A_UID, /* The UID (4...10 bytes) */
};
#endif

550
firmware/include/usb_ch9.h Normal file
View File

@ -0,0 +1,550 @@
/*
* This file holds USB constants and structures that are needed for USB
* device APIs. These are used by the USB device model, which is defined
* in chapter 9 of the USB 2.0 specification. Linux has several APIs in C
* that need these:
*
* - the master/host side Linux-USB kernel driver API;
* - the "usbfs" user space API; and
* - the Linux "gadget" slave/device/peripheral side driver API.
*
* USB 2.0 adds an additional "On The Go" (OTG) mode, which lets systems
* act either as a USB master/host or as a USB slave/device. That means
* the master and slave side APIs benefit from working well together.
*
* There's also "Wireless USB", using low power short range radios for
* peripheral interconnection but otherwise building on the USB framework.
*/
#ifndef __LINUX_USB_CH9_H
#define __LINUX_USB_CH9_H
#include <sys/types.h>
/*-------------------------------------------------------------------------*/
/* CONTROL REQUEST SUPPORT */
/*
* USB directions
*
* This bit flag is used in endpoint descriptors' bEndpointAddress field.
* It's also one of three fields in control requests bRequestType.
*/
#define USB_DIR_OUT 0 /* to device */
#define USB_DIR_IN 0x80 /* to host */
/*
* USB types, the second of three bRequestType fields
*/
#define USB_TYPE_MASK (0x03 << 5)
#define USB_TYPE_STANDARD (0x00 << 5)
#define USB_TYPE_CLASS (0x01 << 5)
#define USB_TYPE_VENDOR (0x02 << 5)
#define USB_TYPE_RESERVED (0x03 << 5)
/*
* USB recipients, the third of three bRequestType fields
*/
#define USB_RECIP_MASK 0x1f
#define USB_RECIP_DEVICE 0x00
#define USB_RECIP_INTERFACE 0x01
#define USB_RECIP_ENDPOINT 0x02
#define USB_RECIP_OTHER 0x03
/*
* Standard requests, for the bRequest field of a SETUP packet.
*
* These are qualified by the bRequestType field, so that for example
* TYPE_CLASS or TYPE_VENDOR specific feature flags could be retrieved
* by a GET_STATUS request.
*/
#define USB_REQ_GET_STATUS 0x00
#define USB_REQ_CLEAR_FEATURE 0x01
#define USB_REQ_SET_FEATURE 0x03
#define USB_REQ_SET_ADDRESS 0x05
#define USB_REQ_GET_DESCRIPTOR 0x06
#define USB_REQ_SET_DESCRIPTOR 0x07
#define USB_REQ_GET_CONFIGURATION 0x08
#define USB_REQ_SET_CONFIGURATION 0x09
#define USB_REQ_GET_INTERFACE 0x0A
#define USB_REQ_SET_INTERFACE 0x0B
#define USB_REQ_SYNCH_FRAME 0x0C
#define USB_REQ_SET_ENCRYPTION 0x0D /* Wireless USB */
#define USB_REQ_GET_ENCRYPTION 0x0E
#define USB_REQ_SET_HANDSHAKE 0x0F
#define USB_REQ_GET_HANDSHAKE 0x10
#define USB_REQ_SET_CONNECTION 0x11
#define USB_REQ_SET_SECURITY_DATA 0x12
#define USB_REQ_GET_SECURITY_DATA 0x13
#define USB_REQ_SET_WUSB_DATA 0x14
#define USB_REQ_LOOPBACK_DATA_WRITE 0x15
#define USB_REQ_LOOPBACK_DATA_READ 0x16
#define USB_REQ_SET_INTERFACE_DS 0x17
/*
* USB feature flags are written using USB_REQ_{CLEAR,SET}_FEATURE, and
* are read as a bit array returned by USB_REQ_GET_STATUS. (So there
* are at most sixteen features of each type.)
*/
#define USB_DEVICE_SELF_POWERED 0 /* (read only) */
#define USB_DEVICE_REMOTE_WAKEUP 1 /* dev may initiate wakeup */
#define USB_DEVICE_TEST_MODE 2 /* (wired high speed only) */
#define USB_DEVICE_BATTERY 2 /* (wireless) */
#define USB_DEVICE_B_HNP_ENABLE 3 /* (otg) dev may initiate HNP */
#define USB_DEVICE_WUSB_DEVICE 3 /* (wireless)*/
#define USB_DEVICE_A_HNP_SUPPORT 4 /* (otg) RH port supports HNP */
#define USB_DEVICE_A_ALT_HNP_SUPPORT 5 /* (otg) other RH port does */
#define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */
#define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */
/**
* struct usb_ctrlrequest - SETUP data for a USB device control request
* @bRequestType: matches the USB bmRequestType field
* @bRequest: matches the USB bRequest field
* @wValue: matches the USB wValue field (le16 byte order)
* @wIndex: matches the USB wIndex field (le16 byte order)
* @wLength: matches the USB wLength field (le16 byte order)
*
* This structure is used to send control requests to a USB device. It matches
* the different fields of the USB 2.0 Spec section 9.3, table 9-2. See the
* USB spec for a fuller description of the different fields, and what they are
* used for.
*
* Note that the driver for any interface can issue control requests.
* For most devices, interfaces don't coordinate with each other, so
* such requests may be made at any time.
*/
struct usb_ctrlrequest {
u_int8_t bRequestType;
u_int8_t bRequest;
u_int16_t wValue;
u_int16_t wIndex;
u_int16_t wLength;
} __attribute__ ((packed));
/*-------------------------------------------------------------------------*/
/*
* STANDARD DESCRIPTORS ... as returned by GET_DESCRIPTOR, or
* (rarely) accepted by SET_DESCRIPTOR.
*
* Note that all multi-byte values here are encoded in little endian
* byte order "on the wire". But when exposed through Linux-USB APIs,
* they've been converted to cpu byte order.
*/
/*
* Descriptor types ... USB 2.0 spec table 9.5
*/
#define USB_DT_DEVICE 0x01
#define USB_DT_CONFIG 0x02
#define USB_DT_STRING 0x03
#define USB_DT_INTERFACE 0x04
#define USB_DT_ENDPOINT 0x05
#define USB_DT_DEVICE_QUALIFIER 0x06
#define USB_DT_OTHER_SPEED_CONFIG 0x07
#define USB_DT_INTERFACE_POWER 0x08
/* these are from a minor usb 2.0 revision (ECN) */
#define USB_DT_OTG 0x09
#define USB_DT_DEBUG 0x0a
#define USB_DT_INTERFACE_ASSOCIATION 0x0b
/* these are from the Wireless USB spec */
#define USB_DT_SECURITY 0x0c
#define USB_DT_KEY 0x0d
#define USB_DT_ENCRYPTION_TYPE 0x0e
#define USB_DT_BOS 0x0f
#define USB_DT_DEVICE_CAPABILITY 0x10
#define USB_DT_WIRELESS_ENDPOINT_COMP 0x11
/* conventional codes for class-specific descriptors */
#define USB_DT_CS_DEVICE 0x21
#define USB_DT_CS_CONFIG 0x22
#define USB_DT_CS_STRING 0x23
#define USB_DT_CS_INTERFACE 0x24
#define USB_DT_CS_ENDPOINT 0x25
/* All standard descriptors have these 2 fields at the beginning */
struct usb_descriptor_header {
u_int8_t bLength;
u_int8_t bDescriptorType;
} __attribute__ ((packed));
/*-------------------------------------------------------------------------*/
/* USB_DT_DEVICE: Device descriptor */
struct usb_device_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t bcdUSB;
u_int8_t bDeviceClass;
u_int8_t bDeviceSubClass;
u_int8_t bDeviceProtocol;
u_int8_t bMaxPacketSize0;
u_int16_t idVendor;
u_int16_t idProduct;
u_int16_t bcdDevice;
u_int8_t iManufacturer;
u_int8_t iProduct;
u_int8_t iSerialNumber;
u_int8_t bNumConfigurations;
} __attribute__ ((packed));
#define USB_DT_DEVICE_SIZE 18
/*
* Device and/or Interface Class codes
* as found in bDeviceClass or bInterfaceClass
* and defined by www.usb.org documents
*/
#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */
#define USB_CLASS_AUDIO 1
#define USB_CLASS_COMM 2
#define USB_CLASS_HID 3
#define USB_CLASS_PHYSICAL 5
#define USB_CLASS_STILL_IMAGE 6
#define USB_CLASS_PRINTER 7
#define USB_CLASS_MASS_STORAGE 8
#define USB_CLASS_HUB 9
#define USB_CLASS_CDC_DATA 0x0a
#define USB_CLASS_CSCID 0x0b /* chip+ smart card */
#define USB_CLASS_CONTENT_SEC 0x0d /* content security */
#define USB_CLASS_VIDEO 0x0e
#define USB_CLASS_WIRELESS_CONTROLLER 0xe0
#define USB_CLASS_APP_SPEC 0xfe
#define USB_CLASS_VENDOR_SPEC 0xff
/*-------------------------------------------------------------------------*/
/* USB_DT_CONFIG: Configuration descriptor information.
*
* USB_DT_OTHER_SPEED_CONFIG is the same descriptor, except that the
* descriptor type is different. Highspeed-capable devices can look
* different depending on what speed they're currently running. Only
* devices with a USB_DT_DEVICE_QUALIFIER have any OTHER_SPEED_CONFIG
* descriptors.
*/
struct usb_config_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t wTotalLength;
u_int8_t bNumInterfaces;
u_int8_t bConfigurationValue;
u_int8_t iConfiguration;
u_int8_t bmAttributes;
u_int8_t bMaxPower;
} __attribute__ ((packed));
#define USB_DT_CONFIG_SIZE 9
/* from config descriptor bmAttributes */
#define USB_CONFIG_ATT_ONE (1 << 7) /* must be set */
#define USB_CONFIG_ATT_SELFPOWER (1 << 6) /* self powered */
#define USB_CONFIG_ATT_WAKEUP (1 << 5) /* can wakeup */
#define USB_CONFIG_ATT_BATTERY (1 << 4) /* battery powered */
/*-------------------------------------------------------------------------*/
/* USB_DT_STRING: String descriptor */
struct usb_string_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t wData[0]; /* UTF-16LE encoded */
} __attribute__ ((packed));
/* note that "string" zero is special, it holds language codes that
* the device supports, not Unicode characters.
*/
/*-------------------------------------------------------------------------*/
/* USB_DT_INTERFACE: Interface descriptor */
struct usb_interface_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bInterfaceNumber;
u_int8_t bAlternateSetting;
u_int8_t bNumEndpoints;
u_int8_t bInterfaceClass;
u_int8_t bInterfaceSubClass;
u_int8_t bInterfaceProtocol;
u_int8_t iInterface;
} __attribute__ ((packed));
#define USB_DT_INTERFACE_SIZE 9
/*-------------------------------------------------------------------------*/
/* USB_DT_ENDPOINT: Endpoint descriptor */
struct usb_endpoint_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bEndpointAddress;
u_int8_t bmAttributes;
u_int16_t wMaxPacketSize;
u_int8_t bInterval;
} __attribute__ ((packed));
#define USB_DT_ENDPOINT_SIZE 7
#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */
/*
* Endpoints
*/
#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */
#define USB_ENDPOINT_DIR_MASK 0x80
#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
#define USB_ENDPOINT_XFER_CONTROL 0
#define USB_ENDPOINT_XFER_ISOC 1
#define USB_ENDPOINT_XFER_BULK 2
#define USB_ENDPOINT_XFER_INT 3
#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
/*-------------------------------------------------------------------------*/
/* USB_DT_DEVICE_QUALIFIER: Device Qualifier descriptor */
struct usb_qualifier_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t bcdUSB;
u_int8_t bDeviceClass;
u_int8_t bDeviceSubClass;
u_int8_t bDeviceProtocol;
u_int8_t bMaxPacketSize0;
u_int8_t bNumConfigurations;
u_int8_t bRESERVED;
} __attribute__ ((packed));
/*-------------------------------------------------------------------------*/
/* USB_DT_OTG (from OTG 1.0a supplement) */
struct usb_otg_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bmAttributes; /* support for HNP, SRP, etc */
} __attribute__ ((packed));
/* from usb_otg_descriptor.bmAttributes */
#define USB_OTG_SRP (1 << 0)
#define USB_OTG_HNP (1 << 1) /* swap host/device roles */
/*-------------------------------------------------------------------------*/
/* USB_DT_DEBUG: for special highspeed devices, replacing serial console */
struct usb_debug_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
/* bulk endpoints with 8 byte maxpacket */
u_int8_t bDebugInEndpoint;
u_int8_t bDebugOutEndpoint;
};
/*-------------------------------------------------------------------------*/
/* USB_DT_INTERFACE_ASSOCIATION: groups interfaces */
struct usb_interface_assoc_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bFirstInterface;
u_int8_t bInterfaceCount;
u_int8_t bFunctionClass;
u_int8_t bFunctionSubClass;
u_int8_t bFunctionProtocol;
u_int8_t iFunction;
} __attribute__ ((packed));
/*-------------------------------------------------------------------------*/
/* USB_DT_SECURITY: group of wireless security descriptors, including
* encryption types available for setting up a CC/association.
*/
struct usb_security_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t wTotalLength;
u_int8_t bNumEncryptionTypes;
};
/*-------------------------------------------------------------------------*/
/* USB_DT_KEY: used with {GET,SET}_SECURITY_DATA; only public keys
* may be retrieved.
*/
struct usb_key_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t tTKID[3];
u_int8_t bReserved;
u_int8_t bKeyData[0];
};
/*-------------------------------------------------------------------------*/
/* USB_DT_ENCRYPTION_TYPE: bundled in DT_SECURITY groups */
struct usb_encryption_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bEncryptionType;
#define USB_ENC_TYPE_UNSECURE 0
#define USB_ENC_TYPE_WIRED 1 /* non-wireless mode */
#define USB_ENC_TYPE_CCM_1 2 /* aes128/cbc session */
#define USB_ENC_TYPE_RSA_1 3 /* rsa3072/sha1 auth */
u_int8_t bEncryptionValue; /* use in SET_ENCRYPTION */
u_int8_t bAuthKeyIndex;
};
/*-------------------------------------------------------------------------*/
/* USB_DT_BOS: group of wireless capabilities */
struct usb_bos_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t wTotalLength;
u_int8_t bNumDeviceCaps;
};
/*-------------------------------------------------------------------------*/
/* USB_DT_DEVICE_CAPABILITY: grouped with BOS */
struct usb_dev_cap_header {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bDevCapabilityType;
};
#define USB_CAP_TYPE_WIRELESS_USB 1
struct usb_wireless_cap_descriptor { /* Ultra Wide Band */
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bDevCapabilityType;
u_int8_t bmAttributes;
#define USB_WIRELESS_P2P_DRD (1 << 1)
#define USB_WIRELESS_BEACON_MASK (3 << 2)
#define USB_WIRELESS_BEACON_SELF (1 << 2)
#define USB_WIRELESS_BEACON_DIRECTED (2 << 2)
#define USB_WIRELESS_BEACON_NONE (3 << 2)
u_int16_t wPHYRates; /* bit rates, Mbps */
#define USB_WIRELESS_PHY_53 (1 << 0) /* always set */
#define USB_WIRELESS_PHY_80 (1 << 1)
#define USB_WIRELESS_PHY_107 (1 << 2) /* always set */
#define USB_WIRELESS_PHY_160 (1 << 3)
#define USB_WIRELESS_PHY_200 (1 << 4) /* always set */
#define USB_WIRELESS_PHY_320 (1 << 5)
#define USB_WIRELESS_PHY_400 (1 << 6)
#define USB_WIRELESS_PHY_480 (1 << 7)
u_int8_t bmTFITXPowerInfo; /* TFI power levels */
u_int8_t bmFFITXPowerInfo; /* FFI power levels */
u_int16_t bmBandGroup;
u_int8_t bReserved;
};
/*-------------------------------------------------------------------------*/
/* USB_DT_WIRELESS_ENDPOINT_COMP: companion descriptor associated with
* each endpoint descriptor for a wireless device
*/
struct usb_wireless_ep_comp_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bMaxBurst;
u_int8_t bMaxSequence;
u_int16_t wMaxStreamDelay;
u_int16_t wOverTheAirPacketSize;
u_int8_t bOverTheAirInterval;
u_int8_t bmCompAttributes;
#define USB_ENDPOINT_SWITCH_MASK 0x03 /* in bmCompAttributes */
#define USB_ENDPOINT_SWITCH_NO 0
#define USB_ENDPOINT_SWITCH_SWITCH 1
#define USB_ENDPOINT_SWITCH_SCALE 2
};
/*-------------------------------------------------------------------------*/
/* USB_REQ_SET_HANDSHAKE is a four-way handshake used between a wireless
* host and a device for connection set up, mutual authentication, and
* exchanging short lived session keys. The handshake depends on a CC.
*/
struct usb_handshake {
u_int8_t bMessageNumber;
u_int8_t bStatus;
u_int8_t tTKID[3];
u_int8_t bReserved;
u_int8_t CDID[16];
u_int8_t nonce[16];
u_int8_t MIC[8];
};
/*-------------------------------------------------------------------------*/
/* USB_REQ_SET_CONNECTION modifies or revokes a connection context (CC).
* A CC may also be set up using non-wireless secure channels (including
* wired USB!), and some devices may support CCs with multiple hosts.
*/
struct usb_connection_context {
u_int8_t CHID[16]; /* persistent host id */
u_int8_t CDID[16]; /* device id (unique w/in host context) */
u_int8_t CK[16]; /* connection key */
};
/*-------------------------------------------------------------------------*/
/* USB 2.0 defines three speeds, here's how Linux identifies them */
enum usb_device_speed {
USB_SPEED_UNKNOWN = 0, /* enumerating */
USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */
USB_SPEED_HIGH, /* usb 2.0 */
USB_SPEED_VARIABLE, /* wireless (usb 2.5) */
};
enum usb_device_state {
/* NOTATTACHED isn't in the USB spec, and this state acts
* the same as ATTACHED ... but it's clearer this way.
*/
USB_STATE_NOTATTACHED = 0,
/* chapter 9 and authentication (wireless) device states */
USB_STATE_ATTACHED,
USB_STATE_POWERED, /* wired */
USB_STATE_UNAUTHENTICATED, /* auth */
USB_STATE_RECONNECTING, /* auth */
USB_STATE_DEFAULT, /* limited function */
USB_STATE_ADDRESS,
USB_STATE_CONFIGURED, /* most functions */
USB_STATE_SUSPENDED
/* NOTE: there are actually four different SUSPENDED
* states, returning to POWERED, DEFAULT, ADDRESS, or
* CONFIGURED respectively when SOF tokens flow again.
*/
};
#endif /* __LINUX_USB_CH9_H */

View File

@ -0,0 +1,81 @@
#ifndef _USB_DFU_H
#define _USB_DFU_H
/* USB Device Firmware Update Implementation for OpenPCD
* (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
*
* Protocol definitions for USB DFU
*
* This ought to be compliant to the USB DFU Spec 1.0 as available from
* http://www.usb.org/developers/devclass_docs/usbdfu10.pdf
*
*/
#include <sys/types.h>
#define USB_DT_DFU 0x21
struct usb_dfu_func_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int8_t bmAttributes;
#define USB_DFU_CAN_DOWNLOAD (1 << 0)
#define USB_DFU_CAN_UPLOAD (1 << 1)
#define USB_DFU_MANIFEST_TOL (1 << 2)
#define USB_DFU_WILL_DETACH (1 << 3)
u_int16_t wDetachTimeOut;
u_int16_t wTransferSize;
u_int16_t bcdDFUVersion;
} __attribute__ ((packed));
#define USB_DT_DFU_SIZE 9
#define USB_TYPE_DFU (USB_TYPE_CLASS|USB_RECIP_INTERFACE)
/* DFU class-specific requests (Section 3, DFU Rev 1.1) */
#define USB_REQ_DFU_DETACH 0x00
#define USB_REQ_DFU_DNLOAD 0x01
#define USB_REQ_DFU_UPLOAD 0x02
#define USB_REQ_DFU_GETSTATUS 0x03
#define USB_REQ_DFU_CLRSTATUS 0x04
#define USB_REQ_DFU_GETSTATE 0x05
#define USB_REQ_DFU_ABORT 0x06
struct dfu_status {
u_int8_t bStatus;
u_int8_t bwPollTimeout[3];
u_int8_t bState;
u_int8_t iString;
} __attribute__((packed));
#define DFU_STATUS_OK 0x00
#define DFU_STATUS_errTARGET 0x01
#define DFU_STATUS_errFILE 0x02
#define DFU_STATUS_errWRITE 0x03
#define DFU_STATUS_errERASE 0x04
#define DFU_STATUS_errCHECK_ERASED 0x05
#define DFU_STATUS_errPROG 0x06
#define DFU_STATUS_errVERIFY 0x07
#define DFU_STATUS_errADDRESS 0x08
#define DFU_STATUS_errNOTDONE 0x09
#define DFU_STATUS_errFIRMWARE 0x0a
#define DFU_STATUS_errVENDOR 0x0b
#define DFU_STATUS_errUSBR 0x0c
#define DFU_STATUS_errPOR 0x0d
#define DFU_STATUS_errUNKNOWN 0x0e
#define DFU_STATUS_errSTALLEDPKT 0x0f
enum dfu_state {
DFU_STATE_appIDLE = 0,
DFU_STATE_appDETACH = 1,
DFU_STATE_dfuIDLE = 2,
DFU_STATE_dfuDNLOAD_SYNC = 3,
DFU_STATE_dfuDNBUSY = 4,
DFU_STATE_dfuDNLOAD_IDLE = 5,
DFU_STATE_dfuMANIFEST_SYNC = 6,
DFU_STATE_dfuMANIFEST = 7,
DFU_STATE_dfuMANIFEST_WAIT_RST = 8,
DFU_STATE_dfuUPLOAD_IDLE = 9,
DFU_STATE_dfuERROR = 10,
};
#endif /* _USB_DFU_H */

236
firmware/include/usb_hid.h Normal file
View File

@ -0,0 +1,236 @@
#ifndef _USB_HID_H
#define _USB_HID_H
/*
*
* Portions of <linux/hid.h>:
* Copyright (c) 1999 Andreas Gal
* Copyright (c) 2000-2001 Vojtech Pavlik
* Copyright (c) 2006-2007 Jiri Kosina
*/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
/*
* USB HID (Human Interface Device) interface class code
*/
#define USB_INTERFACE_CLASS_HID 3
/*
* USB HID interface subclass and protocol codes
*/
#define USB_INTERFACE_SUBCLASS_BOOT 1
#define USB_INTERFACE_PROTOCOL_KEYBOARD 1
#define USB_INTERFACE_PROTOCOL_MOUSE 2
/*
* HID class requests
*/
#define HID_REQ_GET_REPORT 0x01
#define HID_REQ_GET_IDLE 0x02
#define HID_REQ_GET_PROTOCOL 0x03
#define HID_REQ_SET_REPORT 0x09
#define HID_REQ_SET_IDLE 0x0A
#define HID_REQ_SET_PROTOCOL 0x0B
/*
* HID class descriptor types
*/
#define HID_DT_HID (USB_TYPE_CLASS | 0x01)
#define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
#define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
#define HID_MAX_DESCRIPTOR_SIZE 4096
/*
* HID report item format
*/
#define HID_ITEM_FORMAT_SHORT 0
#define HID_ITEM_FORMAT_LONG 1
/*
* Special tag indicating long items
*/
#define HID_ITEM_TAG_LONG 15
/*
* HID report descriptor item type (prefix bit 2,3)
*/
#define HID_ITEM_TYPE_MAIN 0
#define HID_ITEM_TYPE_GLOBAL 1
#define HID_ITEM_TYPE_LOCAL 2
#define HID_ITEM_TYPE_RESERVED 3
/*
* HID report descriptor main item tags
*/
#define HID_MAIN_ITEM_TAG_INPUT 8
#define HID_MAIN_ITEM_TAG_OUTPUT 9
#define HID_MAIN_ITEM_TAG_FEATURE 11
#define HID_MAIN_ITEM_TAG_BEGIN_COLLECTION 10
#define HID_MAIN_ITEM_TAG_END_COLLECTION 12
/*
* HID report descriptor main item contents
*/
#define HID_MAIN_ITEM_CONSTANT 0x001
#define HID_MAIN_ITEM_VARIABLE 0x002
#define HID_MAIN_ITEM_RELATIVE 0x004
#define HID_MAIN_ITEM_WRAP 0x008
#define HID_MAIN_ITEM_NONLINEAR 0x010
#define HID_MAIN_ITEM_NO_PREFERRED 0x020
#define HID_MAIN_ITEM_NULL_STATE 0x040
#define HID_MAIN_ITEM_VOLATILE 0x080
#define HID_MAIN_ITEM_BUFFERED_BYTE 0x100
/*
* HID report descriptor collection item types
*/
#define HID_COLLECTION_PHYSICAL 0
#define HID_COLLECTION_APPLICATION 1
#define HID_COLLECTION_LOGICAL 2
/*
* HID report descriptor global item tags
*/
#define HID_GLOBAL_ITEM_TAG_USAGE_PAGE 0
#define HID_GLOBAL_ITEM_TAG_LOGICAL_MINIMUM 1
#define HID_GLOBAL_ITEM_TAG_LOGICAL_MAXIMUM 2
#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MINIMUM 3
#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MAXIMUM 4
#define HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT 5
#define HID_GLOBAL_ITEM_TAG_UNIT 6
#define HID_GLOBAL_ITEM_TAG_REPORT_SIZE 7
#define HID_GLOBAL_ITEM_TAG_REPORT_ID 8
#define HID_GLOBAL_ITEM_TAG_REPORT_COUNT 9
#define HID_GLOBAL_ITEM_TAG_PUSH 10
#define HID_GLOBAL_ITEM_TAG_POP 11
/*
* HID report descriptor local item tags
*/
#define HID_LOCAL_ITEM_TAG_USAGE 0
#define HID_LOCAL_ITEM_TAG_USAGE_MINIMUM 1
#define HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM 2
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX 3
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM 4
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM 5
#define HID_LOCAL_ITEM_TAG_STRING_INDEX 7
#define HID_LOCAL_ITEM_TAG_STRING_MINIMUM 8
#define HID_LOCAL_ITEM_TAG_STRING_MAXIMUM 9
#define HID_LOCAL_ITEM_TAG_DELIMITER 10
/*
* HID usage tables
*/
#define HID_USAGE_PAGE 0xffff0000
#define HID_UP_UNDEFINED 0x00000000
#define HID_UP_GENDESK 0x00010000
#define HID_UP_SIMULATION 0x00020000
#define HID_UP_KEYBOARD 0x00070000
#define HID_UP_LED 0x00080000
#define HID_UP_BUTTON 0x00090000
#define HID_UP_ORDINAL 0x000a0000
#define HID_UP_CONSUMER 0x000c0000
#define HID_UP_DIGITIZER 0x000d0000
#define HID_UP_PID 0x000f0000
#define HID_UP_HPVENDOR 0xff7f0000
#define HID_UP_MSVENDOR 0xff000000
#define HID_UP_CUSTOM 0x00ff0000
#define HID_UP_LOGIVENDOR 0xffbc0000
#define HID_USAGE 0x0000ffff
#define HID_GD_POINTER 0x00010001
#define HID_GD_MOUSE 0x00010002
#define HID_GD_JOYSTICK 0x00010004
#define HID_GD_GAMEPAD 0x00010005
#define HID_GD_KEYBOARD 0x00010006
#define HID_GD_KEYPAD 0x00010007
#define HID_GD_MULTIAXIS 0x00010008
#define HID_GD_X 0x00010030
#define HID_GD_Y 0x00010031
#define HID_GD_Z 0x00010032
#define HID_GD_RX 0x00010033
#define HID_GD_RY 0x00010034
#define HID_GD_RZ 0x00010035
#define HID_GD_SLIDER 0x00010036
#define HID_GD_DIAL 0x00010037
#define HID_GD_WHEEL 0x00010038
#define HID_GD_HATSWITCH 0x00010039
#define HID_GD_BUFFER 0x0001003a
#define HID_GD_BYTECOUNT 0x0001003b
#define HID_GD_MOTION 0x0001003c
#define HID_GD_START 0x0001003d
#define HID_GD_SELECT 0x0001003e
#define HID_GD_VX 0x00010040
#define HID_GD_VY 0x00010041
#define HID_GD_VZ 0x00010042
#define HID_GD_VBRX 0x00010043
#define HID_GD_VBRY 0x00010044
#define HID_GD_VBRZ 0x00010045
#define HID_GD_VNO 0x00010046
#define HID_GD_FEATURE 0x00010047
#define HID_GD_UP 0x00010090
#define HID_GD_DOWN 0x00010091
#define HID_GD_RIGHT 0x00010092
#define HID_GD_LEFT 0x00010093
/*
* HID report types --- Ouch! HID spec says 1 2 3!
*/
#define HID_INPUT_REPORT 0
#define HID_OUTPUT_REPORT 1
#define HID_FEATURE_REPORT 2
struct usb_hid_class_descriptor {
u_int8_t bDescriptorType;
u_int16_t wDescriptorLength;
} __attribute__ ((packed));
struct usb_hid_descriptor {
u_int8_t bLength;
u_int8_t bDescriptorType;
u_int16_t bcdHID;
u_int8_t bCountryCode;
u_int8_t bNumDescriptors;
struct hid_class_descriptor desc[1];
} __attribute__ ((packed));
/* Applications from HID Usage Tables 4/8/99 Version 1.1 */
/* We ignore a few input applications that are not widely used */
#define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001))
#endif

33
firmware/lib/bitops.h Normal file
View File

@ -0,0 +1,33 @@
.macro bitop, instr
and r2, r0, #7
mov r3, #1
mov r3, r3, lsl r2
save_and_disable_irqs ip
ldrb r2, [r1, r0, lsr #3]
\instr r2, r2, r3
strb r2, [r1, r0, lsr #3]
restore_irqs ip
mov pc, lr
.endm
/**
* testop - implement a test_and_xxx_bit operation.
* @instr: operational instruction
* @store: store instruction
*
* Note: we can trivially conditionalise the store instruction
* to avoid dirting the data cache.
*/
.macro testop, instr, store
add r1, r1, r0, lsr #3
and r3, r0, #7
mov r0, #1
save_and_disable_irqs ip
ldrb r2, [r1]
tst r2, r0, lsl r3
\instr r2, r2, r0, lsl r3
\store r2, [r1]
restore_irqs ip
moveq r0, #0
mov pc, lr
.endm

21
firmware/lib/changebit.S Normal file
View File

@ -0,0 +1,21 @@
/*
* linux/arch/arm/lib/changebit.S
*
* Copyright (C) 1995-1996 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
#include "bitops.h"
.text
/* Purpose : Function to change a bit
* Prototype: int change_bit(int bit, void *addr)
*/
ENTRY(_change_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_change_bit_le)
bitop eor

169
firmware/lib/changebit.lst Normal file
View File

@ -0,0 +1,169 @@
1 # 1 "lib/changebit.S"
1 /*
0
0
2 * linux/arch/arm/lib/changebit.S
3 *
4 * Copyright (C) 1995-1996 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
11 #include <asm/assembler.h>
1 /*
2 * linux/include/asm-arm/assembler.h
3 *
4 * Copyright (C) 1996-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file contains arm architecture specific defines
11 * for the different processors.
12 *
13 * Do not include any C declarations in this file - it is included by
14 * assembler source.
15 */
16 #ifndef __ASSEMBLY__
17 #error "Only include this from assembly code"
18 #endif
19
20 #include <asm/ptrace.h>
1 /*
21
22 #define pull lsl
23 #define push lsr
24 #define get_byte_0 lsr #24
25 #define get_byte_1 lsr #16
26 #define get_byte_2 lsr #8
27 #define get_byte_3 lsl #0
28 #define put_byte_0 lsl #24
29 #define put_byte_1 lsl #16
30 #define put_byte_2 lsl #8
31 #define put_byte_3 lsl #0
32
33 #define PLD(code...)
34
35 #define MODE_USR USR_MODE
36 #define MODE_FIQ FIQ_MODE
37 #define MODE_IRQ IRQ_MODE
38 #define MODE_SVC SVC_MODE
39
40 #define DEFAULT_FIQ MODE_FIQ
41
42 /*
43 * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
44 */
45 #ifdef __STDC__
46 #define LOADREGS(cond, base, reglist...)\
47 ldm##cond base,reglist
48 #else
49 #define LOADREGS(cond, base, reglist...)\
50 ldm/**/cond base,reglist
51 #endif
52
53 /*
54 * Build a return instruction for this processor type.
55 */
56 #define RETINSTR(instr, regs...)\
57 instr regs
58
59 /*
60 * Enable and disable interrupts
61 */
62 .macro disable_irq
63 msr cpsr_c, #PSR_I_BIT | SVC_MODE
64 .endm
65
66 .macro enable_irq
67 msr cpsr_c, #SVC_MODE
68 .endm
69
70 /*
71 * Save the current IRQ state and disable IRQs. Note that this macro
72 * assumes FIQs are enabled, and that the processor is in SVC mode.
73 */
74 .macro save_and_disable_irqs, oldcpsr
75 mrs \oldcpsr, cpsr
76 disable_irq
77 .endm
78
79 /*
80 * Restore interrupt state previously stored in a register. We don't
81 * guarantee that this will preserve the flags.
82 */
83 .macro restore_irqs, oldcpsr
84 msr cpsr_c, \oldcpsr
85 .endm
86
87 /*
88 * These two are used to save LR/restore PC over a user-based access.
89 * The old 26-bit architecture requires that we do. On 32-bit
90 * architecture, we can safely ignore this requirement.
91 */
92 .macro save_lr
93 .endm
94
95 .macro restore_pc
96 mov pc, lr
97 .endm
98 ...
12 #include "bitops.h"
1 .macro bitop, instr
2 and r2, r0, #7
3 mov r3, #1
4 mov r3, r3, lsl r2
5 save_and_disable_irqs ip
6 ldrb r2, [r1, r0, lsr #3]
7 \instr r2, r2, r3
8 strb r2, [r1, r0, lsr #3]
9 restore_irqs ip
10 mov pc, lr
11 .endm
12
13 /**
14 * testop - implement a test_and_xxx_bit operation.
15 * @instr: operational instruction
16 * @store: store instruction
17 *
18 * Note: we can trivially conditionalise the store instruction
19 * to avoid dirting the data cache.
20 */
21 .macro testop, instr, store
22 add r1, r1, r0, lsr #3
23 and r3, r0, #7
24 mov r0, #1
25 save_and_disable_irqs ip
26 ldrb r2, [r1]
27 tst r2, r0, lsl r3
28 \instr r2, r2, r0, lsl r3
29 \store r2, [r1]
30 restore_irqs ip
31 moveq r0, #0
32 mov pc, lr
33 .endm
34 ...
13 .text
14
15 /* Purpose : Function to change a bit
16 * Prototype: int change_bit(int bit, void *addr)
17 */
18 ENTRY(_change_bit_be)
19 0000 180020E2 eor r0, r0, #0x18 @ big endian byte ordering
20 ENTRY(_change_bit_le)
21 0004 072000E2 bitop eor
21 0130A0E3
21 1332A0E1
21 00C00FE1
21 93F021E3
DEFINED SYMBOLS
lib/changebit.S:18 .text:00000000 _change_bit_be
lib/changebit.S:18 .text:00000000 $a
lib/changebit.S:20 .text:00000004 _change_bit_le
.debug_aranges:0000000c $d
NO UNDEFINED SYMBOLS

22
firmware/lib/clearbit.S Normal file
View File

@ -0,0 +1,22 @@
/*
* linux/arch/arm/lib/clearbit.S
*
* Copyright (C) 1995-1996 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
#include "bitops.h"
.text
/*
* Purpose : Function to clear a bit
* Prototype: int clear_bit(int bit, void *addr)
*/
ENTRY(_clear_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_clear_bit_le)
bitop bic

170
firmware/lib/clearbit.lst Normal file
View File

@ -0,0 +1,170 @@
1 # 1 "lib/clearbit.S"
1 /*
0
0
2 * linux/arch/arm/lib/clearbit.S
3 *
4 * Copyright (C) 1995-1996 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
11 #include <asm/assembler.h>
1 /*
2 * linux/include/asm-arm/assembler.h
3 *
4 * Copyright (C) 1996-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file contains arm architecture specific defines
11 * for the different processors.
12 *
13 * Do not include any C declarations in this file - it is included by
14 * assembler source.
15 */
16 #ifndef __ASSEMBLY__
17 #error "Only include this from assembly code"
18 #endif
19
20 #include <asm/ptrace.h>
1 /*
21
22 #define pull lsl
23 #define push lsr
24 #define get_byte_0 lsr #24
25 #define get_byte_1 lsr #16
26 #define get_byte_2 lsr #8
27 #define get_byte_3 lsl #0
28 #define put_byte_0 lsl #24
29 #define put_byte_1 lsl #16
30 #define put_byte_2 lsl #8
31 #define put_byte_3 lsl #0
32
33 #define PLD(code...)
34
35 #define MODE_USR USR_MODE
36 #define MODE_FIQ FIQ_MODE
37 #define MODE_IRQ IRQ_MODE
38 #define MODE_SVC SVC_MODE
39
40 #define DEFAULT_FIQ MODE_FIQ
41
42 /*
43 * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
44 */
45 #ifdef __STDC__
46 #define LOADREGS(cond, base, reglist...)\
47 ldm##cond base,reglist
48 #else
49 #define LOADREGS(cond, base, reglist...)\
50 ldm/**/cond base,reglist
51 #endif
52
53 /*
54 * Build a return instruction for this processor type.
55 */
56 #define RETINSTR(instr, regs...)\
57 instr regs
58
59 /*
60 * Enable and disable interrupts
61 */
62 .macro disable_irq
63 msr cpsr_c, #PSR_I_BIT | SVC_MODE
64 .endm
65
66 .macro enable_irq
67 msr cpsr_c, #SVC_MODE
68 .endm
69
70 /*
71 * Save the current IRQ state and disable IRQs. Note that this macro
72 * assumes FIQs are enabled, and that the processor is in SVC mode.
73 */
74 .macro save_and_disable_irqs, oldcpsr
75 mrs \oldcpsr, cpsr
76 disable_irq
77 .endm
78
79 /*
80 * Restore interrupt state previously stored in a register. We don't
81 * guarantee that this will preserve the flags.
82 */
83 .macro restore_irqs, oldcpsr
84 msr cpsr_c, \oldcpsr
85 .endm
86
87 /*
88 * These two are used to save LR/restore PC over a user-based access.
89 * The old 26-bit architecture requires that we do. On 32-bit
90 * architecture, we can safely ignore this requirement.
91 */
92 .macro save_lr
93 .endm
94
95 .macro restore_pc
96 mov pc, lr
97 .endm
98 ...
12 #include "bitops.h"
1 .macro bitop, instr
2 and r2, r0, #7
3 mov r3, #1
4 mov r3, r3, lsl r2
5 save_and_disable_irqs ip
6 ldrb r2, [r1, r0, lsr #3]
7 \instr r2, r2, r3
8 strb r2, [r1, r0, lsr #3]
9 restore_irqs ip
10 mov pc, lr
11 .endm
12
13 /**
14 * testop - implement a test_and_xxx_bit operation.
15 * @instr: operational instruction
16 * @store: store instruction
17 *
18 * Note: we can trivially conditionalise the store instruction
19 * to avoid dirting the data cache.
20 */
21 .macro testop, instr, store
22 add r1, r1, r0, lsr #3
23 and r3, r0, #7
24 mov r0, #1
25 save_and_disable_irqs ip
26 ldrb r2, [r1]
27 tst r2, r0, lsl r3
28 \instr r2, r2, r0, lsl r3
29 \store r2, [r1]
30 restore_irqs ip
31 moveq r0, #0
32 mov pc, lr
33 .endm
34 ...
13 .text
14
15 /*
16 * Purpose : Function to clear a bit
17 * Prototype: int clear_bit(int bit, void *addr)
18 */
19 ENTRY(_clear_bit_be)
20 0000 180020E2 eor r0, r0, #0x18 @ big endian byte ordering
21 ENTRY(_clear_bit_le)
22 0004 072000E2 bitop bic
22 0130A0E3
22 1332A0E1
22 00C00FE1
22 93F021E3
DEFINED SYMBOLS
lib/clearbit.S:19 .text:00000000 _clear_bit_be
lib/clearbit.S:19 .text:00000000 $a
lib/clearbit.S:21 .text:00000004 _clear_bit_le
.debug_aranges:0000000c $d
NO UNDEFINED SYMBOLS

View File

@ -0,0 +1,255 @@
/*
* linux/arch/arm/lib/copy_template.s
*
* Code template for optimized memory copy functions
*
* Author: Nicolas Pitre
* Created: Sep 28, 2005
* Copyright: MontaVista Software, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/*
* This can be used to enable code to cacheline align the source pointer.
* Experiments on tested architectures (StrongARM and XScale) didn't show
* this a worthwhile thing to do. That might be different in the future.
*/
//#define CALGN(code...) code
#define CALGN(code...)
/*
* Theory of operation
* -------------------
*
* This file provides the core code for a forward memory copy used in
* the implementation of memcopy(), copy_to_user() and copy_from_user().
*
* The including file must define the following accessor macros
* according to the need of the given function:
*
* ldr1w ptr reg abort
*
* This loads one word from 'ptr', stores it in 'reg' and increments
* 'ptr' to the next word. The 'abort' argument is used for fixup tables.
*
* ldr4w ptr reg1 reg2 reg3 reg4 abort
* ldr8w ptr, reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
*
* This loads four or eight words starting from 'ptr', stores them
* in provided registers and increments 'ptr' past those words.
* The'abort' argument is used for fixup tables.
*
* ldr1b ptr reg cond abort
*
* Similar to ldr1w, but it loads a byte and increments 'ptr' one byte.
* It also must apply the condition code if provided, otherwise the
* "al" condition is assumed by default.
*
* str1w ptr reg abort
* str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
* str1b ptr reg cond abort
*
* Same as their ldr* counterparts, but data is stored to 'ptr' location
* rather than being loaded.
*
* enter reg1 reg2
*
* Preserve the provided registers on the stack plus any additional
* data as needed by the implementation including this code. Called
* upon code entry.
*
* exit reg1 reg2
*
* Restore registers with the values previously saved with the
* 'preserv' macro. Called upon code termination.
*/
enter r4, lr
subs r2, r2, #4
blt 8f
ands ip, r0, #3
PLD( pld [r1, #0] )
bne 9f
ands ip, r1, #3
bne 10f
1: subs r2, r2, #(28)
stmfd sp!, {r5 - r8}
blt 5f
CALGN( ands ip, r1, #31 )
CALGN( rsb r3, ip, #32 )
CALGN( sbcnes r4, r3, r2 ) @ C is always set here
CALGN( bcs 2f )
CALGN( adr r4, 6f )
CALGN( subs r2, r2, r3 ) @ C gets set
CALGN( add pc, r4, ip )
PLD( pld [r1, #0] )
2: PLD( subs r2, r2, #96 )
PLD( pld [r1, #28] )
PLD( blt 4f )
PLD( pld [r1, #60] )
PLD( pld [r1, #92] )
3: PLD( pld [r1, #124] )
4: ldr8w r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
subs r2, r2, #32
str8w r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
bge 3b
PLD( cmn r2, #96 )
PLD( bge 4b )
5: ands ip, r2, #28
rsb ip, ip, #32
addne pc, pc, ip @ C is always clear here
b 7f
6: nop
ldr1w r1, r3, abort=20f
ldr1w r1, r4, abort=20f
ldr1w r1, r5, abort=20f
ldr1w r1, r6, abort=20f
ldr1w r1, r7, abort=20f
ldr1w r1, r8, abort=20f
ldr1w r1, lr, abort=20f
add pc, pc, ip
nop
nop
str1w r0, r3, abort=20f
str1w r0, r4, abort=20f
str1w r0, r5, abort=20f
str1w r0, r6, abort=20f
str1w r0, r7, abort=20f
str1w r0, r8, abort=20f
str1w r0, lr, abort=20f
CALGN( bcs 2b )
7: ldmfd sp!, {r5 - r8}
8: movs r2, r2, lsl #31
ldr1b r1, r3, ne, abort=21f
ldr1b r1, r4, cs, abort=21f
ldr1b r1, ip, cs, abort=21f
str1b r0, r3, ne, abort=21f
str1b r0, r4, cs, abort=21f
str1b r0, ip, cs, abort=21f
exit r4, pc
9: rsb ip, ip, #4
cmp ip, #2
ldr1b r1, r3, gt, abort=21f
ldr1b r1, r4, ge, abort=21f
ldr1b r1, lr, abort=21f
str1b r0, r3, gt, abort=21f
str1b r0, r4, ge, abort=21f
subs r2, r2, ip
str1b r0, lr, abort=21f
blt 8b
ands ip, r1, #3
beq 1b
10: bic r1, r1, #3
cmp ip, #2
ldr1w r1, lr, abort=21f
beq 17f
bgt 18f
.macro forward_copy_shift pull push
subs r2, r2, #28
blt 14f
CALGN( ands ip, r1, #31 )
CALGN( rsb ip, ip, #32 )
CALGN( sbcnes r4, ip, r2 ) @ C is always set here
CALGN( subcc r2, r2, ip )
CALGN( bcc 15f )
11: stmfd sp!, {r5 - r9}
PLD( pld [r1, #0] )
PLD( subs r2, r2, #96 )
PLD( pld [r1, #28] )
PLD( blt 13f )
PLD( pld [r1, #60] )
PLD( pld [r1, #92] )
12: PLD( pld [r1, #124] )
13: ldr4w r1, r4, r5, r6, r7, abort=19f
mov r3, lr, pull #\pull
subs r2, r2, #32
ldr4w r1, r8, r9, ip, lr, abort=19f
orr r3, r3, r4, push #\push
mov r4, r4, pull #\pull
orr r4, r4, r5, push #\push
mov r5, r5, pull #\pull
orr r5, r5, r6, push #\push
mov r6, r6, pull #\pull
orr r6, r6, r7, push #\push
mov r7, r7, pull #\pull
orr r7, r7, r8, push #\push
mov r8, r8, pull #\pull
orr r8, r8, r9, push #\push
mov r9, r9, pull #\pull
orr r9, r9, ip, push #\push
mov ip, ip, pull #\pull
orr ip, ip, lr, push #\push
str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
bge 12b
PLD( cmn r2, #96 )
PLD( bge 13b )
ldmfd sp!, {r5 - r9}
14: ands ip, r2, #28
beq 16f
15: mov r3, lr, pull #\pull
ldr1w r1, lr, abort=21f
subs ip, ip, #4
orr r3, r3, lr, push #\push
str1w r0, r3, abort=21f
bgt 15b
CALGN( cmp r2, #0 )
CALGN( bge 11b )
16: sub r1, r1, #(\push / 8)
b 8b
.endm
forward_copy_shift pull=8 push=24
17: forward_copy_shift pull=16 push=16
18: forward_copy_shift pull=24 push=8
/*
* Abort preamble and completion macros.
* If a fixup handler is required then those macros must surround it.
* It is assumed that the fixup code will handle the private part of
* the exit macro.
*/
.macro copy_abort_preamble
19: ldmfd sp!, {r5 - r9}
b 21f
20: ldmfd sp!, {r5 - r8}
21:
.endm
.macro copy_abort_end
ldmfd sp!, {r4, pc}
.endm

34
firmware/lib/ctype.c Normal file
View File

@ -0,0 +1,34 @@
/*
* linux/lib/ctype.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/
#include <asm/ctype.h>
unsigned char _ctype[] = {
_C,_C,_C,_C,_C,_C,_C,_C, /* 0-7 */
_C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C, /* 8-15 */
_C,_C,_C,_C,_C,_C,_C,_C, /* 16-23 */
_C,_C,_C,_C,_C,_C,_C,_C, /* 24-31 */
_S|_SP,_P,_P,_P,_P,_P,_P,_P, /* 32-39 */
_P,_P,_P,_P,_P,_P,_P,_P, /* 40-47 */
_D,_D,_D,_D,_D,_D,_D,_D, /* 48-55 */
_D,_D,_P,_P,_P,_P,_P,_P, /* 56-63 */
_P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U, /* 64-71 */
_U,_U,_U,_U,_U,_U,_U,_U, /* 72-79 */
_U,_U,_U,_U,_U,_U,_U,_U, /* 80-87 */
_U,_U,_U,_P,_P,_P,_P,_P, /* 88-95 */
_P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L, /* 96-103 */
_L,_L,_L,_L,_L,_L,_L,_L, /* 104-111 */
_L,_L,_L,_L,_L,_L,_L,_L, /* 112-119 */
_L,_L,_L,_P,_P,_P,_P,_C, /* 120-127 */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 128-143 */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 144-159 */
_S|_SP,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 160-175 */
_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 176-191 */
_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U, /* 192-207 */
_U,_U,_U,_U,_U,_U,_U,_P,_U,_U,_U,_U,_U,_U,_U,_L, /* 208-223 */
_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L, /* 224-239 */
_L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L}; /* 240-255 */

281
firmware/lib/ctype.lst Normal file
View File

@ -0,0 +1,281 @@
1 .cpu arm7tdmi
2 .fpu softvfp
3 .eabi_attribute 20, 1
4 .eabi_attribute 21, 1
5 .eabi_attribute 23, 3
6 .eabi_attribute 24, 1
7 .eabi_attribute 25, 1
8 .eabi_attribute 26, 1
9 .eabi_attribute 30, 4
10 .eabi_attribute 18, 4
11 .file "ctype.c"
19 .Ltext0:
20 .cfi_sections .debug_frame
21 .global _ctype
22 .data
25 _ctype:
26 0000 08 .byte 8
27 0001 08 .byte 8
28 0002 08 .byte 8
29 0003 08 .byte 8
30 0004 08 .byte 8
31 0005 08 .byte 8
32 0006 08 .byte 8
33 0007 08 .byte 8
34 0008 08 .byte 8
35 0009 28 .byte 40
36 000a 28 .byte 40
37 000b 28 .byte 40
38 000c 28 .byte 40
39 000d 28 .byte 40
40 000e 08 .byte 8
41 000f 08 .byte 8
42 0010 08 .byte 8
43 0011 08 .byte 8
44 0012 08 .byte 8
45 0013 08 .byte 8
46 0014 08 .byte 8
47 0015 08 .byte 8
48 0016 08 .byte 8
49 0017 08 .byte 8
50 0018 08 .byte 8
51 0019 08 .byte 8
52 001a 08 .byte 8
53 001b 08 .byte 8
54 001c 08 .byte 8
55 001d 08 .byte 8
56 001e 08 .byte 8
57 001f 08 .byte 8
58 0020 A0 .byte -96
59 0021 10 .byte 16
60 0022 10 .byte 16
61 0023 10 .byte 16
62 0024 10 .byte 16
63 0025 10 .byte 16
64 0026 10 .byte 16
65 0027 10 .byte 16
66 0028 10 .byte 16
67 0029 10 .byte 16
68 002a 10 .byte 16
69 002b 10 .byte 16
70 002c 10 .byte 16
71 002d 10 .byte 16
72 002e 10 .byte 16
73 002f 10 .byte 16
74 0030 04 .byte 4
75 0031 04 .byte 4
76 0032 04 .byte 4
77 0033 04 .byte 4
78 0034 04 .byte 4
79 0035 04 .byte 4
80 0036 04 .byte 4
81 0037 04 .byte 4
82 0038 04 .byte 4
83 0039 04 .byte 4
84 003a 10 .byte 16
85 003b 10 .byte 16
86 003c 10 .byte 16
87 003d 10 .byte 16
88 003e 10 .byte 16
89 003f 10 .byte 16
90 0040 10 .byte 16
91 0041 41 .byte 65
92 0042 41 .byte 65
93 0043 41 .byte 65
94 0044 41 .byte 65
95 0045 41 .byte 65
96 0046 41 .byte 65
97 0047 01 .byte 1
98 0048 01 .byte 1
99 0049 01 .byte 1
100 004a 01 .byte 1
101 004b 01 .byte 1
102 004c 01 .byte 1
103 004d 01 .byte 1
104 004e 01 .byte 1
105 004f 01 .byte 1
106 0050 01 .byte 1
107 0051 01 .byte 1
108 0052 01 .byte 1
109 0053 01 .byte 1
110 0054 01 .byte 1
111 0055 01 .byte 1
112 0056 01 .byte 1
113 0057 01 .byte 1
114 0058 01 .byte 1
115 0059 01 .byte 1
116 005a 01 .byte 1
117 005b 10 .byte 16
118 005c 10 .byte 16
119 005d 10 .byte 16
120 005e 10 .byte 16
121 005f 10 .byte 16
122 0060 10 .byte 16
123 0061 42 .byte 66
124 0062 42 .byte 66
125 0063 42 .byte 66
126 0064 42 .byte 66
127 0065 42 .byte 66
128 0066 42 .byte 66
129 0067 02 .byte 2
130 0068 02 .byte 2
131 0069 02 .byte 2
132 006a 02 .byte 2
133 006b 02 .byte 2
134 006c 02 .byte 2
135 006d 02 .byte 2
136 006e 02 .byte 2
137 006f 02 .byte 2
138 0070 02 .byte 2
139 0071 02 .byte 2
140 0072 02 .byte 2
141 0073 02 .byte 2
142 0074 02 .byte 2
143 0075 02 .byte 2
144 0076 02 .byte 2
145 0077 02 .byte 2
146 0078 02 .byte 2
147 0079 02 .byte 2
148 007a 02 .byte 2
149 007b 10 .byte 16
150 007c 10 .byte 16
151 007d 10 .byte 16
152 007e 10 .byte 16
153 007f 08 .byte 8
154 0080 00 .byte 0
155 0081 00 .byte 0
156 0082 00 .byte 0
157 0083 00 .byte 0
158 0084 00 .byte 0
159 0085 00 .byte 0
160 0086 00 .byte 0
161 0087 00 .byte 0
162 0088 00 .byte 0
163 0089 00 .byte 0
164 008a 00 .byte 0
165 008b 00 .byte 0
166 008c 00 .byte 0
167 008d 00 .byte 0
168 008e 00 .byte 0
169 008f 00 .byte 0
170 0090 00 .byte 0
171 0091 00 .byte 0
172 0092 00 .byte 0
173 0093 00 .byte 0
174 0094 00 .byte 0
175 0095 00 .byte 0
176 0096 00 .byte 0
177 0097 00 .byte 0
178 0098 00 .byte 0
179 0099 00 .byte 0
180 009a 00 .byte 0
181 009b 00 .byte 0
182 009c 00 .byte 0
183 009d 00 .byte 0
184 009e 00 .byte 0
185 009f 00 .byte 0
186 00a0 A0 .byte -96
187 00a1 10 .byte 16
188 00a2 10 .byte 16
189 00a3 10 .byte 16
190 00a4 10 .byte 16
191 00a5 10 .byte 16
192 00a6 10 .byte 16
193 00a7 10 .byte 16
194 00a8 10 .byte 16
195 00a9 10 .byte 16
196 00aa 10 .byte 16
197 00ab 10 .byte 16
198 00ac 10 .byte 16
199 00ad 10 .byte 16
200 00ae 10 .byte 16
201 00af 10 .byte 16
202 00b0 10 .byte 16
203 00b1 10 .byte 16
204 00b2 10 .byte 16
205 00b3 10 .byte 16
206 00b4 10 .byte 16
207 00b5 10 .byte 16
208 00b6 10 .byte 16
209 00b7 10 .byte 16
210 00b8 10 .byte 16
211 00b9 10 .byte 16
212 00ba 10 .byte 16
213 00bb 10 .byte 16
214 00bc 10 .byte 16
215 00bd 10 .byte 16
216 00be 10 .byte 16
217 00bf 10 .byte 16
218 00c0 01 .byte 1
219 00c1 01 .byte 1
220 00c2 01 .byte 1
221 00c3 01 .byte 1
222 00c4 01 .byte 1
223 00c5 01 .byte 1
224 00c6 01 .byte 1
225 00c7 01 .byte 1
226 00c8 01 .byte 1
227 00c9 01 .byte 1
228 00ca 01 .byte 1
229 00cb 01 .byte 1
230 00cc 01 .byte 1
231 00cd 01 .byte 1
232 00ce 01 .byte 1
233 00cf 01 .byte 1
234 00d0 01 .byte 1
235 00d1 01 .byte 1
236 00d2 01 .byte 1
237 00d3 01 .byte 1
238 00d4 01 .byte 1
239 00d5 01 .byte 1
240 00d6 01 .byte 1
241 00d7 10 .byte 16
242 00d8 01 .byte 1
243 00d9 01 .byte 1
244 00da 01 .byte 1
245 00db 01 .byte 1
246 00dc 01 .byte 1
247 00dd 01 .byte 1
248 00de 01 .byte 1
249 00df 02 .byte 2
250 00e0 02 .byte 2
251 00e1 02 .byte 2
252 00e2 02 .byte 2
253 00e3 02 .byte 2
254 00e4 02 .byte 2
255 00e5 02 .byte 2
256 00e6 02 .byte 2
257 00e7 02 .byte 2
258 00e8 02 .byte 2
259 00e9 02 .byte 2
260 00ea 02 .byte 2
261 00eb 02 .byte 2
262 00ec 02 .byte 2
263 00ed 02 .byte 2
264 00ee 02 .byte 2
265 00ef 02 .byte 2
266 00f0 02 .byte 2
267 00f1 02 .byte 2
268 00f2 02 .byte 2
269 00f3 02 .byte 2
270 00f4 02 .byte 2
271 00f5 02 .byte 2
272 00f6 02 .byte 2
273 00f7 10 .byte 16
274 00f8 02 .byte 2
275 00f9 02 .byte 2
276 00fa 02 .byte 2
277 00fb 02 .byte 2
278 00fc 02 .byte 2
279 00fd 02 .byte 2
280 00fe 02 .byte 2
281 00ff 02 .byte 2
282 .text
283 .Letext0:
284 .file 1 "include/asm/ctype.h"
285 .file 2 "lib/ctype.c"
DEFINED SYMBOLS
*ABS*:00000000 ctype.c
C:\Users\netz\AppData\Local\Temp\cc1cqvvg.s:25 .data:00000000 _ctype
NO UNDEFINED SYMBOLS

200
firmware/lib/div64.S Normal file
View File

@ -0,0 +1,200 @@
/*
* linux/arch/arm/lib/div64.S
*
* Optimized computation of 64-bit dividend / 32-bit divisor
*
* Author: Nicolas Pitre
* Created: Oct 5, 2003
* Copyright: Monta Vista Software, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#ifdef __ARMEB__
#define xh r0
#define xl r1
#define yh r2
#define yl r3
#else
#define xl r0
#define xh r1
#define yl r2
#define yh r3
#endif
/*
* __do_div64: perform a division with 64-bit dividend and 32-bit divisor.
*
* Note: Calling convention is totally non standard for optimal code.
* This is meant to be used by do_div() from include/asm/div64.h only.
*
* Input parameters:
* xh-xl = dividend (clobbered)
* r4 = divisor (preserved)
*
* Output values:
* yh-yl = result
* xh = remainder
*
* Clobbered regs: xl, ip
*/
ENTRY(__do_div64)
@ Test for easy paths first.
subs ip, r4, #1
bls 9f @ divisor is 0 or 1
tst ip, r4
beq 8f @ divisor is power of 2
@ See if we need to handle upper 32-bit result.
cmp xh, r4
mov yh, #0
blo 3f
@ Align divisor with upper part of dividend.
@ The aligned divisor is stored in yl preserving the original.
@ The bit position is stored in ip.
#if __LINUX_ARM_ARCH__ >= 5
clz yl, r4
clz ip, xh
sub yl, yl, ip
mov ip, #1
mov ip, ip, lsl yl
mov yl, r4, lsl yl
#else
mov yl, r4
mov ip, #1
1: cmp yl, #0x80000000
cmpcc yl, xh
movcc yl, yl, lsl #1
movcc ip, ip, lsl #1
bcc 1b
#endif
@ The division loop for needed upper bit positions.
@ Break out early if dividend reaches 0.
2: cmp xh, yl
orrcs yh, yh, ip
subcss xh, xh, yl
movnes ip, ip, lsr #1
mov yl, yl, lsr #1
bne 2b
@ See if we need to handle lower 32-bit result.
3: cmp xh, #0
mov yl, #0
cmpeq xl, r4
movlo xh, xl
movlo pc, lr
@ The division loop for lower bit positions.
@ Here we shift remainer bits leftwards rather than moving the
@ divisor for comparisons, considering the carry-out bit as well.
mov ip, #0x80000000
4: movs xl, xl, lsl #1
adcs xh, xh, xh
beq 6f
cmpcc xh, r4
5: orrcs yl, yl, ip
subcs xh, xh, r4
movs ip, ip, lsr #1
bne 4b
mov pc, lr
@ The top part of remainder became zero. If carry is set
@ (the 33th bit) this is a false positive so resume the loop.
@ Otherwise, if lower part is also null then we are done.
6: bcs 5b
cmp xl, #0
moveq pc, lr
@ We still have remainer bits in the low part. Bring them up.
#if __LINUX_ARM_ARCH__ >= 5
clz xh, xl @ we know xh is zero here so...
add xh, xh, #1
mov xl, xl, lsl xh
mov ip, ip, lsr xh
#else
7: movs xl, xl, lsl #1
mov ip, ip, lsr #1
bcc 7b
#endif
@ Current remainder is now 1. It is worthless to compare with
@ divisor at this point since divisor can not be smaller than 3 here.
@ If possible, branch for another shift in the division loop.
@ If no bit position left then we are done.
movs ip, ip, lsr #1
mov xh, #1
bne 4b
mov pc, lr
8: @ Division by a power of 2: determine what that divisor order is
@ then simply shift values around
#if __LINUX_ARM_ARCH__ >= 5
clz ip, r4
rsb ip, ip, #31
#else
mov yl, r4
cmp r4, #(1 << 16)
mov ip, #0
movhs yl, yl, lsr #16
movhs ip, #16
cmp yl, #(1 << 8)
movhs yl, yl, lsr #8
addhs ip, ip, #8
cmp yl, #(1 << 4)
movhs yl, yl, lsr #4
addhs ip, ip, #4
cmp yl, #(1 << 2)
addhi ip, ip, #3
addls ip, ip, yl, lsr #1
#endif
mov yh, xh, lsr ip
mov yl, xl, lsr ip
rsb ip, ip, #32
orr yl, yl, xh, lsl ip
mov xh, xl, lsl ip
mov xh, xh, lsr ip
mov pc, lr
@ eq -> division by 1: obvious enough...
9: moveq yl, xl
moveq yh, xh
moveq xh, #0
moveq pc, lr
@ Division by 0:
str lr, [sp, #-8]!
bl __div0
@ as wrong as it could be...
mov yl, #0
mov yh, #0
mov xh, #0
ldr pc, [sp], #8

210
firmware/lib/div64.lst Normal file
View File

@ -0,0 +1,210 @@
1 # 1 "lib/div64.S"
1 /*
0
0
2 * linux/arch/arm/lib/div64.S
3 *
4 * Optimized computation of 64-bit dividend / 32-bit divisor
5 *
6 * Author: Nicolas Pitre
7 * Created: Oct 5, 2003
8 * Copyright: Monta Vista Software, Inc.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13 */
14
15 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
16
17 #ifdef __ARMEB__
18 #define xh r0
19 #define xl r1
20 #define yh r2
21 #define yl r3
22 #else
23 #define xl r0
24 #define xh r1
25 #define yl r2
26 #define yh r3
27 #endif
28
29 /*
30 * __do_div64: perform a division with 64-bit dividend and 32-bit divisor.
31 *
32 * Note: Calling convention is totally non standard for optimal code.
33 * This is meant to be used by do_div() from include/asm/div64.h only.
34 *
35 * Input parameters:
36 * xh-xl = dividend (clobbered)
37 * r4 = divisor (preserved)
38 *
39 * Output values:
40 * yh-yl = result
41 * xh = remainder
42 *
43 * Clobbered regs: xl, ip
44 */
45
46 ENTRY(__do_div64)
47
48 @ Test for easy paths first.
49 0000 01C054E2 subs ip, r4, #1
50 0004 3F00009A bls 9f @ divisor is 0 or 1
51 0008 04001CE1 tst ip, r4
52 000c 2800000A beq 8f @ divisor is power of 2
53
54 @ See if we need to handle upper 32-bit result.
55 0010 040051E1 cmp xh, r4
56 0014 0030A0E3 mov yh, #0
57 0018 0C00003A blo 3f
58
59 @ Align divisor with upper part of dividend.
60 @ The aligned divisor is stored in yl preserving the original.
61 @ The bit position is stored in ip.
62
63 #if __LINUX_ARM_ARCH__ >= 5
64
65 clz yl, r4
66 clz ip, xh
67 sub yl, yl, ip
68 mov ip, #1
69 mov ip, ip, lsl yl
70 mov yl, r4, lsl yl
71
72 #else
73
74 001c 0420A0E1 mov yl, r4
75 0020 01C0A0E3 mov ip, #1
76 0024 020152E3 1: cmp yl, #0x80000000
77 0028 01005231 cmpcc yl, xh
78 002c 8220A031 movcc yl, yl, lsl #1
79 0030 8CC0A031 movcc ip, ip, lsl #1
80 0034 FAFFFF3A bcc 1b
81
82 #endif
83
84 @ The division loop for needed upper bit positions.
85 @ Break out early if dividend reaches 0.
86 0038 020051E1 2: cmp xh, yl
87 003c 0C308321 orrcs yh, yh, ip
88 0040 02105120 subcss xh, xh, yl
89 0044 ACC0B011 movnes ip, ip, lsr #1
90 0048 A220A0E1 mov yl, yl, lsr #1
91 004c F9FFFF1A bne 2b
92
93 @ See if we need to handle lower 32-bit result.
94 0050 000051E3 3: cmp xh, #0
95 0054 0020A0E3 mov yl, #0
96 0058 04005001 cmpeq xl, r4
97 005c 0010A031 movlo xh, xl
98 0060 0EF0A031 movlo pc, lr
99
100 @ The division loop for lower bit positions.
101 @ Here we shift remainer bits leftwards rather than moving the
102 @ divisor for comparisons, considering the carry-out bit as well.
103 0064 02C1A0E3 mov ip, #0x80000000
104 0068 8000B0E1 4: movs xl, xl, lsl #1
105 006c 0110B1E0 adcs xh, xh, xh
106 0070 0500000A beq 6f
107 0074 04005131 cmpcc xh, r4
108 0078 0C208221 5: orrcs yl, yl, ip
109 007c 04104120 subcs xh, xh, r4
110 0080 ACC0B0E1 movs ip, ip, lsr #1
111 0084 F7FFFF1A bne 4b
112 0088 0EF0A0E1 mov pc, lr
113
114 @ The top part of remainder became zero. If carry is set
115 @ (the 33th bit) this is a false positive so resume the loop.
116 @ Otherwise, if lower part is also null then we are done.
117 008c F9FFFF2A 6: bcs 5b
118 0090 000050E3 cmp xl, #0
119 0094 0EF0A001 moveq pc, lr
120
121 @ We still have remainer bits in the low part. Bring them up.
122
123 #if __LINUX_ARM_ARCH__ >= 5
124
125 clz xh, xl @ we know xh is zero here so...
126 add xh, xh, #1
127 mov xl, xl, lsl xh
128 mov ip, ip, lsr xh
129
130 #else
131
132 0098 8000B0E1 7: movs xl, xl, lsl #1
133 009c ACC0A0E1 mov ip, ip, lsr #1
134 00a0 FCFFFF3A bcc 7b
135
136 #endif
137
138 @ Current remainder is now 1. It is worthless to compare with
139 @ divisor at this point since divisor can not be smaller than 3 here.
140 @ If possible, branch for another shift in the division loop.
141 @ If no bit position left then we are done.
142 00a4 ACC0B0E1 movs ip, ip, lsr #1
143 00a8 0110A0E3 mov xh, #1
144 00ac EDFFFF1A bne 4b
145 00b0 0EF0A0E1 mov pc, lr
146
147 8: @ Division by a power of 2: determine what that divisor order is
148 @ then simply shift values around
149
150 #if __LINUX_ARM_ARCH__ >= 5
151
152 clz ip, r4
153 rsb ip, ip, #31
154
155 #else
156
157 00b4 0420A0E1 mov yl, r4
158 00b8 010854E3 cmp r4, #(1 << 16)
159 00bc 00C0A0E3 mov ip, #0
160 00c0 2228A021 movhs yl, yl, lsr #16
161 00c4 10C0A023 movhs ip, #16
162
163 00c8 010C52E3 cmp yl, #(1 << 8)
164 00cc 2224A021 movhs yl, yl, lsr #8
165 00d0 08C08C22 addhs ip, ip, #8
166
167 00d4 100052E3 cmp yl, #(1 << 4)
168 00d8 2222A021 movhs yl, yl, lsr #4
169 00dc 04C08C22 addhs ip, ip, #4
170
171 00e0 040052E3 cmp yl, #(1 << 2)
172 00e4 03C08C82 addhi ip, ip, #3
173 00e8 A2C08C90 addls ip, ip, yl, lsr #1
174
175 #endif
176
177 00ec 313CA0E1 mov yh, xh, lsr ip
178 00f0 302CA0E1 mov yl, xl, lsr ip
179 00f4 20C06CE2 rsb ip, ip, #32
180 00f8 112C82E1 orr yl, yl, xh, lsl ip
181 00fc 101CA0E1 mov xh, xl, lsl ip
182 0100 311CA0E1 mov xh, xh, lsr ip
183 0104 0EF0A0E1 mov pc, lr
184
185 @ eq -> division by 1: obvious enough...
186 0108 0020A001 9: moveq yl, xl
187 010c 0130A001 moveq yh, xh
188 0110 0010A003 moveq xh, #0
189 0114 0EF0A001 moveq pc, lr
190
191 @ Division by 0:
192 0118 08E02DE5 str lr, [sp, #-8]!
193 011c FEFFFFEB bl __div0
194
195 @ as wrong as it could be...
196 0120 0020A0E3 mov yl, #0
197 0124 0030A0E3 mov yh, #0
198 0128 0010A0E3 mov xh, #0
199 012c 08F09DE4 ldr pc, [sp], #8
DEFINED SYMBOLS
lib/div64.S:46 .text:00000000 __do_div64
lib/div64.S:46 .text:00000000 $a
.debug_aranges:0000000c $d
UNDEFINED SYMBOLS
__div0

338
firmware/lib/lib1funcs.S Normal file
View File

@ -0,0 +1,338 @@
/*
* linux/arch/arm/lib/lib1funcs.S: Optimized ARM division routines
*
* Author: Nicolas Pitre <nico@cam.org>
* - contributed to gcc-3.4 on Sep 30, 2003
* - adapted for the Linux kernel on Oct 2, 2003
*/
/* Copyright 1995, 1996, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
In addition to the permissions in the GNU General Public License, the
Free Software Foundation gives you unlimited permission to link the
compiled version of this file into combinations with other programs,
and to distribute those combinations without any restriction coming
from the use of this file. (The General Public License restrictions
do apply in other respects; for example, they cover modification of
the file, and distribution when not linked into a combine
executable.)
This file is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <asm/linkage.h>
#include <asm/assembler.h>
.macro ARM_DIV_BODY dividend, divisor, result, curbit
#if __LINUX_ARM_ARCH__ >= 5
clz \curbit, \divisor
clz \result, \dividend
sub \result, \curbit, \result
mov \curbit, #1
mov \divisor, \divisor, lsl \result
mov \curbit, \curbit, lsl \result
mov \result, #0
#else
@ Initially shift the divisor left 3 bits if possible,
@ set curbit accordingly. This allows for curbit to be located
@ at the left end of each 4 bit nibbles in the division loop
@ to save one loop in most cases.
tst \divisor, #0xe0000000
moveq \divisor, \divisor, lsl #3
moveq \curbit, #8
movne \curbit, #1
@ Unless the divisor is very big, shift it up in multiples of
@ four bits, since this is the amount of unwinding in the main
@ division loop. Continue shifting until the divisor is
@ larger than the dividend.
1: cmp \divisor, #0x10000000
cmplo \divisor, \dividend
movlo \divisor, \divisor, lsl #4
movlo \curbit, \curbit, lsl #4
blo 1b
@ For very big divisors, we must shift it a bit at a time, or
@ we will be in danger of overflowing.
1: cmp \divisor, #0x80000000
cmplo \divisor, \dividend
movlo \divisor, \divisor, lsl #1
movlo \curbit, \curbit, lsl #1
blo 1b
mov \result, #0
#endif
@ Division loop
1: cmp \dividend, \divisor
subhs \dividend, \dividend, \divisor
orrhs \result, \result, \curbit
cmp \dividend, \divisor, lsr #1
subhs \dividend, \dividend, \divisor, lsr #1
orrhs \result, \result, \curbit, lsr #1
cmp \dividend, \divisor, lsr #2
subhs \dividend, \dividend, \divisor, lsr #2
orrhs \result, \result, \curbit, lsr #2
cmp \dividend, \divisor, lsr #3
subhs \dividend, \dividend, \divisor, lsr #3
orrhs \result, \result, \curbit, lsr #3
cmp \dividend, #0 @ Early termination?
movnes \curbit, \curbit, lsr #4 @ No, any more bits to do?
movne \divisor, \divisor, lsr #4
bne 1b
.endm
.macro ARM_DIV2_ORDER divisor, order
#if __LINUX_ARM_ARCH__ >= 5
clz \order, \divisor
rsb \order, \order, #31
#else
cmp \divisor, #(1 << 16)
movhs \divisor, \divisor, lsr #16
movhs \order, #16
movlo \order, #0
cmp \divisor, #(1 << 8)
movhs \divisor, \divisor, lsr #8
addhs \order, \order, #8
cmp \divisor, #(1 << 4)
movhs \divisor, \divisor, lsr #4
addhs \order, \order, #4
cmp \divisor, #(1 << 2)
addhi \order, \order, #3
addls \order, \order, \divisor, lsr #1
#endif
.endm
.macro ARM_MOD_BODY dividend, divisor, order, spare
#if __LINUX_ARM_ARCH__ >= 5
clz \order, \divisor
clz \spare, \dividend
sub \order, \order, \spare
mov \divisor, \divisor, lsl \order
#else
mov \order, #0
@ Unless the divisor is very big, shift it up in multiples of
@ four bits, since this is the amount of unwinding in the main
@ division loop. Continue shifting until the divisor is
@ larger than the dividend.
1: cmp \divisor, #0x10000000
cmplo \divisor, \dividend
movlo \divisor, \divisor, lsl #4
addlo \order, \order, #4
blo 1b
@ For very big divisors, we must shift it a bit at a time, or
@ we will be in danger of overflowing.
1: cmp \divisor, #0x80000000
cmplo \divisor, \dividend
movlo \divisor, \divisor, lsl #1
addlo \order, \order, #1
blo 1b
#endif
@ Perform all needed substractions to keep only the reminder.
@ Do comparisons in batch of 4 first.
subs \order, \order, #3 @ yes, 3 is intended here
blt 2f
1: cmp \dividend, \divisor
subhs \dividend, \dividend, \divisor
cmp \dividend, \divisor, lsr #1
subhs \dividend, \dividend, \divisor, lsr #1
cmp \dividend, \divisor, lsr #2
subhs \dividend, \dividend, \divisor, lsr #2
cmp \dividend, \divisor, lsr #3
subhs \dividend, \dividend, \divisor, lsr #3
cmp \dividend, #1
mov \divisor, \divisor, lsr #4
subges \order, \order, #4
bge 1b
tst \order, #3
teqne \dividend, #0
beq 5f
@ Either 1, 2 or 3 comparison/substractions are left.
2: cmn \order, #2
blt 4f
beq 3f
cmp \dividend, \divisor
subhs \dividend, \dividend, \divisor
mov \divisor, \divisor, lsr #1
3: cmp \dividend, \divisor
subhs \dividend, \dividend, \divisor
mov \divisor, \divisor, lsr #1
4: cmp \dividend, \divisor
subhs \dividend, \dividend, \divisor
5:
.endm
/*ENTRY(__udivsi3)
ENTRY(__aeabi_uidiv)
subs r2, r1, #1
moveq pc, lr
bcc Ldiv0
cmp r0, r1
bls 11f
tst r1, r2
beq 12f
ARM_DIV_BODY r0, r1, r2, r3
mov r0, r2
mov pc, lr
11: moveq r0, #1
movne r0, #0
mov pc, lr
12: ARM_DIV2_ORDER r1, r2
mov r0, r0, lsr r2
mov pc, lr
*/
ENTRY(__umodsi3)
subs r2, r1, #1 @ compare divisor with 1
bcc Ldiv0
cmpne r0, r1 @ compare dividend with divisor
moveq r0, #0
tsthi r1, r2 @ see if divisor is power of 2
andeq r0, r0, r2
movls pc, lr
ARM_MOD_BODY r0, r1, r2, r3
mov pc, lr
ENTRY(__divsi3)
ENTRY(__aeabi_idiv)
cmp r1, #0
eor ip, r0, r1 @ save the sign of the result.
beq Ldiv0
rsbmi r1, r1, #0 @ loops below use unsigned.
subs r2, r1, #1 @ division by 1 or -1 ?
beq 10f
movs r3, r0
rsbmi r3, r0, #0 @ positive dividend value
cmp r3, r1
bls 11f
tst r1, r2 @ divisor is power of 2 ?
beq 12f
ARM_DIV_BODY r3, r1, r0, r2
cmp ip, #0
rsbmi r0, r0, #0
mov pc, lr
10: teq ip, r0 @ same sign ?
rsbmi r0, r0, #0
mov pc, lr
11: movlo r0, #0
moveq r0, ip, asr #31
orreq r0, r0, #1
mov pc, lr
12: ARM_DIV2_ORDER r1, r2
cmp ip, #0
mov r0, r3, lsr r2
rsbmi r0, r0, #0
mov pc, lr
ENTRY(__modsi3)
cmp r1, #0
beq Ldiv0
rsbmi r1, r1, #0 @ loops below use unsigned.
movs ip, r0 @ preserve sign of dividend
rsbmi r0, r0, #0 @ if negative make positive
subs r2, r1, #1 @ compare divisor with 1
cmpne r0, r1 @ compare dividend with divisor
moveq r0, #0
tsthi r1, r2 @ see if divisor is power of 2
andeq r0, r0, r2
bls 10f
ARM_MOD_BODY r0, r1, r2, r3
10: cmp ip, #0
rsbmi r0, r0, #0
mov pc, lr
#ifdef CONFIG_AEABI
ENTRY(__aeabi_uidivmod)
stmfd sp!, {r0, r1, ip, lr}
bl __aeabi_uidiv
ldmfd sp!, {r1, r2, ip, lr}
mul r3, r0, r2
sub r1, r1, r3
mov pc, lr
ENTRY(__aeabi_idivmod)
stmfd sp!, {r0, r1, ip, lr}
bl __aeabi_idiv
ldmfd sp!, {r1, r2, ip, lr}
mul r3, r0, r2
sub r1, r1, r3
mov pc, lr
#endif
Ldiv0:
str lr, [sp, #-8]!
bl __div0
mov r0, #0 @ About as wrong as it could be.
ldr pc, [sp], #8
ENTRY(__div0)
mov pc, lr

452
firmware/lib/lib1funcs.lst Normal file
View File

@ -0,0 +1,452 @@
1 # 1 "lib/lib1funcs.S"
1 /*
0
0
2 * linux/arch/arm/lib/lib1funcs.S: Optimized ARM division routines
3 *
4 * Author: Nicolas Pitre <nico@cam.org>
5 * - contributed to gcc-3.4 on Sep 30, 2003
6 * - adapted for the Linux kernel on Oct 2, 2003
7 */
8
9 /* Copyright 1995, 1996, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
10
11 This file is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation; either version 2, or (at your option) any
14 later version.
15
16 In addition to the permissions in the GNU General Public License, the
17 Free Software Foundation gives you unlimited permission to link the
18 compiled version of this file into combinations with other programs,
19 and to distribute those combinations without any restriction coming
20 from the use of this file. (The General Public License restrictions
21 do apply in other respects; for example, they cover modification of
22 the file, and distribution when not linked into a combine
23 executable.)
24
25 This file is distributed in the hope that it will be useful, but
26 WITHOUT ANY WARRANTY; without even the implied warranty of
27 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 General Public License for more details.
29
30 You should have received a copy of the GNU General Public License
31 along with this program; see the file COPYING. If not, write to
32 the Free Software Foundation, 59 Temple Place - Suite 330,
33 Boston, MA 02111-1307, USA. */
34
35
36 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
37 #include <asm/assembler.h>
1 /*
2 * linux/include/asm-arm/assembler.h
3 *
4 * Copyright (C) 1996-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file contains arm architecture specific defines
11 * for the different processors.
12 *
13 * Do not include any C declarations in this file - it is included by
14 * assembler source.
15 */
16 #ifndef __ASSEMBLY__
17 #error "Only include this from assembly code"
18 #endif
19
20 #include <asm/ptrace.h>
1 /*
21
22 #define pull lsl
23 #define push lsr
24 #define get_byte_0 lsr #24
25 #define get_byte_1 lsr #16
26 #define get_byte_2 lsr #8
27 #define get_byte_3 lsl #0
28 #define put_byte_0 lsl #24
29 #define put_byte_1 lsl #16
30 #define put_byte_2 lsl #8
31 #define put_byte_3 lsl #0
32
33 #define PLD(code...)
34
35 #define MODE_USR USR_MODE
36 #define MODE_FIQ FIQ_MODE
37 #define MODE_IRQ IRQ_MODE
38 #define MODE_SVC SVC_MODE
39
40 #define DEFAULT_FIQ MODE_FIQ
41
42 /*
43 * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
44 */
45 #ifdef __STDC__
46 #define LOADREGS(cond, base, reglist...)\
47 ldm##cond base,reglist
48 #else
49 #define LOADREGS(cond, base, reglist...)\
50 ldm/**/cond base,reglist
51 #endif
52
53 /*
54 * Build a return instruction for this processor type.
55 */
56 #define RETINSTR(instr, regs...)\
57 instr regs
58
59 /*
60 * Enable and disable interrupts
61 */
62 .macro disable_irq
63 msr cpsr_c, #PSR_I_BIT | SVC_MODE
64 .endm
65
66 .macro enable_irq
67 msr cpsr_c, #SVC_MODE
68 .endm
69
70 /*
71 * Save the current IRQ state and disable IRQs. Note that this macro
72 * assumes FIQs are enabled, and that the processor is in SVC mode.
73 */
74 .macro save_and_disable_irqs, oldcpsr
75 mrs \oldcpsr, cpsr
76 disable_irq
77 .endm
78
79 /*
80 * Restore interrupt state previously stored in a register. We don't
81 * guarantee that this will preserve the flags.
82 */
83 .macro restore_irqs, oldcpsr
84 msr cpsr_c, \oldcpsr
85 .endm
86
87 /*
88 * These two are used to save LR/restore PC over a user-based access.
89 * The old 26-bit architecture requires that we do. On 32-bit
90 * architecture, we can safely ignore this requirement.
91 */
92 .macro save_lr
93 .endm
94
95 .macro restore_pc
96 mov pc, lr
97 .endm
98 ...
38
39
40 .macro ARM_DIV_BODY dividend, divisor, result, curbit
41
42 #if __LINUX_ARM_ARCH__ >= 5
43
44 clz \curbit, \divisor
45 clz \result, \dividend
46 sub \result, \curbit, \result
47 mov \curbit, #1
48 mov \divisor, \divisor, lsl \result
49 mov \curbit, \curbit, lsl \result
50 mov \result, #0
51
52 #else
53
54 @ Initially shift the divisor left 3 bits if possible,
55 @ set curbit accordingly. This allows for curbit to be located
56 @ at the left end of each 4 bit nibbles in the division loop
57 @ to save one loop in most cases.
58 tst \divisor, #0xe0000000
59 moveq \divisor, \divisor, lsl #3
60 moveq \curbit, #8
61 movne \curbit, #1
62
63 @ Unless the divisor is very big, shift it up in multiples of
64 @ four bits, since this is the amount of unwinding in the main
65 @ division loop. Continue shifting until the divisor is
66 @ larger than the dividend.
67 1: cmp \divisor, #0x10000000
68 cmplo \divisor, \dividend
69 movlo \divisor, \divisor, lsl #4
70 movlo \curbit, \curbit, lsl #4
71 blo 1b
72
73 @ For very big divisors, we must shift it a bit at a time, or
74 @ we will be in danger of overflowing.
75 1: cmp \divisor, #0x80000000
76 cmplo \divisor, \dividend
77 movlo \divisor, \divisor, lsl #1
78 movlo \curbit, \curbit, lsl #1
79 blo 1b
80
81 mov \result, #0
82
83 #endif
84
85 @ Division loop
86 1: cmp \dividend, \divisor
87 subhs \dividend, \dividend, \divisor
88 orrhs \result, \result, \curbit
89 cmp \dividend, \divisor, lsr #1
90 subhs \dividend, \dividend, \divisor, lsr #1
91 orrhs \result, \result, \curbit, lsr #1
92 cmp \dividend, \divisor, lsr #2
93 subhs \dividend, \dividend, \divisor, lsr #2
94 orrhs \result, \result, \curbit, lsr #2
95 cmp \dividend, \divisor, lsr #3
96 subhs \dividend, \dividend, \divisor, lsr #3
97 orrhs \result, \result, \curbit, lsr #3
98 cmp \dividend, #0 @ Early termination?
99 movnes \curbit, \curbit, lsr #4 @ No, any more bits to do?
100 movne \divisor, \divisor, lsr #4
101 bne 1b
102
103 .endm
104
105
106 .macro ARM_DIV2_ORDER divisor, order
107
108 #if __LINUX_ARM_ARCH__ >= 5
109
110 clz \order, \divisor
111 rsb \order, \order, #31
112
113 #else
114
115 cmp \divisor, #(1 << 16)
116 movhs \divisor, \divisor, lsr #16
117 movhs \order, #16
118 movlo \order, #0
119
120 cmp \divisor, #(1 << 8)
121 movhs \divisor, \divisor, lsr #8
122 addhs \order, \order, #8
123
124 cmp \divisor, #(1 << 4)
125 movhs \divisor, \divisor, lsr #4
126 addhs \order, \order, #4
127
128 cmp \divisor, #(1 << 2)
129 addhi \order, \order, #3
130 addls \order, \order, \divisor, lsr #1
131
132 #endif
133
134 .endm
135
136
137 .macro ARM_MOD_BODY dividend, divisor, order, spare
138
139 #if __LINUX_ARM_ARCH__ >= 5
140
141 clz \order, \divisor
142 clz \spare, \dividend
143 sub \order, \order, \spare
144 mov \divisor, \divisor, lsl \order
145
146 #else
147
148 mov \order, #0
149
150 @ Unless the divisor is very big, shift it up in multiples of
151 @ four bits, since this is the amount of unwinding in the main
152 @ division loop. Continue shifting until the divisor is
153 @ larger than the dividend.
154 1: cmp \divisor, #0x10000000
155 cmplo \divisor, \dividend
156 movlo \divisor, \divisor, lsl #4
157 addlo \order, \order, #4
158 blo 1b
159
160 @ For very big divisors, we must shift it a bit at a time, or
161 @ we will be in danger of overflowing.
162 1: cmp \divisor, #0x80000000
163 cmplo \divisor, \dividend
164 movlo \divisor, \divisor, lsl #1
165 addlo \order, \order, #1
166 blo 1b
167
168 #endif
169
170 @ Perform all needed substractions to keep only the reminder.
171 @ Do comparisons in batch of 4 first.
172 subs \order, \order, #3 @ yes, 3 is intended here
173 blt 2f
174
175 1: cmp \dividend, \divisor
176 subhs \dividend, \dividend, \divisor
177 cmp \dividend, \divisor, lsr #1
178 subhs \dividend, \dividend, \divisor, lsr #1
179 cmp \dividend, \divisor, lsr #2
180 subhs \dividend, \dividend, \divisor, lsr #2
181 cmp \dividend, \divisor, lsr #3
182 subhs \dividend, \dividend, \divisor, lsr #3
183 cmp \dividend, #1
184 mov \divisor, \divisor, lsr #4
185 subges \order, \order, #4
186 bge 1b
187
188 tst \order, #3
189 teqne \dividend, #0
190 beq 5f
191
192 @ Either 1, 2 or 3 comparison/substractions are left.
193 2: cmn \order, #2
194 blt 4f
195 beq 3f
196 cmp \dividend, \divisor
197 subhs \dividend, \dividend, \divisor
198 mov \divisor, \divisor, lsr #1
199 3: cmp \dividend, \divisor
200 subhs \dividend, \dividend, \divisor
201 mov \divisor, \divisor, lsr #1
202 4: cmp \dividend, \divisor
203 subhs \dividend, \dividend, \divisor
204 5:
205 .endm
206
207
208 /*ENTRY(__udivsi3)
209 ENTRY(__aeabi_uidiv)
210
211 subs r2, r1, #1
212 moveq pc, lr
213 bcc Ldiv0
214 cmp r0, r1
215 bls 11f
216 tst r1, r2
217 beq 12f
218
219 ARM_DIV_BODY r0, r1, r2, r3
220
221 mov r0, r2
222 mov pc, lr
223
224 11: moveq r0, #1
225 movne r0, #0
226 mov pc, lr
227
228 12: ARM_DIV2_ORDER r1, r2
229
230 mov r0, r0, lsr r2
231 mov pc, lr
232 */
233
234 ENTRY(__umodsi3)
235
236 0000 012051E2 subs r2, r1, #1 @ compare divisor with 1
237 0004 A700003A bcc Ldiv0
238 0008 01005011 cmpne r0, r1 @ compare dividend with divisor
239 000c 0000A003 moveq r0, #0
240 0010 02001181 tsthi r1, r2 @ see if divisor is power of 2
241 0014 02000000 andeq r0, r0, r2
242 0018 0EF0A091 movls pc, lr
243
244 ARM_MOD_BODY r0, r1, r2, r3
245
246 00b8 0EF0A0E1 mov pc, lr
247
248
249 ENTRY(__divsi3)
250 ENTRY(__aeabi_idiv)
251
252 00bc 000051E3 cmp r1, #0
253 00c0 01C020E0 eor ip, r0, r1 @ save the sign of the result.
254 00c4 7700000A beq Ldiv0
255 00c8 00106142 rsbmi r1, r1, #0 @ loops below use unsigned.
256 00cc 012051E2 subs r2, r1, #1 @ division by 1 or -1 ?
257 00d0 2700000A beq 10f
258 00d4 0030B0E1 movs r3, r0
259 00d8 00306042 rsbmi r3, r0, #0 @ positive dividend value
260 00dc 010053E1 cmp r3, r1
261 00e0 2600009A bls 11f
262 00e4 020011E1 tst r1, r2 @ divisor is power of 2 ?
263 00e8 2800000A beq 12f
264
265 ARM_DIV_BODY r3, r1, r0, r2
266
267 0168 00005CE3 cmp ip, #0
268 016c 00006042 rsbmi r0, r0, #0
269 0170 0EF0A0E1 mov pc, lr
270
271 0174 00003CE1 10: teq ip, r0 @ same sign ?
272 0178 00006042 rsbmi r0, r0, #0
273 017c 0EF0A0E1 mov pc, lr
274
275 0180 0000A033 11: movlo r0, #0
276 0184 CC0FA001 moveq r0, ip, asr #31
277 0188 01008003 orreq r0, r0, #1
278 018c 0EF0A0E1 mov pc, lr
279
280 12: ARM_DIV2_ORDER r1, r2
281
282 01c4 00005CE3 cmp ip, #0
283 01c8 3302A0E1 mov r0, r3, lsr r2
284 01cc 00006042 rsbmi r0, r0, #0
285 01d0 0EF0A0E1 mov pc, lr
286
287
288 ENTRY(__modsi3)
289
290 01d4 000051E3 cmp r1, #0
291 01d8 3200000A beq Ldiv0
292 01dc 00106142 rsbmi r1, r1, #0 @ loops below use unsigned.
293 01e0 00C0B0E1 movs ip, r0 @ preserve sign of dividend
294 01e4 00006042 rsbmi r0, r0, #0 @ if negative make positive
295 01e8 012051E2 subs r2, r1, #1 @ compare divisor with 1
296 01ec 01005011 cmpne r0, r1 @ compare dividend with divisor
297 01f0 0000A003 moveq r0, #0
298 01f4 02001181 tsthi r1, r2 @ see if divisor is power of 2
299 01f8 02000000 andeq r0, r0, r2
300 01fc 2600009A bls 10f
301
302 ARM_MOD_BODY r0, r1, r2, r3
303
304 029c 00005CE3 10: cmp ip, #0
305 02a0 00006042 rsbmi r0, r0, #0
306 02a4 0EF0A0E1 mov pc, lr
307
308 #ifdef CONFIG_AEABI
309
310 ENTRY(__aeabi_uidivmod)
311
312 stmfd sp!, {r0, r1, ip, lr}
313 bl __aeabi_uidiv
314 ldmfd sp!, {r1, r2, ip, lr}
315 mul r3, r0, r2
316 sub r1, r1, r3
317 mov pc, lr
318
319 ENTRY(__aeabi_idivmod)
320
321 stmfd sp!, {r0, r1, ip, lr}
322 bl __aeabi_idiv
323 ldmfd sp!, {r1, r2, ip, lr}
324 mul r3, r0, r2
325 sub r1, r1, r3
326 mov pc, lr
327
328 #endif
329
330 Ldiv0:
331
332 02a8 08E02DE5 str lr, [sp, #-8]!
333 02ac FEFFFFEB bl __div0
334 02b0 0000A0E3 mov r0, #0 @ About as wrong as it could be.
335 02b4 08F09DE4 ldr pc, [sp], #8
336
337 ENTRY(__div0)
338 02b8 0EF0A0E1 mov pc, lr
DEFINED SYMBOLS
lib/lib1funcs.S:234 .text:00000000 __umodsi3
lib/lib1funcs.S:234 .text:00000000 $a
lib/lib1funcs.S:330 .text:000002a8 Ldiv0
lib/lib1funcs.S:249 .text:000000bc __divsi3
lib/lib1funcs.S:250 .text:000000bc __aeabi_idiv
lib/lib1funcs.S:288 .text:000001d4 __modsi3
lib/lib1funcs.S:337 .text:000002b8 __div0
.debug_aranges:0000000c $d
NO UNDEFINED SYMBOLS

405
firmware/lib/lib_AT91SAM7.c Normal file
View File

@ -0,0 +1,405 @@
//* ----------------------------------------------------------------------------
//* ATMEL Microcontroller Software Support - ROUSSET -
//* ----------------------------------------------------------------------------
//* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
//* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
//* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
//* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
//* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
//* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
//* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
//* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
//* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
//* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//* ----------------------------------------------------------------------------
//* File Name : lib_AT91SAM7S64.h
//* Object : AT91SAM7S64 inlined functions
//* Generated : AT91 SW Application Group 08/30/2005 (15:52:59)
//*
#include <sys/types.h>
#include <include/AT91SAM7.h>
#include <include/lib_AT91SAM7.h>
//*----------------------------------------------------------------------------
//* \fn AT91F_AIC_ConfigureIt
//* \brief Interrupt Handler Initialization
//*----------------------------------------------------------------------------
unsigned int AT91F_AIC_ConfigureIt (
AT91PS_AIC pAic, // \arg pointer to the AIC registers
unsigned int irq_id, // \arg interrupt number to initialize
unsigned int priority, // \arg priority to give to the interrupt
unsigned int src_type, // \arg activation and sense of activation
void (*newHandler) () ) // \arg address of the interrupt handler
{
unsigned int oldHandler;
unsigned int mask ;
oldHandler = pAic->AIC_SVR[irq_id];
mask = 0x1 << irq_id ;
//* Disable the interrupt on the interrupt controller
pAic->AIC_IDCR = mask ;
//* Save the interrupt handler routine pointer and the interrupt priority
pAic->AIC_SVR[irq_id] = (unsigned int) newHandler ;
//* Store the Source Mode Register
pAic->AIC_SMR[irq_id] = src_type | priority ;
//* Clear the interrupt on the interrupt controller
pAic->AIC_ICCR = mask ;
return oldHandler;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_AIC_SetExceptionVector
//* \brief Configure vector handler
//*----------------------------------------------------------------------------
unsigned int AT91F_AIC_SetExceptionVector (
unsigned int *pVector, // \arg pointer to the AIC registers
void (*Handler) () ) // \arg Interrupt Handler
{
unsigned int oldVector = *pVector;
if ((unsigned int) Handler == (unsigned int) AT91C_AIC_BRANCH_OPCODE)
*pVector = (unsigned int) AT91C_AIC_BRANCH_OPCODE;
else
*pVector = (((((unsigned int) Handler) - ((unsigned int) pVector) - 0x8) >> 2) & 0x00FFFFFF) | 0xEA000000;
return oldVector;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_AIC_Open
//* \brief Set exception vectors and AIC registers to default values
//*----------------------------------------------------------------------------
void AT91F_AIC_Open(
AT91PS_AIC pAic, // \arg pointer to the AIC registers
void (*IrqHandler) (), // \arg Default IRQ vector exception
void (*FiqHandler) (), // \arg Default FIQ vector exception
void (*DefaultHandler) (), // \arg Default Handler set in ISR
void (*SpuriousHandler) (), // \arg Default Spurious Handler
unsigned int protectMode) // \arg Debug Control Register
{
int i;
// Disable all interrupts and set IVR to the default handler
for (i = 0; i < 32; ++i) {
AT91F_AIC_DisableIt(pAic, i);
AT91F_AIC_ConfigureIt(pAic, i, AT91C_AIC_PRIOR_LOWEST, AT91C_AIC_SRCTYPE_HIGH_LEVEL, DefaultHandler);
}
// Set the IRQ exception vector
AT91F_AIC_SetExceptionVector((unsigned int *) 0x18, IrqHandler);
// Set the Fast Interrupt exception vector
AT91F_AIC_SetExceptionVector((unsigned int *) 0x1C, FiqHandler);
pAic->AIC_SPU = (unsigned int) SpuriousHandler;
pAic->AIC_DCR = protectMode;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PDC_Open
//* \brief Open PDC: disable TX and RX reset transfer descriptors, re-enable RX and TX
//*----------------------------------------------------------------------------
void AT91F_PDC_Open(AT91PS_PDC pPDC) // \arg pointer to a PDC controller
{
//* Disable the RX and TX PDC transfer requests
AT91F_PDC_DisableRx(pPDC);
AT91F_PDC_DisableTx(pPDC);
//* Reset all Counter register Next buffer first
AT91F_PDC_SetNextTx(pPDC, NULL, 0);
AT91F_PDC_SetNextRx(pPDC, NULL, 0);
AT91F_PDC_SetTx(pPDC, NULL, 0);
AT91F_PDC_SetRx(pPDC, NULL, 0);
//* Enable the RX and TX PDC transfer requests
AT91F_PDC_EnableRx(pPDC);
AT91F_PDC_EnableTx(pPDC);
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PDC_Close
//* \brief Close PDC: disable TX and RX reset transfer descriptors
//*----------------------------------------------------------------------------
void AT91F_PDC_Close(AT91PS_PDC pPDC) // \arg pointer to a PDC controller
{
//* Disable the RX and TX PDC transfer requests
AT91F_PDC_DisableRx(pPDC);
AT91F_PDC_DisableTx(pPDC);
//* Reset all Counter register Next buffer first
AT91F_PDC_SetNextTx(pPDC, NULL, 0);
AT91F_PDC_SetNextRx(pPDC, NULL, 0);
AT91F_PDC_SetTx(pPDC, NULL, 0);
AT91F_PDC_SetRx(pPDC, NULL, 0);
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PDC_SendFrame
//* \brief Close PDC: disable TX and RX reset transfer descriptors
//*----------------------------------------------------------------------------
unsigned int AT91F_PDC_SendFrame(
AT91PS_PDC pPDC,
const unsigned char *pBuffer,
unsigned int szBuffer,
const unsigned char *pNextBuffer,
unsigned int szNextBuffer )
{
if (AT91F_PDC_IsTxEmpty(pPDC)) {
//* Buffer and next buffer can be initialized
AT91F_PDC_SetTx(pPDC, pBuffer, szBuffer);
AT91F_PDC_SetNextTx(pPDC, pNextBuffer, szNextBuffer);
return 2;
}
else if (AT91F_PDC_IsNextTxEmpty(pPDC)) {
//* Only one buffer can be initialized
AT91F_PDC_SetNextTx(pPDC, pBuffer, szBuffer);
return 1;
}
else {
//* All buffer are in use...
return 0;
}
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PDC_ReceiveFrame
//* \brief Close PDC: disable TX and RX reset transfer descriptors
//*----------------------------------------------------------------------------
unsigned int AT91F_PDC_ReceiveFrame (
AT91PS_PDC pPDC,
unsigned char *pBuffer,
unsigned int szBuffer,
unsigned char *pNextBuffer,
unsigned int szNextBuffer )
{
if (AT91F_PDC_IsRxEmpty(pPDC)) {
//* Buffer and next buffer can be initialized
AT91F_PDC_SetRx(pPDC, pBuffer, szBuffer);
AT91F_PDC_SetNextRx(pPDC, pNextBuffer, szNextBuffer);
return 2;
}
else if (AT91F_PDC_IsNextRxEmpty(pPDC)) {
//* Only one buffer can be initialized
AT91F_PDC_SetNextRx(pPDC, pBuffer, szBuffer);
return 1;
}
else {
//* All buffer are in use...
return 0;
}
}
//*------------------------------------------------------------------------------
//* \fn AT91F_PMC_GetMasterClock
//* \brief Return master clock in Hz which correponds to processor clock for ARM7
//*------------------------------------------------------------------------------
unsigned int AT91F_PMC_GetMasterClock (
AT91PS_PMC pPMC, // \arg pointer to PMC controller
AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
unsigned int slowClock) // \arg slowClock in Hz
{
unsigned int reg = pPMC->PMC_MCKR;
unsigned int prescaler = (1 << ((reg & AT91C_PMC_PRES) >> 2));
unsigned int pllDivider, pllMultiplier;
switch (reg & AT91C_PMC_CSS) {
case AT91C_PMC_CSS_SLOW_CLK: // Slow clock selected
return slowClock / prescaler;
case AT91C_PMC_CSS_MAIN_CLK: // Main clock is selected
return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / prescaler;
case AT91C_PMC_CSS_PLL_CLK: // PLLB clock is selected
reg = pCKGR->CKGR_PLLR;
pllDivider = (reg & AT91C_CKGR_DIV);
pllMultiplier = ((reg & AT91C_CKGR_MUL) >> 16) + 1;
return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / pllDivider * pllMultiplier / prescaler;
}
return 0;
}
//*--------------------------------------------------------------------------------------
//* \fn AT91F_RTT_ReadValue()
//* \brief Read the RTT value
//*--------------------------------------------------------------------------------------
unsigned int AT91F_RTTReadValue(AT91PS_RTTC pRTTC)
{
register volatile unsigned int val1,val2;
do
{
val1 = pRTTC->RTTC_RTVR;
val2 = pRTTC->RTTC_RTVR;
}
while(val1 != val2);
return(val1);
}
//*----------------------------------------------------------------------------
//* \fn AT91F_SPI_Close
//* \brief Close SPI: disable IT disable transfert, close PDC
//*----------------------------------------------------------------------------
void AT91F_SPI_Close(AT91PS_SPI pSPI) // \arg pointer to a SPI controller
{
//* Reset all the Chip Select register
pSPI->SPI_CSR[0] = 0 ;
pSPI->SPI_CSR[1] = 0 ;
pSPI->SPI_CSR[2] = 0 ;
pSPI->SPI_CSR[3] = 0 ;
//* Reset the SPI mode
pSPI->SPI_MR = 0 ;
//* Disable all interrupts
pSPI->SPI_IDR = 0xFFFFFFFF ;
//* Abort the Peripheral Data Transfers
AT91F_PDC_Close((AT91PS_PDC) &(pSPI->SPI_RPR));
//* Disable receiver and transmitter and stop any activity immediately
pSPI->SPI_CR = AT91C_SPI_SPIDIS;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_ADC_CfgTimings
//* \brief Configure the different necessary timings of the ADC controller
//*----------------------------------------------------------------------------
void AT91F_ADC_CfgTimings (
AT91PS_ADC pADC, // pointer to a ADC controller
unsigned int mck_clock, // in MHz
unsigned int adc_clock, // in MHz
unsigned int startup_time, // in us
unsigned int sample_and_hold_time) // in ns
{
unsigned int prescal,startup,shtim;
prescal = mck_clock/(2*adc_clock) - 1;
startup = adc_clock*startup_time/8 - 1;
shtim = adc_clock*sample_and_hold_time/1000 - 1;
//* Write to the MR register
pADC->ADC_MR = ( (prescal<<8) & AT91C_ADC_PRESCAL) | ( (startup<<16) & AT91C_ADC_STARTUP) | ( (shtim<<24) & AT91C_ADC_SHTIM);
}
//*----------------------------------------------------------------------------
//* \fn AT91F_SSC_SetBaudrate
//* \brief Set the baudrate according to the CPU clock
//*----------------------------------------------------------------------------
void AT91F_SSC_SetBaudrate (
AT91PS_SSC pSSC, // \arg pointer to a SSC controller
unsigned int mainClock, // \arg peripheral clock
unsigned int speed) // \arg SSC baudrate
{
unsigned int baud_value;
//* Define the baud rate divisor register
if (speed == 0)
baud_value = 0;
else
{
baud_value = (unsigned int) (mainClock * 10)/(2*speed);
if ((baud_value % 10) >= 5)
baud_value = (baud_value / 10) + 1;
else
baud_value /= 10;
}
pSSC->SSC_CMR = baud_value;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_SSC_Configure
//* \brief Configure SSC
//*----------------------------------------------------------------------------
void AT91F_SSC_Configure (
AT91PS_SSC pSSC, // \arg pointer to a SSC controller
unsigned int syst_clock, // \arg System Clock Frequency
unsigned int baud_rate, // \arg Expected Baud Rate Frequency
unsigned int clock_rx, // \arg Receiver Clock Parameters
unsigned int mode_rx, // \arg mode Register to be programmed
unsigned int clock_tx, // \arg Transmitter Clock Parameters
unsigned int mode_tx) // \arg mode Register to be programmed
{
//* Disable interrupts
pSSC->SSC_IDR = (unsigned int) -1;
//* Reset receiver and transmitter
pSSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_RXDIS | AT91C_SSC_TXDIS ;
//* Define the Clock Mode Register
AT91F_SSC_SetBaudrate(pSSC, syst_clock, baud_rate);
//* Write the Receive Clock Mode Register
pSSC->SSC_RCMR = clock_rx;
//* Write the Transmit Clock Mode Register
pSSC->SSC_TCMR = clock_tx;
//* Write the Receive Frame Mode Register
pSSC->SSC_RFMR = mode_rx;
//* Write the Transmit Frame Mode Register
pSSC->SSC_TFMR = mode_tx;
//* Clear Transmit and Receive Counters
AT91F_PDC_Open((AT91PS_PDC) &(pSSC->SSC_RPR));
}
//*----------------------------------------------------------------------------
//* \fn AT91F_US_Configure
//* \brief Configure USART
//*----------------------------------------------------------------------------
void AT91F_US_Configure (
AT91PS_USART pUSART, // \arg pointer to a USART controller
unsigned int mainClock, // \arg peripheral clock
unsigned int mode , // \arg mode Register to be programmed
unsigned int baudRate , // \arg baudrate to be programmed
unsigned int timeguard ) // \arg timeguard to be programmed
{
//* Disable interrupts
pUSART->US_IDR = (unsigned int) -1;
//* Reset receiver and transmitter
pUSART->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS ;
//* Define the baud rate divisor register
AT91F_US_SetBaudrate(pUSART, mainClock, baudRate);
//* Write the Timeguard Register
AT91F_US_SetTimeguard(pUSART, timeguard);
//* Clear Transmit and Receive Counters
AT91F_PDC_Open((AT91PS_PDC) &(pUSART->US_RPR));
//* Define the USART mode
pUSART->US_MR = mode ;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_US_Close
//* \brief Close USART: disable IT disable receiver and transmitter, close PDC
//*----------------------------------------------------------------------------
void AT91F_US_Close(AT91PS_USART pUSART) // \arg pointer to a USART controller
{
//* Reset the baud rate divisor register
pUSART->US_BRGR = 0 ;
//* Reset the USART mode
pUSART->US_MR = 0 ;
//* Reset the Timeguard Register
pUSART->US_TTGR = 0;
//* Disable all interrupts
pUSART->US_IDR = 0xFFFFFFFF ;
//* Abort the Peripheral Data Transfers
AT91F_PDC_Close((AT91PS_PDC) &(pUSART->US_RPR));
//* Disable receiver and transmitter and stop any activity immediately
pUSART->US_CR = AT91C_US_TXDIS | AT91C_US_RXDIS | AT91C_US_RSTTX | AT91C_US_RSTRX ;
}

File diff suppressed because it is too large Load Diff

59
firmware/lib/memcpy.S Normal file
View File

@ -0,0 +1,59 @@
/*
* linux/arch/arm/lib/memcpy.S
*
* Author: Nicolas Pitre
* Created: Sep 28, 2005
* Copyright: MontaVista Software, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
.macro ldr1w ptr reg abort
ldr \reg, [\ptr], #4
.endm
.macro ldr4w ptr reg1 reg2 reg3 reg4 abort
ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4}
.endm
.macro ldr8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
ldmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
.endm
.macro ldr1b ptr reg cond=al abort
ldr\cond\()b \reg, [\ptr], #1
.endm
.macro str1w ptr reg abort
str \reg, [\ptr], #4
.endm
.macro str8w ptr reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 abort
stmia \ptr!, {\reg1, \reg2, \reg3, \reg4, \reg5, \reg6, \reg7, \reg8}
.endm
.macro str1b ptr reg cond=al abort
str\cond\()b \reg, [\ptr], #1
.endm
.macro enter reg1 reg2
stmdb sp!, {r0, \reg1, \reg2}
.endm
.macro exit reg1 reg2
ldmfd sp!, {r0, \reg1, \reg2}
.endm
.text
/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
ENTRY(memcpy)
#include "copy_template.S"

80
firmware/lib/memset.S Normal file
View File

@ -0,0 +1,80 @@
/*
* linux/arch/arm/lib/memset.S
*
* Copyright (C) 1995-2000 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* ASM optimised string functions
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
.text
.align 5
.word 0
1: subs r2, r2, #4 @ 1 do we have enough
blt 5f @ 1 bytes to align with?
cmp r3, #2 @ 1
strltb r1, [r0], #1 @ 1
strleb r1, [r0], #1 @ 1
strb r1, [r0], #1 @ 1
add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
/*
* The pointer is now aligned and the length is adjusted. Try doing the
* memzero again.
*/
ENTRY(memset)
ands r3, r0, #3 @ 1 unaligned?
bne 1b @ 1
/*
* we know that the pointer in r0 is aligned to a word boundary.
*/
orr r1, r1, r1, lsl #8
orr r1, r1, r1, lsl #16
mov r3, r1
cmp r2, #16
blt 4f
/*
* We need an extra register for this loop - save the return address and
* use the LR
*/
str lr, [sp, #-4]!
mov ip, r1
mov lr, r1
2: subs r2, r2, #64
stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time.
stmgeia r0!, {r1, r3, ip, lr}
stmgeia r0!, {r1, r3, ip, lr}
stmgeia r0!, {r1, r3, ip, lr}
bgt 2b
LOADREGS(eqfd, sp!, {pc}) @ Now <64 bytes to go.
/*
* No need to correct the count; we're only testing bits from now on
*/
tst r2, #32
stmneia r0!, {r1, r3, ip, lr}
stmneia r0!, {r1, r3, ip, lr}
tst r2, #16
stmneia r0!, {r1, r3, ip, lr}
ldr lr, [sp], #4
4: tst r2, #8
stmneia r0!, {r1, r3}
tst r2, #4
strne r1, [r0], #4
/*
* When we get here, we've got less than 4 bytes to zero. We
* may have an unaligned pointer as well.
*/
5: tst r2, #2
strneb r1, [r0], #1
strneb r1, [r0], #1
tst r2, #1
strneb r1, [r0], #1
RETINSTR(mov,pc,lr)

22
firmware/lib/setbit.S Normal file
View File

@ -0,0 +1,22 @@
/*
* linux/arch/arm/lib/setbit.S
*
* Copyright (C) 1995-1996 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
#include "bitops.h"
.text
/*
* Purpose : Function to set a bit
* Prototype: int set_bit(int bit, void *addr)
*/
ENTRY(_set_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_set_bit_le)
bitop orr

170
firmware/lib/setbit.lst Normal file
View File

@ -0,0 +1,170 @@
1 # 1 "lib/setbit.S"
1 /*
0
0
2 * linux/arch/arm/lib/setbit.S
3 *
4 * Copyright (C) 1995-1996 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
11 #include <asm/assembler.h>
1 /*
2 * linux/include/asm-arm/assembler.h
3 *
4 * Copyright (C) 1996-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file contains arm architecture specific defines
11 * for the different processors.
12 *
13 * Do not include any C declarations in this file - it is included by
14 * assembler source.
15 */
16 #ifndef __ASSEMBLY__
17 #error "Only include this from assembly code"
18 #endif
19
20 #include <asm/ptrace.h>
1 /*
21
22 #define pull lsl
23 #define push lsr
24 #define get_byte_0 lsr #24
25 #define get_byte_1 lsr #16
26 #define get_byte_2 lsr #8
27 #define get_byte_3 lsl #0
28 #define put_byte_0 lsl #24
29 #define put_byte_1 lsl #16
30 #define put_byte_2 lsl #8
31 #define put_byte_3 lsl #0
32
33 #define PLD(code...)
34
35 #define MODE_USR USR_MODE
36 #define MODE_FIQ FIQ_MODE
37 #define MODE_IRQ IRQ_MODE
38 #define MODE_SVC SVC_MODE
39
40 #define DEFAULT_FIQ MODE_FIQ
41
42 /*
43 * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
44 */
45 #ifdef __STDC__
46 #define LOADREGS(cond, base, reglist...)\
47 ldm##cond base,reglist
48 #else
49 #define LOADREGS(cond, base, reglist...)\
50 ldm/**/cond base,reglist
51 #endif
52
53 /*
54 * Build a return instruction for this processor type.
55 */
56 #define RETINSTR(instr, regs...)\
57 instr regs
58
59 /*
60 * Enable and disable interrupts
61 */
62 .macro disable_irq
63 msr cpsr_c, #PSR_I_BIT | SVC_MODE
64 .endm
65
66 .macro enable_irq
67 msr cpsr_c, #SVC_MODE
68 .endm
69
70 /*
71 * Save the current IRQ state and disable IRQs. Note that this macro
72 * assumes FIQs are enabled, and that the processor is in SVC mode.
73 */
74 .macro save_and_disable_irqs, oldcpsr
75 mrs \oldcpsr, cpsr
76 disable_irq
77 .endm
78
79 /*
80 * Restore interrupt state previously stored in a register. We don't
81 * guarantee that this will preserve the flags.
82 */
83 .macro restore_irqs, oldcpsr
84 msr cpsr_c, \oldcpsr
85 .endm
86
87 /*
88 * These two are used to save LR/restore PC over a user-based access.
89 * The old 26-bit architecture requires that we do. On 32-bit
90 * architecture, we can safely ignore this requirement.
91 */
92 .macro save_lr
93 .endm
94
95 .macro restore_pc
96 mov pc, lr
97 .endm
98 ...
12 #include "bitops.h"
1 .macro bitop, instr
2 and r2, r0, #7
3 mov r3, #1
4 mov r3, r3, lsl r2
5 save_and_disable_irqs ip
6 ldrb r2, [r1, r0, lsr #3]
7 \instr r2, r2, r3
8 strb r2, [r1, r0, lsr #3]
9 restore_irqs ip
10 mov pc, lr
11 .endm
12
13 /**
14 * testop - implement a test_and_xxx_bit operation.
15 * @instr: operational instruction
16 * @store: store instruction
17 *
18 * Note: we can trivially conditionalise the store instruction
19 * to avoid dirting the data cache.
20 */
21 .macro testop, instr, store
22 add r1, r1, r0, lsr #3
23 and r3, r0, #7
24 mov r0, #1
25 save_and_disable_irqs ip
26 ldrb r2, [r1]
27 tst r2, r0, lsl r3
28 \instr r2, r2, r0, lsl r3
29 \store r2, [r1]
30 restore_irqs ip
31 moveq r0, #0
32 mov pc, lr
33 .endm
34 ...
13 .text
14
15 /*
16 * Purpose : Function to set a bit
17 * Prototype: int set_bit(int bit, void *addr)
18 */
19 ENTRY(_set_bit_be)
20 0000 180020E2 eor r0, r0, #0x18 @ big endian byte ordering
21 ENTRY(_set_bit_le)
22 0004 072000E2 bitop orr
22 0130A0E3
22 1332A0E1
22 00C00FE1
22 93F021E3
DEFINED SYMBOLS
lib/setbit.S:19 .text:00000000 _set_bit_be
lib/setbit.S:19 .text:00000000 $a
lib/setbit.S:21 .text:00000004 _set_bit_le
.debug_aranges:0000000c $d
NO UNDEFINED SYMBOLS

41
firmware/lib/string.c Normal file
View File

@ -0,0 +1,41 @@
/*
* linux/lib/string.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/
/*
* stupid library routines.. The optimized versions should generally be found
* as inline code in <asm-xx/string.h>
*
* These are buggy as well..
*
* * Fri Jun 25 1999, Ingo Oeser <ioe@informatik.tu-chemnitz.de>
* - Added strsep() which will replace strtok() soon (because strsep() is
* reentrant and should be faster). Use only strsep() in new code, please.
*
* * Sat Feb 09 2002, Jason Thomas <jason@topic.com.au>,
* Matthew Hawkins <matt@mh.dropbear.id.au>
* - Kissed strtok() goodbye
*/
#include <sys/types.h>
#include <string.h>
#include <asm/ctype.h>
#ifndef __HAVE_ARCH_STRNLEN
/**
* strnlen - Find the length of a length-limited string
* @s: The string to be sized
* @count: The maximum number of bytes to search
*/
size_t strnlen(const char *s, size_t count)
{
const char *sc;
for (sc = s; count-- && *sc != '\0'; ++sc)
/* nothing */;
return sc - s;
}
#endif

94
firmware/lib/string.lst Normal file
View File

@ -0,0 +1,94 @@
1 .cpu arm7tdmi
2 .fpu softvfp
3 .eabi_attribute 20, 1
4 .eabi_attribute 21, 1
5 .eabi_attribute 23, 3
6 .eabi_attribute 24, 1
7 .eabi_attribute 25, 1
8 .eabi_attribute 26, 1
9 .eabi_attribute 30, 4
10 .eabi_attribute 18, 4
11 .file "string.c"
19 .Ltext0:
20 .cfi_sections .debug_frame
21 .align 2
22 .global strnlen
24 strnlen:
25 .LFB2:
26 .file 1 "lib/string.c"
1:lib/string.c **** /*
2:lib/string.c **** * linux/lib/string.c
3:lib/string.c **** *
4:lib/string.c **** * Copyright (C) 1991, 1992 Linus Torvalds
5:lib/string.c **** */
6:lib/string.c ****
7:lib/string.c **** /*
8:lib/string.c **** * stupid library routines.. The optimized versions should generally be found
9:lib/string.c **** * as inline code in <asm-xx/string.h>
10:lib/string.c **** *
11:lib/string.c **** * These are buggy as well..
12:lib/string.c **** *
13:lib/string.c **** * * Fri Jun 25 1999, Ingo Oeser <ioe@informatik.tu-chemnitz.de>
14:lib/string.c **** * - Added strsep() which will replace strtok() soon (because strsep() is
15:lib/string.c **** * reentrant and should be faster). Use only strsep() in new code, please.
16:lib/string.c **** *
17:lib/string.c **** * * Sat Feb 09 2002, Jason Thomas <jason@topic.com.au>,
18:lib/string.c **** * Matthew Hawkins <matt@mh.dropbear.id.au>
19:lib/string.c **** * - Kissed strtok() goodbye
20:lib/string.c **** */
21:lib/string.c ****
22:lib/string.c **** #include <sys/types.h>
23:lib/string.c **** #include <string.h>
24:lib/string.c **** #include <asm/ctype.h>
25:lib/string.c ****
26:lib/string.c ****
27:lib/string.c **** #ifndef __HAVE_ARCH_STRNLEN
28:lib/string.c **** /**
29:lib/string.c **** * strnlen - Find the length of a length-limited string
30:lib/string.c **** * @s: The string to be sized
31:lib/string.c **** * @count: The maximum number of bytes to search
32:lib/string.c **** */
33:lib/string.c **** size_t strnlen(const char *s, size_t count)
34:lib/string.c **** {
27 .loc 1 34 0
28 .cfi_startproc
29 @ Function supports interworking.
30 @ args = 0, pretend = 0, frame = 0
31 @ frame_needed = 0, uses_anonymous_args = 0
32 @ link register save eliminated.
33 .LVL0:
34 .loc 1 34 0
35 0000 0030A0E1 mov r3, r0
36 .LVL1:
37 .L3:
35:lib/string.c **** const char *sc;
36:lib/string.c ****
37:lib/string.c **** for (sc = s; count-- && *sc != '\0'; ++sc)
38 .loc 1 37 0 discriminator 1
39 0004 011051E2 subs r1, r1, #1
40 0008 0320A0E1 mov r2, r3
41 .LVL2:
42 000c 0200003A bcc .L2
43 .loc 1 37 0 is_stmt 0 discriminator 2
44 0010 01C0D3E4 ldrb ip, [r3], #1 @ zero_extendqisi2
45 .LVL3:
46 0014 00005CE3 cmp ip, #0
47 0018 F9FFFF1A bne .L3
48 .L2:
38:lib/string.c **** /* nothing */;
39:lib/string.c **** return sc - s;
40:lib/string.c **** }
49 .loc 1 40 0 is_stmt 1
50 001c 020060E0 rsb r0, r0, r2
51 .LVL4:
52 0020 1EFF2FE1 bx lr
53 .cfi_endproc
54 .LFE2:
56 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 string.c
C:\Users\netz\AppData\Local\Temp\cc4Ne3c1.s:21 .text:00000000 $a
C:\Users\netz\AppData\Local\Temp\cc4Ne3c1.s:24 .text:00000000 strnlen
.debug_frame:00000010 $d
NO UNDEFINED SYMBOLS

View File

@ -0,0 +1,18 @@
/*
* linux/arch/arm/lib/testchangebit.S
*
* Copyright (C) 1995-1996 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
#include "bitops.h"
.text
ENTRY(_test_and_change_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_test_and_change_bit_le)
testop eor, strb

View File

@ -0,0 +1,166 @@
1 # 1 "lib/testchangebit.S"
1 /*
0
0
2 * linux/arch/arm/lib/testchangebit.S
3 *
4 * Copyright (C) 1995-1996 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
11 #include <asm/assembler.h>
1 /*
2 * linux/include/asm-arm/assembler.h
3 *
4 * Copyright (C) 1996-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file contains arm architecture specific defines
11 * for the different processors.
12 *
13 * Do not include any C declarations in this file - it is included by
14 * assembler source.
15 */
16 #ifndef __ASSEMBLY__
17 #error "Only include this from assembly code"
18 #endif
19
20 #include <asm/ptrace.h>
1 /*
21
22 #define pull lsl
23 #define push lsr
24 #define get_byte_0 lsr #24
25 #define get_byte_1 lsr #16
26 #define get_byte_2 lsr #8
27 #define get_byte_3 lsl #0
28 #define put_byte_0 lsl #24
29 #define put_byte_1 lsl #16
30 #define put_byte_2 lsl #8
31 #define put_byte_3 lsl #0
32
33 #define PLD(code...)
34
35 #define MODE_USR USR_MODE
36 #define MODE_FIQ FIQ_MODE
37 #define MODE_IRQ IRQ_MODE
38 #define MODE_SVC SVC_MODE
39
40 #define DEFAULT_FIQ MODE_FIQ
41
42 /*
43 * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
44 */
45 #ifdef __STDC__
46 #define LOADREGS(cond, base, reglist...)\
47 ldm##cond base,reglist
48 #else
49 #define LOADREGS(cond, base, reglist...)\
50 ldm/**/cond base,reglist
51 #endif
52
53 /*
54 * Build a return instruction for this processor type.
55 */
56 #define RETINSTR(instr, regs...)\
57 instr regs
58
59 /*
60 * Enable and disable interrupts
61 */
62 .macro disable_irq
63 msr cpsr_c, #PSR_I_BIT | SVC_MODE
64 .endm
65
66 .macro enable_irq
67 msr cpsr_c, #SVC_MODE
68 .endm
69
70 /*
71 * Save the current IRQ state and disable IRQs. Note that this macro
72 * assumes FIQs are enabled, and that the processor is in SVC mode.
73 */
74 .macro save_and_disable_irqs, oldcpsr
75 mrs \oldcpsr, cpsr
76 disable_irq
77 .endm
78
79 /*
80 * Restore interrupt state previously stored in a register. We don't
81 * guarantee that this will preserve the flags.
82 */
83 .macro restore_irqs, oldcpsr
84 msr cpsr_c, \oldcpsr
85 .endm
86
87 /*
88 * These two are used to save LR/restore PC over a user-based access.
89 * The old 26-bit architecture requires that we do. On 32-bit
90 * architecture, we can safely ignore this requirement.
91 */
92 .macro save_lr
93 .endm
94
95 .macro restore_pc
96 mov pc, lr
97 .endm
98 ...
12 #include "bitops.h"
1 .macro bitop, instr
2 and r2, r0, #7
3 mov r3, #1
4 mov r3, r3, lsl r2
5 save_and_disable_irqs ip
6 ldrb r2, [r1, r0, lsr #3]
7 \instr r2, r2, r3
8 strb r2, [r1, r0, lsr #3]
9 restore_irqs ip
10 mov pc, lr
11 .endm
12
13 /**
14 * testop - implement a test_and_xxx_bit operation.
15 * @instr: operational instruction
16 * @store: store instruction
17 *
18 * Note: we can trivially conditionalise the store instruction
19 * to avoid dirting the data cache.
20 */
21 .macro testop, instr, store
22 add r1, r1, r0, lsr #3
23 and r3, r0, #7
24 mov r0, #1
25 save_and_disable_irqs ip
26 ldrb r2, [r1]
27 tst r2, r0, lsl r3
28 \instr r2, r2, r0, lsl r3
29 \store r2, [r1]
30 restore_irqs ip
31 moveq r0, #0
32 mov pc, lr
33 .endm
34 ...
13 .text
14
15 ENTRY(_test_and_change_bit_be)
16 0000 180020E2 eor r0, r0, #0x18 @ big endian byte ordering
17 ENTRY(_test_and_change_bit_le)
18 0004 A01181E0 testop eor, strb
18 073000E2
18 0100A0E3
18 00C00FE1
18 93F021E3
DEFINED SYMBOLS
lib/testchangebit.S:15 .text:00000000 _test_and_change_bit_be
lib/testchangebit.S:15 .text:00000000 $a
lib/testchangebit.S:17 .text:00000004 _test_and_change_bit_le
.debug_aranges:0000000c $d
NO UNDEFINED SYMBOLS

View File

@ -0,0 +1,18 @@
/*
* linux/arch/arm/lib/testclearbit.S
*
* Copyright (C) 1995-1996 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
#include "bitops.h"
.text
ENTRY(_test_and_clear_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_test_and_clear_bit_le)
testop bicne, strneb

View File

@ -0,0 +1,166 @@
1 # 1 "lib/testclearbit.S"
1 /*
0
0
2 * linux/arch/arm/lib/testclearbit.S
3 *
4 * Copyright (C) 1995-1996 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
11 #include <asm/assembler.h>
1 /*
2 * linux/include/asm-arm/assembler.h
3 *
4 * Copyright (C) 1996-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file contains arm architecture specific defines
11 * for the different processors.
12 *
13 * Do not include any C declarations in this file - it is included by
14 * assembler source.
15 */
16 #ifndef __ASSEMBLY__
17 #error "Only include this from assembly code"
18 #endif
19
20 #include <asm/ptrace.h>
1 /*
21
22 #define pull lsl
23 #define push lsr
24 #define get_byte_0 lsr #24
25 #define get_byte_1 lsr #16
26 #define get_byte_2 lsr #8
27 #define get_byte_3 lsl #0
28 #define put_byte_0 lsl #24
29 #define put_byte_1 lsl #16
30 #define put_byte_2 lsl #8
31 #define put_byte_3 lsl #0
32
33 #define PLD(code...)
34
35 #define MODE_USR USR_MODE
36 #define MODE_FIQ FIQ_MODE
37 #define MODE_IRQ IRQ_MODE
38 #define MODE_SVC SVC_MODE
39
40 #define DEFAULT_FIQ MODE_FIQ
41
42 /*
43 * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
44 */
45 #ifdef __STDC__
46 #define LOADREGS(cond, base, reglist...)\
47 ldm##cond base,reglist
48 #else
49 #define LOADREGS(cond, base, reglist...)\
50 ldm/**/cond base,reglist
51 #endif
52
53 /*
54 * Build a return instruction for this processor type.
55 */
56 #define RETINSTR(instr, regs...)\
57 instr regs
58
59 /*
60 * Enable and disable interrupts
61 */
62 .macro disable_irq
63 msr cpsr_c, #PSR_I_BIT | SVC_MODE
64 .endm
65
66 .macro enable_irq
67 msr cpsr_c, #SVC_MODE
68 .endm
69
70 /*
71 * Save the current IRQ state and disable IRQs. Note that this macro
72 * assumes FIQs are enabled, and that the processor is in SVC mode.
73 */
74 .macro save_and_disable_irqs, oldcpsr
75 mrs \oldcpsr, cpsr
76 disable_irq
77 .endm
78
79 /*
80 * Restore interrupt state previously stored in a register. We don't
81 * guarantee that this will preserve the flags.
82 */
83 .macro restore_irqs, oldcpsr
84 msr cpsr_c, \oldcpsr
85 .endm
86
87 /*
88 * These two are used to save LR/restore PC over a user-based access.
89 * The old 26-bit architecture requires that we do. On 32-bit
90 * architecture, we can safely ignore this requirement.
91 */
92 .macro save_lr
93 .endm
94
95 .macro restore_pc
96 mov pc, lr
97 .endm
98 ...
12 #include "bitops.h"
1 .macro bitop, instr
2 and r2, r0, #7
3 mov r3, #1
4 mov r3, r3, lsl r2
5 save_and_disable_irqs ip
6 ldrb r2, [r1, r0, lsr #3]
7 \instr r2, r2, r3
8 strb r2, [r1, r0, lsr #3]
9 restore_irqs ip
10 mov pc, lr
11 .endm
12
13 /**
14 * testop - implement a test_and_xxx_bit operation.
15 * @instr: operational instruction
16 * @store: store instruction
17 *
18 * Note: we can trivially conditionalise the store instruction
19 * to avoid dirting the data cache.
20 */
21 .macro testop, instr, store
22 add r1, r1, r0, lsr #3
23 and r3, r0, #7
24 mov r0, #1
25 save_and_disable_irqs ip
26 ldrb r2, [r1]
27 tst r2, r0, lsl r3
28 \instr r2, r2, r0, lsl r3
29 \store r2, [r1]
30 restore_irqs ip
31 moveq r0, #0
32 mov pc, lr
33 .endm
34 ...
13 .text
14
15 ENTRY(_test_and_clear_bit_be)
16 0000 180020E2 eor r0, r0, #0x18 @ big endian byte ordering
17 ENTRY(_test_and_clear_bit_le)
18 0004 A01181E0 testop bicne, strneb
18 073000E2
18 0100A0E3
18 00C00FE1
18 93F021E3
DEFINED SYMBOLS
lib/testclearbit.S:15 .text:00000000 _test_and_clear_bit_be
lib/testclearbit.S:15 .text:00000000 $a
lib/testclearbit.S:17 .text:00000004 _test_and_clear_bit_le
.debug_aranges:0000000c $d
NO UNDEFINED SYMBOLS

18
firmware/lib/testsetbit.S Normal file
View File

@ -0,0 +1,18 @@
/*
* linux/arch/arm/lib/testsetbit.S
*
* Copyright (C) 1995-1996 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <asm/linkage.h>
#include <asm/assembler.h>
#include "bitops.h"
.text
ENTRY(_test_and_set_bit_be)
eor r0, r0, #0x18 @ big endian byte ordering
ENTRY(_test_and_set_bit_le)
testop orreq, streqb

166
firmware/lib/testsetbit.lst Normal file
View File

@ -0,0 +1,166 @@
1 # 1 "lib/testsetbit.S"
1 /*
0
0
2 * linux/arch/arm/lib/testsetbit.S
3 *
4 * Copyright (C) 1995-1996 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10 #include <asm/linkage.h>
1 #ifndef __ASM_LINKAGE_H
11 #include <asm/assembler.h>
1 /*
2 * linux/include/asm-arm/assembler.h
3 *
4 * Copyright (C) 1996-2000 Russell King
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file contains arm architecture specific defines
11 * for the different processors.
12 *
13 * Do not include any C declarations in this file - it is included by
14 * assembler source.
15 */
16 #ifndef __ASSEMBLY__
17 #error "Only include this from assembly code"
18 #endif
19
20 #include <asm/ptrace.h>
1 /*
21
22 #define pull lsl
23 #define push lsr
24 #define get_byte_0 lsr #24
25 #define get_byte_1 lsr #16
26 #define get_byte_2 lsr #8
27 #define get_byte_3 lsl #0
28 #define put_byte_0 lsl #24
29 #define put_byte_1 lsl #16
30 #define put_byte_2 lsl #8
31 #define put_byte_3 lsl #0
32
33 #define PLD(code...)
34
35 #define MODE_USR USR_MODE
36 #define MODE_FIQ FIQ_MODE
37 #define MODE_IRQ IRQ_MODE
38 #define MODE_SVC SVC_MODE
39
40 #define DEFAULT_FIQ MODE_FIQ
41
42 /*
43 * LOADREGS - ldm with PC in register list (eg, ldmfd sp!, {pc})
44 */
45 #ifdef __STDC__
46 #define LOADREGS(cond, base, reglist...)\
47 ldm##cond base,reglist
48 #else
49 #define LOADREGS(cond, base, reglist...)\
50 ldm/**/cond base,reglist
51 #endif
52
53 /*
54 * Build a return instruction for this processor type.
55 */
56 #define RETINSTR(instr, regs...)\
57 instr regs
58
59 /*
60 * Enable and disable interrupts
61 */
62 .macro disable_irq
63 msr cpsr_c, #PSR_I_BIT | SVC_MODE
64 .endm
65
66 .macro enable_irq
67 msr cpsr_c, #SVC_MODE
68 .endm
69
70 /*
71 * Save the current IRQ state and disable IRQs. Note that this macro
72 * assumes FIQs are enabled, and that the processor is in SVC mode.
73 */
74 .macro save_and_disable_irqs, oldcpsr
75 mrs \oldcpsr, cpsr
76 disable_irq
77 .endm
78
79 /*
80 * Restore interrupt state previously stored in a register. We don't
81 * guarantee that this will preserve the flags.
82 */
83 .macro restore_irqs, oldcpsr
84 msr cpsr_c, \oldcpsr
85 .endm
86
87 /*
88 * These two are used to save LR/restore PC over a user-based access.
89 * The old 26-bit architecture requires that we do. On 32-bit
90 * architecture, we can safely ignore this requirement.
91 */
92 .macro save_lr
93 .endm
94
95 .macro restore_pc
96 mov pc, lr
97 .endm
98 ...
12 #include "bitops.h"
1 .macro bitop, instr
2 and r2, r0, #7
3 mov r3, #1
4 mov r3, r3, lsl r2
5 save_and_disable_irqs ip
6 ldrb r2, [r1, r0, lsr #3]
7 \instr r2, r2, r3
8 strb r2, [r1, r0, lsr #3]
9 restore_irqs ip
10 mov pc, lr
11 .endm
12
13 /**
14 * testop - implement a test_and_xxx_bit operation.
15 * @instr: operational instruction
16 * @store: store instruction
17 *
18 * Note: we can trivially conditionalise the store instruction
19 * to avoid dirting the data cache.
20 */
21 .macro testop, instr, store
22 add r1, r1, r0, lsr #3
23 and r3, r0, #7
24 mov r0, #1
25 save_and_disable_irqs ip
26 ldrb r2, [r1]
27 tst r2, r0, lsl r3
28 \instr r2, r2, r0, lsl r3
29 \store r2, [r1]
30 restore_irqs ip
31 moveq r0, #0
32 mov pc, lr
33 .endm
34 ...
13 .text
14
15 ENTRY(_test_and_set_bit_be)
16 0000 180020E2 eor r0, r0, #0x18 @ big endian byte ordering
17 ENTRY(_test_and_set_bit_le)
18 0004 A01181E0 testop orreq, streqb
18 073000E2
18 0100A0E3
18 00C00FE1
18 93F021E3
DEFINED SYMBOLS
lib/testsetbit.S:15 .text:00000000 _test_and_set_bit_be
lib/testsetbit.S:15 .text:00000000 $a
lib/testsetbit.S:17 .text:00000004 _test_and_set_bit_le
.debug_aranges:0000000c $d
NO UNDEFINED SYMBOLS

831
firmware/lib/vsprintf.c Normal file
View File

@ -0,0 +1,831 @@
/*
* linux/lib/vsprintf.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/
/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
/*
* Wirzenius wrote this portably, Torvalds fucked it up :-)
*/
/*
* Fri Jul 13 2001 Crutcher Dunnavant <crutcher+kernel@datastacks.com>
* - changed to provide snprintf and vsnprintf functions
* So Feb 1 16:51:32 CET 2004 Juergen Quade <quade@hsnr.de>
* - scnprintf and vscnprintf
*/
#include <stdarg.h>
#include <sys/types.h>
#include <string.h>
#include <asm/ctype.h>
#include <asm/div64.h>
#include <limits.h>
/**
* simple_strtoul - convert a string to an unsigned long
* @cp: The start of the string
* @endp: A pointer to the end of the parsed string will be placed here
* @base: The number base to use
*/
unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base)
{
unsigned long result = 0,value;
if (!base) {
base = 10;
if (*cp == '0') {
base = 8;
cp++;
if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
cp++;
base = 16;
}
}
} else if (base == 16) {
if (cp[0] == '0' && toupper(cp[1]) == 'X')
cp += 2;
}
while (isxdigit(*cp) &&
(value = isdigit(*cp) ? *cp-'0' : toupper(*cp)-'A'+10) < base) {
result = result*base + value;
cp++;
}
if (endp)
*endp = (char *)cp;
return result;
}
/**
* simple_strtol - convert a string to a signed long
* @cp: The start of the string
* @endp: A pointer to the end of the parsed string will be placed here
* @base: The number base to use
*/
long simple_strtol(const char *cp,char **endp,unsigned int base)
{
if(*cp=='-')
return -simple_strtoul(cp+1,endp,base);
return simple_strtoul(cp,endp,base);
}
/**
* simple_strtoull - convert a string to an unsigned long long
* @cp: The start of the string
* @endp: A pointer to the end of the parsed string will be placed here
* @base: The number base to use
*/
unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int base)
{
unsigned long long result = 0,value;
if (!base) {
base = 10;
if (*cp == '0') {
base = 8;
cp++;
if ((toupper(*cp) == 'X') && isxdigit(cp[1])) {
cp++;
base = 16;
}
}
} else if (base == 16) {
if (cp[0] == '0' && toupper(cp[1]) == 'X')
cp += 2;
}
while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
? toupper(*cp) : *cp)-'A'+10) < base) {
result = result*base + value;
cp++;
}
if (endp)
*endp = (char *)cp;
return result;
}
/**
* simple_strtoll - convert a string to a signed long long
* @cp: The start of the string
* @endp: A pointer to the end of the parsed string will be placed here
* @base: The number base to use
*/
long long simple_strtoll(const char *cp,char **endp,unsigned int base)
{
if(*cp=='-')
return -simple_strtoull(cp+1,endp,base);
return simple_strtoull(cp,endp,base);
}
static int skip_atoi(const char **s)
{
int i=0;
while (isdigit(**s))
i = i*10 + *((*s)++) - '0';
return i;
}
#define ZEROPAD 1 /* pad with zero */
#define SIGN 2 /* unsigned/signed long */
#define PLUS 4 /* show plus */
#define SPACE 8 /* space if plus */
#define LEFT 16 /* left justified */
#define SPECIAL 32 /* 0x */
#define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */
static char * number(char * buf, char * end, unsigned long long num, int base, int size, int precision, int type)
{
char c,sign,tmp[66];
const char *digits;
static const char small_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
static const char large_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i;
digits = (type & LARGE) ? large_digits : small_digits;
if (type & LEFT)
type &= ~ZEROPAD;
if (base < 2 || base > 36)
return NULL;
c = (type & ZEROPAD) ? '0' : ' ';
sign = 0;
if (type & SIGN) {
if ((signed long long) num < 0) {
sign = '-';
num = - (signed long long) num;
size--;
} else if (type & PLUS) {
sign = '+';
size--;
} else if (type & SPACE) {
sign = ' ';
size--;
}
}
if (type & SPECIAL) {
if (base == 16)
size -= 2;
else if (base == 8)
size--;
}
i = 0;
if (num == 0)
tmp[i++]='0';
else while (num != 0)
tmp[i++] = digits[do_div(num,base)];
if (i > precision)
precision = i;
size -= precision;
if (!(type&(ZEROPAD+LEFT))) {
while(size-->0) {
if (buf <= end)
*buf = ' ';
++buf;
}
}
if (sign) {
if (buf <= end)
*buf = sign;
++buf;
}
if (type & SPECIAL) {
if (base==8) {
if (buf <= end)
*buf = '0';
++buf;
} else if (base==16) {
if (buf <= end)
*buf = '0';
++buf;
if (buf <= end)
*buf = digits[33];
++buf;
}
}
if (!(type & LEFT)) {
while (size-- > 0) {
if (buf <= end)
*buf = c;
++buf;
}
}
while (i < precision--) {
if (buf <= end)
*buf = '0';
++buf;
}
while (i-- > 0) {
if (buf <= end)
*buf = tmp[i];
++buf;
}
while (size-- > 0) {
if (buf <= end)
*buf = ' ';
++buf;
}
return buf;
}
/**
* vsnprintf - Format a string and place it in a buffer
* @buf: The buffer to place the result into
* @size: The size of the buffer, including the trailing null space
* @fmt: The format string to use
* @args: Arguments for the format string
*
* The return value is the number of characters which would
* be generated for the given input, excluding the trailing
* '\0', as per ISO C99. If you want to have the exact
* number of characters written into @buf as return value
* (not including the trailing '\0'), use vscnprintf. If the
* return is greater than or equal to @size, the resulting
* string is truncated.
*
* Call this function if you are already dealing with a va_list.
* You probably want snprintf instead.
*/
int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
{
int len;
unsigned long long num;
int i, base;
char *str, *end, c;
const char *s;
int flags; /* flags to number() */
int field_width; /* width of output field */
int precision; /* min. # of digits for integers; max
number of chars for from string */
int qualifier; /* 'h', 'l', or 'L' for integer fields */
/* 'z' support added 23/7/1999 S.H. */
/* 'z' changed to 'Z' --davidm 1/25/99 */
/* 't' added for ptrdiff_t */
/* Reject out-of-range values early */
if ((int) size < 0) {
return 0;
}
str = buf;
end = buf + size - 1;
if (end < buf - 1) {
end = ((void *) -1);
size = end - buf + 1;
}
for (; *fmt ; ++fmt) {
if (*fmt != '%') {
if (str <= end)
*str = *fmt;
++str;
continue;
}
/* process flags */
flags = 0;
repeat:
++fmt; /* this also skips first '%' */
switch (*fmt) {
case '-': flags |= LEFT; goto repeat;
case '+': flags |= PLUS; goto repeat;
case ' ': flags |= SPACE; goto repeat;
case '#': flags |= SPECIAL; goto repeat;
case '0': flags |= ZEROPAD; goto repeat;
}
/* get field width */
field_width = -1;
if (isdigit(*fmt))
field_width = skip_atoi(&fmt);
else if (*fmt == '*') {
++fmt;
/* it's the next argument */
field_width = va_arg(args, int);
if (field_width < 0) {
field_width = -field_width;
flags |= LEFT;
}
}
/* get the precision */
precision = -1;
if (*fmt == '.') {
++fmt;
if (isdigit(*fmt))
precision = skip_atoi(&fmt);
else if (*fmt == '*') {
++fmt;
/* it's the next argument */
precision = va_arg(args, int);
}
if (precision < 0)
precision = 0;
}
/* get the conversion qualifier */
qualifier = -1;
if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
*fmt =='Z' || *fmt == 'z' || *fmt == 't') {
qualifier = *fmt;
++fmt;
if (qualifier == 'l' && *fmt == 'l') {
qualifier = 'L';
++fmt;
}
}
/* default base */
base = 10;
switch (*fmt) {
case 'c':
if (!(flags & LEFT)) {
while (--field_width > 0) {
if (str <= end)
*str = ' ';
++str;
}
}
c = (unsigned char) va_arg(args, int);
if (str <= end)
*str = c;
++str;
while (--field_width > 0) {
if (str <= end)
*str = ' ';
++str;
}
continue;
case 's':
s = va_arg(args, char *);
len = strnlen(s, precision);
if (!(flags & LEFT)) {
while (len < field_width--) {
if (str <= end)
*str = ' ';
++str;
}
}
for (i = 0; i < len; ++i) {
if (str <= end)
*str = *s;
++str; ++s;
}
while (len < field_width--) {
if (str <= end)
*str = ' ';
++str;
}
continue;
case 'p':
if (field_width == -1) {
field_width = 2*sizeof(void *);
flags |= ZEROPAD;
}
str = number(str, end,
(unsigned long) va_arg(args, void *),
16, field_width, precision, flags);
continue;
case 'n':
/* FIXME:
* What does C99 say about the overflow case here? */
if (qualifier == 'l') {
long * ip = va_arg(args, long *);
*ip = (str - buf);
} else if (qualifier == 'Z' || qualifier == 'z') {
size_t * ip = va_arg(args, size_t *);
*ip = (str - buf);
} else {
int * ip = va_arg(args, int *);
*ip = (str - buf);
}
continue;
case '%':
if (str <= end)
*str = '%';
++str;
continue;
/* integer number formats - set up the flags and "break" */
case 'o':
base = 8;
break;
case 'X':
flags |= LARGE;
case 'x':
base = 16;
break;
case 'd':
case 'i':
flags |= SIGN;
case 'u':
break;
default:
if (str <= end)
*str = '%';
++str;
if (*fmt) {
if (str <= end)
*str = *fmt;
++str;
} else {
--fmt;
}
continue;
}
if (qualifier == 'L')
num = va_arg(args, long long);
else if (qualifier == 'l') {
num = va_arg(args, unsigned long);
if (flags & SIGN)
num = (signed long) num;
} else if (qualifier == 'Z' || qualifier == 'z') {
num = va_arg(args, size_t);
} else if (qualifier == 't') {
num = va_arg(args, ptrdiff_t);
} else if (qualifier == 'h') {
num = (unsigned short) va_arg(args, int);
if (flags & SIGN)
num = (signed short) num;
} else {
num = va_arg(args, unsigned int);
if (flags & SIGN)
num = (signed int) num;
}
str = number(str, end, num, base,
field_width, precision, flags);
}
if (str <= end)
*str = '\0';
else if (size > 0)
/* don't write out a null byte if the buf size is zero */
*end = '\0';
/* the trailing null byte doesn't count towards the total
* ++str;
*/
return str-buf;
}
/**
* vscnprintf - Format a string and place it in a buffer
* @buf: The buffer to place the result into
* @size: The size of the buffer, including the trailing null space
* @fmt: The format string to use
* @args: Arguments for the format string
*
* The return value is the number of characters which have been written into
* the @buf not including the trailing '\0'. If @size is <= 0 the function
* returns 0.
*
* Call this function if you are already dealing with a va_list.
* You probably want scnprintf instead.
*/
int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
{
unsigned int i;
i=vsnprintf(buf,size,fmt,args);
return (i >= size) ? (size - 1) : i;
}
/**
* snprintf - Format a string and place it in a buffer
* @buf: The buffer to place the result into
* @size: The size of the buffer, including the trailing null space
* @fmt: The format string to use
* @...: Arguments for the format string
*
* The return value is the number of characters which would be
* generated for the given input, excluding the trailing null,
* as per ISO C99. If the return is greater than or equal to
* @size, the resulting string is truncated.
*/
int snprintf(char * buf, size_t size, const char *fmt, ...)
{
va_list args;
int i;
va_start(args, fmt);
i=vsnprintf(buf,size,fmt,args);
va_end(args);
return i;
}
/**
* scnprintf - Format a string and place it in a buffer
* @buf: The buffer to place the result into
* @size: The size of the buffer, including the trailing null space
* @fmt: The format string to use
* @...: Arguments for the format string
*
* The return value is the number of characters written into @buf not including
* the trailing '\0'. If @size is <= 0 the function returns 0. If the return is
* greater than or equal to @size, the resulting string is truncated.
*/
int scnprintf(char * buf, size_t size, const char *fmt, ...)
{
va_list args;
unsigned int i;
va_start(args, fmt);
i = vsnprintf(buf, size, fmt, args);
va_end(args);
return (i >= size) ? (size - 1) : i;
}
/**
* vsprintf - Format a string and place it in a buffer
* @buf: The buffer to place the result into
* @fmt: The format string to use
* @args: Arguments for the format string
*
* The function returns the number of characters written
* into @buf. Use vsnprintf or vscnprintf in order to avoid
* buffer overflows.
*
* Call this function if you are already dealing with a va_list.
* You probably want sprintf instead.
*/
int vsprintf(char *buf, const char *fmt, va_list args)
{
return vsnprintf(buf, INT_MAX, fmt, args);
}
/**
* sprintf - Format a string and place it in a buffer
* @buf: The buffer to place the result into
* @fmt: The format string to use
* @...: Arguments for the format string
*
* The function returns the number of characters written
* into @buf. Use snprintf or scnprintf in order to avoid
* buffer overflows.
*/
int sprintf(char * buf, const char *fmt, ...)
{
va_list args;
int i;
va_start(args, fmt);
i=vsnprintf(buf, INT_MAX, fmt, args);
va_end(args);
return i;
}
/**
* vsscanf - Unformat a buffer into a list of arguments
* @buf: input buffer
* @fmt: format of buffer
* @args: arguments
*/
int vsscanf(const char * buf, const char * fmt, va_list args)
{
const char *str = buf;
char *next;
char digit;
int num = 0;
int qualifier;
int base;
int field_width;
int is_sign = 0;
while(*fmt && *str) {
/* skip any white space in format */
/* white space in format matchs any amount of
* white space, including none, in the input.
*/
if (isspace(*fmt)) {
while (isspace(*fmt))
++fmt;
while (isspace(*str))
++str;
}
/* anything that is not a conversion must match exactly */
if (*fmt != '%' && *fmt) {
if (*fmt++ != *str++)
break;
continue;
}
if (!*fmt)
break;
++fmt;
/* skip this conversion.
* advance both strings to next white space
*/
if (*fmt == '*') {
while (!isspace(*fmt) && *fmt)
fmt++;
while (!isspace(*str) && *str)
str++;
continue;
}
/* get field width */
field_width = -1;
if (isdigit(*fmt))
field_width = skip_atoi(&fmt);
/* get conversion qualifier */
qualifier = -1;
if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' ||
*fmt == 'Z' || *fmt == 'z') {
qualifier = *fmt++;
if (qualifier == *fmt) {
if (qualifier == 'h') {
qualifier = 'H';
fmt++;
} else if (qualifier == 'l') {
qualifier = 'L';
fmt++;
}
}
}
base = 10;
is_sign = 0;
if (!*fmt || !*str)
break;
switch(*fmt++) {
case 'c':
{
char *s = (char *) va_arg(args,char*);
if (field_width == -1)
field_width = 1;
do {
*s++ = *str++;
} while (--field_width > 0 && *str);
num++;
}
continue;
case 's':
{
char *s = (char *) va_arg(args, char *);
if(field_width == -1)
field_width = INT_MAX;
/* first, skip leading white space in buffer */
while (isspace(*str))
str++;
/* now copy until next white space */
while (*str && !isspace(*str) && field_width--) {
*s++ = *str++;
}
*s = '\0';
num++;
}
continue;
case 'n':
/* return number of characters read so far */
{
int *i = (int *)va_arg(args,int*);
*i = str - buf;
}
continue;
case 'o':
base = 8;
break;
case 'x':
case 'X':
base = 16;
break;
case 'i':
base = 0;
case 'd':
is_sign = 1;
case 'u':
break;
case '%':
/* looking for '%' in str */
if (*str++ != '%')
return num;
continue;
default:
/* invalid format; stop here */
return num;
}
/* have some sort of integer conversion.
* first, skip white space in buffer.
*/
while (isspace(*str))
str++;
digit = *str;
if (is_sign && digit == '-')
digit = *(str + 1);
if (!digit
|| (base == 16 && !isxdigit(digit))
|| (base == 10 && !isdigit(digit))
|| (base == 8 && (!isdigit(digit) || digit > '7'))
|| (base == 0 && !isdigit(digit)))
break;
switch(qualifier) {
case 'H': /* that's 'hh' in format */
if (is_sign) {
signed char *s = (signed char *) va_arg(args,signed char *);
*s = (signed char) simple_strtol(str,&next,base);
} else {
unsigned char *s = (unsigned char *) va_arg(args, unsigned char *);
*s = (unsigned char) simple_strtoul(str, &next, base);
}
break;
case 'h':
if (is_sign) {
short *s = (short *) va_arg(args,short *);
*s = (short) simple_strtol(str,&next,base);
} else {
unsigned short *s = (unsigned short *) va_arg(args, unsigned short *);
*s = (unsigned short) simple_strtoul(str, &next, base);
}
break;
case 'l':
if (is_sign) {
long *l = (long *) va_arg(args,long *);
*l = simple_strtol(str,&next,base);
} else {
unsigned long *l = (unsigned long*) va_arg(args,unsigned long*);
*l = simple_strtoul(str,&next,base);
}
break;
case 'L':
if (is_sign) {
long long *l = (long long*) va_arg(args,long long *);
*l = simple_strtoll(str,&next,base);
} else {
unsigned long long *l = (unsigned long long*) va_arg(args,unsigned long long*);
*l = simple_strtoull(str,&next,base);
}
break;
case 'Z':
case 'z':
{
size_t *s = (size_t*) va_arg(args,size_t*);
*s = (size_t) simple_strtoul(str,&next,base);
}
break;
default:
if (is_sign) {
int *i = (int *) va_arg(args, int*);
*i = (int) simple_strtol(str,&next,base);
} else {
unsigned int *i = (unsigned int*) va_arg(args, unsigned int*);
*i = (unsigned int) simple_strtoul(str,&next,base);
}
break;
}
num++;
if (!next)
break;
str = next;
}
return num;
}
/**
* sscanf - Unformat a buffer into a list of arguments
* @buf: input buffer
* @fmt: formatting of buffer
* @...: resulting arguments
*/
int sscanf(const char * buf, const char * fmt, ...)
{
va_list args;
int i;
va_start(args,fmt);
i = vsscanf(buf,fmt,args);
va_end(args);
return i;
}

3471
firmware/lib/vsprintf.lst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,96 @@
/* Memory Definitions */
MEMORY
{
/* reserve 1K config area on top of flash */
FLASH (rx) : ORIGIN = 0x00104000, LENGTH = (0x00020000 - 0x4000 - 0x400)
DATA (rw) : ORIGIN = 0x00200028, LENGTH = (0x00008000 - 0x28)
STACK (rw) : ORIGIN = 0x00208000, LENGTH = 0x00000000
}
/* Section Definitions */
SECTIONS
{
. = 0x00000000;
/* first section is .text which is used for code */
.text 0x00104000: AT ( 0x00000000 ) {
src/start/Cstartup_app.o (.text)
* (.text)
* (.rodata*)
. = ALIGN(4);
} >FLASH
_etext = . ;
PROVIDE (etext = .);
/* 0x00200000 ... */
.data 0x00200028: AT ( ADDR(.text) + SIZEOF(.text) - ADDR(.text) ) {
_data = . ;
* (.fastrun)
* (.data)
. = ALIGN(4);
} >DATA
_edata = . ;
PROVIDE (edata = .);
/* .bss section which is used for uninitialized data */
.bss : {
__bss_start = . ;
__bss_start__ = . ;
*(.bss)
*(COMMON)
} >DATA
. = ALIGN(4);
__bss_end__ = . ;
__bss_end__ = . ;
PROVIDE (main = .);
_end = . ;
. = ALIGN(4);
.int_data : {
*(.internal_ram_top)
} >STACK
PROVIDE (end = .);
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
}

View File

@ -0,0 +1,114 @@
/* Memory Definitions */
MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00004000
DATA (rw) : ORIGIN = 0x00200000, LENGTH = 0x00008000
STACK (rw) : ORIGIN = 0x00208000, LENGTH = 0x00000000
}
/* Section Definitions */
SECTIONS
{
. = 0x00000000;
/* first section is .text which is used for code */
.text 0x00000000: AT ( 0x00000000 ) {
* (.reset)
* (.text)
* (.rodata*)
/* * (.dfu.functab) */ /* for debugging */
. = ALIGN(4);
} >FLASH
_etext = . ;
PROVIDE (etext = .);
.data.shared (0x00200020): AT (LOADADDR(.text) + SIZEOF(.text)) {
_data_shared = . ;
* (.data.shared)
. = ALIGN(4);
} >DATA
_edata_shared = . ;
_data_flash = LOADADDR(.data.shared) + SIZEOF(.data.shared);
/* 0x00200000 ... */
.data (0x00200000 + SIZEOF(.text)): AT
( LOADADDR(.text) + SIZEOF(.text) + SIZEOF(.data.shared)) {
_data = . ;
* (.vectram)
* (.data)
. = ALIGN(4);
} >DATA
_edata = . ;
PROVIDE (edata = .);
/* dfu.functab addresses are valid as long as DFU is in flash, i.e.
* only while application calls those functions. Once executing in
* DFU mode, we are re-located to ram */
.dfu.functab 0x00003fd0: AT ( ADDR(.dfu.functab) - ADDR(.text) ) {
*(.dfu.functab)
. = ALIGN(4096);
} >FLASH
/* .bss section which is used for uninitialized data */
.bss : {
__bss_start = . ;
__bss_start__ = . ;
*(.bss)
*(COMMON)
} >DATA
. = ALIGN(4);
__bss_end__ = . ;
__bss_end__ = . ;
PROVIDE (main = .);
_end = . ;
. = ALIGN(4);
.int_data : {
*(.internal_ram_top)
} >STACK
PROVIDE (end = .);
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
}

View File

@ -0,0 +1,96 @@
/* Memory Definitions */
MEMORY
{
/* reserve 1K config area on top of flash */
FLASH (rx) : ORIGIN = 0x00104000, LENGTH = (0x00040000 - 0x4000 - 0x400)
DATA (rw) : ORIGIN = 0x00200028, LENGTH = (0x00010000 - 0x28)
STACK (rw) : ORIGIN = 0x00210000, LENGTH = 0x00000000
}
/* Section Definitions */
SECTIONS
{
. = 0x00000000;
/* first section is .text which is used for code */
.text 0x00104000: AT ( 0x00000000 ) {
src/start/Cstartup_app.o (.text)
* (.text)
* (.rodata*)
. = ALIGN(4);
} >FLASH
_etext = . ;
PROVIDE (etext = .);
/* 0x00200000 ... */
.data 0x00200028: AT ( ADDR(.text) + SIZEOF(.text) - ADDR(.text) ) {
_data = . ;
* (.fastrun)
* (.data)
. = ALIGN(4);
} >DATA
_edata = . ;
PROVIDE (edata = .);
/* .bss section which is used for uninitialized data */
.bss : {
__bss_start = . ;
__bss_start__ = . ;
*(.bss)
*(COMMON)
} >DATA
. = ALIGN(4);
__bss_end__ = . ;
__bss_end__ = . ;
PROVIDE (main = .);
_end = . ;
. = ALIGN(4);
.int_data : {
*(.internal_ram_top)
} >STACK
PROVIDE (end = .);
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
}

View File

@ -0,0 +1,114 @@
/* Memory Definitions */
MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00004000
DATA (rw) : ORIGIN = 0x00200000, LENGTH = 0x00010000
STACK (rw) : ORIGIN = 0x00210000, LENGTH = 0x00000000
}
/* Section Definitions */
SECTIONS
{
. = 0x00000000;
/* first section is .text which is used for code */
.text 0x00000000: AT ( 0x00000000 ) {
* (.reset)
* (.text)
* (.rodata*)
/* * (.dfu.functab) */ /* for debugging */
. = ALIGN(4);
} >FLASH
_etext = . ;
PROVIDE (etext = .);
.data.shared (0x00200020): AT (LOADADDR(.text) + SIZEOF(.text)) {
_data_shared = . ;
* (.data.shared)
. = ALIGN(4);
} >DATA
_edata_shared = . ;
_data_flash = LOADADDR(.data.shared) + SIZEOF(.data.shared);
/* 0x00200000 ... */
.data (0x00200000 + SIZEOF(.text)): AT ( LOADADDR(.text) + SIZEOF(.text) + SIZEOF(.data.shared)) {
_data = . ;
* (.vectram)
* (.data)
. = ALIGN(4);
} >DATA
_edata = . ;
PROVIDE (edata = .);
/* dfu.functab addresses are valid as long as DFU is in flash, i.e.
* only while application calls those functions. Once executing in
* DFU mode, we are re-located to ram */
.dfu.functab 0x00003fd0: AT ( ADDR(.dfu.functab) - ADDR(.text) ) {
*(.dfu.functab)
. = ALIGN(4096);
} >FLASH
/* .bss section which is used for uninitialized data */
.bss : {
__bss_start = . ;
__bss_start__ = . ;
*(.bss)
*(COMMON)
} >DATA
. = ALIGN(4);
__bss_end__ = . ;
__bss_end__ = . ;
PROVIDE (main = .);
_end = . ;
. = ALIGN(4);
.int_data : {
*(.internal_ram_top)
} >STACK
PROVIDE (end = .);
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
}

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More