Device-AVR-UPDI
view release on metacpan or search on metacpan
bin/avr-updi view on Meta::CPAN
# Because this file format was invented for Intel x86 in the 16-bit era,
# we have to account for its crazy 16bit offset + 16bit segment == 20bit
# linear addressing madness.
sub print_record {
my $self = shift;
my ( $addr, $type, $data ) = @_;
my $clen = length $data;
my $cksum = $clen + ( $addr & 0xFF ) + ( $addr >> 8 ) + $type;
my $encdata = "";
( $encdata .= sprintf "%02X", ord $_), ( $cksum += ord $_ )
for split //, $data;
$self->printf( ":%02X%04X%02X%s%02X\n",
$clen, $addr, $type, $encdata, ( -$cksum ) & 0xFF );
}
sub output_chunk {
my $self = shift;
my ( $addr, $bytes ) = @_;
my $segaddr = 0;
foreach my $data ( $bytes =~ m/(.{1,16})/gs ) {
my $hiaddr = $addr & 0xFFFF0000;
if( $segaddr << 4 != $hiaddr ) {
( run in 0.857 second using v1.01-cache-2.11-cpan-6aa56a78535 )