diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/avremu/avr.binary.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/avremu/avr.binary.tex | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/avremu/avr.binary.tex b/Master/texmf-dist/tex/latex/avremu/avr.binary.tex new file mode 100644 index 00000000000..36888c5fcf2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/avremu/avr.binary.tex @@ -0,0 +1,94 @@ +%% Copyright (C) 2014 Christian Dietrich <stettberger@dokucode.de> +%% ------------------------------------------------------- +%% +%% This package may be distributed and/or modified under the conditions +%% of the LaTeX Project Public License, either version 1.3c of this +%% license or (at your option) any later version. The latest version of +%% this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008/05/04 or later. +% +% This interacts with the avr-gcc and provides a loader for ihex files +% + +\def\avr@ihex@parse@line:#1#2#3#4#5#6#7#8#9;{% + \avr@hex@tobin{#1#2}{\avr@ihex@bytes}% + \avr@hex@tobin{#3#4#5#6}{\avr@ihex@address}% + \def\avr@ihex@type{#7#8}% + \def\avr@ihex@data{#9}% +} + +\def\avr@ihex@readop#1#2#3{% + \def\avr@ihex@readop@helper##1##2##3##4##5\@nnil{% + \avr@hex@tobin{##3##4##1##2}{#2}% + \xdef#3{##5}% + }% + \edef\@tempa{#1}% + \expandafter\avr@ihex@readop@helper\@tempa\@nnil% +} + + +\newcount\avr@ihex@addr +\newcount\avr@ihex@count +\newcount\avr@ihex@instrs + +\def\avr@ihex@load#1{% + \newread\avr@input% + \avr@ihex@instrs=0\relax% + \openin\avr@input=#1\relax% + \@whilesw\unless\ifeof\avr@input\fi{% + \endlinechar59% 59==; + \readline\avr@input to \avr@line \relax% + \endlinechar=-1% + \expandafter\ifstrequal\expandafter{\avr@line}{;}{}{% + \expandafter\avr@ihex@parse@line \avr@line% + \ifdefstring{\avr@ihex@type}{00}{% + \avr@bin@tocount{\avr@ihex@bytes}{\avr@ihex@count}% + \avr@bin@tocount{\avr@ihex@address}{\avr@ihex@addr}% + \divide\avr@ihex@addr by 2\relax% + \divide\avr@ihex@count by 2\relax% + \loop \ifnum \avr@ihex@count > 0% + \avr@ihex@readop{\avr@ihex@data}{\avr@ihex@opcode}{\avr@ihex@data}% + \avr@code@set{\avr@ihex@opcode}{\the\avr@ihex@addr}% + %\avr@debug{=\avr@ihex@opcode}% + \advance \avr@ihex@count by -1\relax% + \advance \avr@ihex@addr by 1\relax% + \repeat% + }{}% + }% + }% + \closein\avr@input% +} + + +\def\avr@compile#1#2{% + \ifnum\pdfshellescape=1% + \immediate\write18{rm #1.hex #1.elf}% + \immediate\write18{avr-gcc -o #1.elf #1 #2}% + \immediate\write18{avr-objcopy -O ihex -R .eeprom #1.elf #1.hex}% + \IfFileExists{#1.hex}{}{% + \errmessage{avremu: Compilation of Source code failed (#1)}% + }% + \else% + \errmessage{avremu: --shell-escape is disabled; cannot compile}% + \fi% +} + +\newcommand{\avrloadc}[2][-Os -mmcu=atmega8]{% + \avr@init% + \avr@compile{#2}{#1}% + \avr@ihex@load{#2.hex}% +} + +\newcommand{\avrcompile}[2][-Os -mmcu=atmega8]{% + \avr@compile{#2}{#1}% +} + +\newcommand{\avrloadihex}[1]{% + \avr@init% + \avr@ihex@load{#1}% +} + |