From 9a89c6f3201ed4733bc3eaa74718afa54ae09a29 Mon Sep 17 00:00:00 2001 From: ian Date: Sun, 4 Dec 2005 21:53:05 +0000 Subject: [PATCH] improved mergehex detect clashes --- cebpic/intelhex.pdf | Bin 0 -> 29218 bytes cebpic/manypics.make | 26 +++++------ cebpic/merge-hex | 103 +++++++++++++++++++++++++++++++++++++++---- detpic/Makefile | 1 + detpic/pindata.inc | 8 ++-- iwjpictest/Makefile | 2 +- pic.make | 4 +- 7 files changed, 117 insertions(+), 27 deletions(-) create mode 100644 cebpic/intelhex.pdf diff --git a/cebpic/intelhex.pdf b/cebpic/intelhex.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bc67eafd4bc10bd2e46db7fbe9633b9a3fba0e61 GIT binary patch literal 29218 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 brbCGoJcB6a83GMQ1vwEdEbQGKw8#Djqw1Dy literal 0 HcmV?d00001 diff --git a/cebpic/manypics.make b/cebpic/manypics.make index 6ad265a..badc882 100644 --- a/cebpic/manypics.make +++ b/cebpic/manypics.make @@ -1,6 +1,15 @@ default: all +#---------- general definitions etc. ---------- + +TARGETS += $(foreach i, $(PICNOS), idlocs$i.hex noncode$i.hex) +MORSE_INCLUDE ?= common.inc +INCLUDES += ../iwjpictest/insn-aliases.inc morse+auto.inc + +include ../common.make +include ../pic.make + #---------- bizarre macro arrangements for $(PROGRAMS) ---------- define define_prog @@ -11,10 +20,10 @@ TARGETS += $$(foreach i, $$(PICNOS), $(1)+entire$$i.hex) $(1)_CODEHEX= $$(foreach panel, $$(XCODEN_$(1)), $(1)+$$(panel).hex) \ $$(foreach panel, $$(XCODE1_$(1)), $$(panel).hex) -$(1)+code.hex: $(1)+program.hex $$($(1)_CODEHEX) +$(1)+code.hex: $$(HEXMERGER) $(1)+program.hex $$($(1)_CODEHEX) $$(MERGEHEX) -$(1)+entire%.hex: $(1)+program.hex $$($(1)_CODEHEX) idlocs%.hex config.hex +$(1)+entire%.hex: $$(HEXMERGER) $(1)+program.hex $$($(1)_CODEHEX) idlocs%.hex config.hex $$(MERGEHEX) $(1)+program.hex: $(1).o $$(OBJS_$(prog)) $$(LIBS) @@ -24,7 +33,7 @@ endef define define_directasm -$(1).hex: $(1).asm +$(1).hex: $(1).asm $$(INCLUDES) $$(ASSEMBLE) $$< endef @@ -53,20 +62,11 @@ blank0.asm blank2.asm blank4.asm blank6.asm: blank%.asm: $(CEBPIC)manypics.make echo >>$@.new " end" mv -f $@.new $@ -#---------- general definitions etc. ---------- - -TARGETS += $(foreach i, $(PICNOS), idlocs$i.hex noncode$i.hex) -MORSE_INCLUDE ?= common.inc -INCLUDES += ../iwjpictest/insn-aliases.inc morse+auto.inc - -include ../common.make -include ../pic.make - #---------- targets ---------- all: $(TARGETS) -noncode%.hex: idlocs%.hex config.hex +noncode%.hex: $(HEXMERGER) idlocs%.hex config.hex $(MERGEHEX) morse+auto.inc: $(CEBPIC)morse-generator morse.messages diff --git a/cebpic/merge-hex b/cebpic/merge-hex index 03df2d3..6a17761 100755 --- a/cebpic/merge-hex +++ b/cebpic/merge-hex @@ -1,10 +1,97 @@ -#!/usr/bin/perl -$end= ':00000001FF'; +#!/usr/bin/perl -w +# See http://www.precma.it/download/intelhex.pdf + +use strict qw(refs vars); + +our ($lba,$sba,$loc,$eof,%once); + +$lba=$sba=0; + +sub once { + my ($r) = @_; + my ($o); + $o= \$once{$_[0]}; + if (!defined $$o) { $$o= $loc; return; } + die sprintf("%s: %s: clash at 0x%x (1st)\n". + "%s: %s: clash at 0x%x (2nd)\n", + $0, $$o, $r, $0, $loc, $r); +} + +sub bad ($) { my ($m)=@_; die "$0: $loc: $m\n"; } + +my ($drlo,$dri,$orgline,$la); + while (<>) { - chomp; - next if uc $_ eq $end; - print or die $!; - print "\n" or die $!; + $orgline= $_; + $loc= "$ARGV:$."; + + chomp; # General Record Format, p5 + s/^\:// or bad('no colon'); + $_= lc $_; + m/[^0-9a-f]/ and bad("bad char ".ord($&)); + length() & 1 and bad('odd length'); + + s/..$//; # chop checksum (we don't check this) + s/^..//; # chop reclen (we don't check this) + + if (s/^000001//) { # End of File, p11 + $eof= $orgline; + if ($lba) { $orgline= ":020000040000f8"; $lba=0; } + elsif ($sba) { $orgline= ":020000020000fc"; $sba=0; } + else { next; } + } elsif (s/^000004(....)$//) { $lba= hex($1)<<16; } # Ext'd Linear Addr, p6 + elsif (s/^000002(....)$//) { $sba= hex($1)<<4; } # Ext'd Seg. Addr., p7 + elsif (s/^(....)00//) { # Data Record, p8 + $drlo= hex $1; + for ($dri=0; s/^..//; $dri++) { + bad('both LBA and SBA') if $lba && $sba; + if ($lba) { $la= ($lba+$drlo+$dri) & 0x0ffffffff; } + elsif ($sba) { $la= $sba + (($drlo+$dri) & 0xffff); } + else { $la= $drlo+$dri; } +#print STDERR ">$lba|$sba|$drlo|$dri|$la|$_<\n"; + once($la); + } + } + elsif (s/^000005//) { once('start'); } # Start Linear Address, p9 + elsif (s/^000003//) { once('start'); } # Start Segment Address, p10 + else { + bad('unknown record or bad record'); + } + print $orgline or die $!; +} + +our ($lx,$ld); + +$lx= 0; +$ld= ''; +sub pf { + my ($f) = shift @_; + my ($s) = sprintf $f, @_; + if ($s =~ m/^\s/ && length($ld.$s) > 70) { + print STDERR $ld,"\n" or die $!; $ld= " "; + } + $ld.= $s; +} +sub pf_end () { + print STDERR $ld,"\n" or die $!; +} + +my ($ca,$a1); +undef $la; +foreach $ca (sort { $a <=> $b } keys %once) { + next if defined($la) && $ca == ++$la; + defined($la) and + --$la != $a1 and + pf("-%x", $la); + pf(" %x", $ca); + $la=$a1=$ca; +} +if (!defined($la)) { + pf(" empty"); +} elsif ($la != $a1) { + pf("-%x", $la); } -print $end or die $!; -print "\n" or die $!; +pf_end(); + +die "$0: no input files or missing EOF markers\n" unless defined $eof; +print $eof or die $!; diff --git a/detpic/Makefile b/detpic/Makefile index e3c731d..6f005e3 100644 --- a/detpic/Makefile +++ b/detpic/Makefile @@ -18,6 +18,7 @@ INCLUDES= common.inc \ routines-led.fin \ ../iwjpictest/clockvaries.inc \ vectors.fin \ + pindata.inc \ detect.inc VARSFILES= variables diff --git a/detpic/pindata.inc b/detpic/pindata.inc index 2ffce54..d0c85ba 100644 --- a/detpic/pindata.inc +++ b/detpic/pindata.inc @@ -1,9 +1,9 @@ ;====================================================================== -picno2ptmap equ 0x6000 -bkptix2portnumbitnum equ 0x6100 -pic2detinfo equ 0x6200 -picno2revbits equ 0x6300 +picno2ptmap equ 0x6100 +bkptix2portnumbitnum equ 0x6000 +pic2detinfo equ 0x6040 +picno2revbits equ 0x6080 maxpic_ln2 equ 5 maxpic equ 1 << maxpic_ln2 diff --git a/iwjpictest/Makefile b/iwjpictest/Makefile index 3b42caf..8fb14ae 100644 --- a/iwjpictest/Makefile +++ b/iwjpictest/Makefile @@ -20,7 +20,7 @@ all: $(TARGETS) $(PROGRAM_HEXES) include ../pic.make -%+withcfg.hex: %.hex config.hex +%+withcfg.hex: $(HEXMERGER) %.hex config.hex $(MERGEHEX) %.hex: %.o $(LIBS) $(DEFLIBS) diff --git a/pic.make b/pic.make index fb3149d..e407dfa 100644 --- a/pic.make +++ b/pic.make @@ -17,9 +17,11 @@ #ASFLAGS= -Dmclock=20000 -Dsclock=20000 ASFLAGS= -Dmclock=20000 -Dsclock=5000 +HEXMERGER= $(CEBPIC)merge-hex +MERGEHEX= ./$^ $o + LINK= gplink -m -o $@ $^ ASSEMBLE= gpasm -p 18f458 $(ASFLAGS) -MERGEHEX= $(CEBPIC)merge-hex $^ $o DOASSEMBLE= $(ASSEMBLE) -c $< && mv $*.lst $*-asm.lst %.o: %.asm $(INCLUDES) -- 2.30.2