Reply by rj_satterlee March 16, 20062006-03-16
Hiya-

I suggest that you point your browser to the microchip site and
look for an app note (or documentation) on the upgrade path from
a 16F877 to 16F877A.  I'm pretty sure that there was one, at least
a while ago.  I don't have a copy handy right here/now.

The bootloader I think that I can help with also.  Another current
thread again mentions the microchip site on the construction of
a 16F and/or 18F bootloader.

As pointed out by a previous post on this thread, the bootloader
will take a program from an external source via an interface that
the pic can handle and the pic will "self program" it's flash
memory with the new program.

I looked at the app note from microchip for their bootstrap loader
and decided to roll my own.  It seems like the microchip solution
is a little too complicated for my tastes. 10 commands and a 
couple of <STX> ascii characters to start things off.....

For the 16F877A, I did an rs232 interface to a PC running a perl
script that I whomped up.  I kept the footprint of the bootstrap
loader down to 0x64 words of code.  My little code just prompts
the PC when it's come out of reset and detects that a pin is
low (it could normally be an output pin, but after coming out
of reset and seeing the pin low, it goes to the bootloader).
After prompting via rs232 the PC, the perl script on the PC
dumps down 4 word binary data packets.  The pic program eats
the data packets and programs those 4 words. This is all in
the 16f877a datasheets.  After programming the 4 words the
pic again fires off a character to the PC which tells the PC
to send over the next 4 words to program.  This continues until
the PC figures out that it's finished reading all the interesting
portions of the hex file and it terminates with a message.
Configuration words and eeprom in my code are thrown away. Only
Intel "hex" format type 0 records under 0x2000 are passed along.

The operator then turns off the power supply to the pic, removes
the jumper for the bootstrap portion, optionally removes the
rs232 cable, and repowers the pic.

As mentioned, it is desireable to have bootstrap loaders use
as little program space as possible.  In the old days, a small
bootstrap loader was desireable.  We had to program in the
bootstrap via switches into the computer memory.  ROMs made
that process a non issue.  These days though, a small footprint
means that we have more room for the "real" program.

Of course, you do have the "chicken and the egg" syndrome here.
But, this has a real answer.  You do have to have a "hardware"
programmer to program the bootstrap loader.  But after that
(if you don't screw up or overwrite the bootstrap loader program),
you can eliminate the use of a "hardware" programmer to download
new versions of the "real" program.

Hope that this little snippet/tutorial helps!

 Cheers,

   Rich S.
	--- In piclist@picl..., "mr_gees100_peas" <geovar13@...> wrote:
>
> Hi, 
>    For a while now I've been wondering what does the A in 16F877A
> means? I mean what is the difference between a 16F877 and a 16F877A? 
> 
>    My other question is what is a bootloader?
>
	
Reply by Robert Rolf March 16, 20062006-03-16
There are many other bootloaders out there that fit in under 256 words.
ROMzap is one of them, but the web site is long gone.

R

mr_gees100_peas wrote:

> --- In piclist@picl..., "Leon Heller"
<leon.heller@...> wrote:
> 
>>----- Original Message ----- 
>>From: "mr_gees100_peas" <geovar13@...>
>>To: <piclist@picl...>
>>Sent: Thursday, March 16, 2006 3:27 AM
>>Subject: [piclist] what does the A in 16F877A means?
>>
>>>Hi,
>>>  For a while now I've been wondering what does the A in
16F877A
>>>means? I mean what is the difference between a 16F877 and a 16F877A?
>>
>>The A indicates an improved version, the earlier version probably
> 
> had some 
> 
>>bugs or other shortcomings.
>>
>>
>>>  My other question is what is a bootloader?
>>
>>Generally, a piece of software that you put in flash memory that allows 
>>programs to be loaded via a serial port. It can be useful in that a 
>>programmer for the chip isn't needed for updating firmware and so
on.
>>
>>Leon
>>--
>>Leon Heller, G1HSM
>>leon.heller@...
>>http://webspace.webring.com/people/jl/leon_heller/
>>
> 
> 
> Thanks for the reply. Men, 2Kb of memory for the bootloader is a bit
> expensive but I supposed it has its usefulness.
>
	
Reply by DLC March 16, 20062006-03-16
Quite a bit actually.  Rather than detail them here, check out the spec 
sheets.  The '877A has a compatability mode, but it is not quite 
perfectly compatible.  The '877A has these comparators that you need to 
explicitly turn off to get digital IO that the 877 doesn't have you 
worry about.

DLC

mr_gees100_peas wrote:
> Hi, 
>    For a while now I've been wondering what does the A in 16F877A
> means? I mean what is the difference between a 16F877 and a 16F877A? 
> 
>    My other question is what is a bootloader?
> 
> 
> 
> 
> 
> to unsubscribe, go to http://www.yahoogroups.com and follow the
instructions 
> Yahoo! Groups Links
> 
> 
> 
>  
> 
> 

-- 
-------------
Dennis Clark          TTT Enterprises
www.techtoystoday.com
-------------

Reply by mr_gees100_peas March 16, 20062006-03-16
--- In piclist@picl..., "Leon Heller" <leon.heller@...>
wrote:
>
> ----- Original Message ----- 
> From: "mr_gees100_peas" <geovar13@...>
> To: <piclist@picl...>
> Sent: Thursday, March 16, 2006 3:27 AM
> Subject: [piclist] what does the A in 16F877A means?
> 
> 
> > Hi,
> >   For a while now I've been wondering what does the A in 16F877A
> > means? I mean what is the difference between a 16F877 and a 16F877A?
> 
> The A indicates an improved version, the earlier version probably
had some 
> bugs or other shortcomings.
> 
> >
> >   My other question is what is a bootloader?
> 
> Generally, a piece of software that you put in flash memory that allows 
> programs to be loaded via a serial port. It can be useful in that a 
> programmer for the chip isn't needed for updating firmware and so on.
> 
> Leon
> --
> Leon Heller, G1HSM
> leon.heller@...
> http://webspace.webring.com/people/jl/leon_heller/
>

Thanks for the reply. Men, 2Kb of memory for the bootloader is a bit
expensive but I supposed it has its usefulness.
	
Reply by Leon Heller March 16, 20062006-03-16
----- Original Message ----- 
From: "mr_gees100_peas" <geovar13@geov...>
To: <piclist@picl...>
Sent: Thursday, March 16, 2006 3:27 AM
Subject: [piclist] what does the A in 16F877A means?
	> Hi,
>   For a while now I've been wondering what
does the A in 16F877A
> means? I mean what is the difference between a 16F877 and a 16F877A?

The A indicates an improved version, the earlier version probably had some 
bugs or other shortcomings.

>
>   My other question is what is a bootloader?

Generally, a piece of software that you put in flash memory that allows 
programs to be loaded via a serial port. It can be useful in that a 
programmer for the chip isn't needed for updating firmware and so on.

Leon
--
Leon Heller, G1HSM
leon.heller@leon...
http://webspace.webring.com/people/jl/leon_heller/
	
Reply by rtstofer March 16, 20062006-03-16
--- In piclist@picl..., "mr_gees100_peas" <geovar13@...>
wrote:
>
> Hi, 
>    For a while now I've been wondering what does the A in 16F877A
> means? I mean what is the difference between a 16F877 and a 16F877A? 
> 
>    My other question is what is a bootloader?
>

For the specific answer, check the migation document at Microchip.  As
a practical matter, the change are more related to the flash
programming algorithm.  The bootloaders and programmers that were set
up specifically for the 877 don't work on the 877A.

A bootloader is a piece of code that is resident on the chip and loads
other code.  There are several around.  I use PicLoader because it
comes with the MiniSumo Mark III robot.  There is a matching BotLoader
program to handle the downloading from Windows.  This was written
because most users have no idea how to configure Hyperterminal for
operation with the bot.

PicLoader reserves the upper 2k of flash and that's a lot to give up.
 It is also required that the user programs reserved addresses 0x000 -
0x002 for the PicLoader.  In other words, ORG the program at 0x0003,
do a quick jump to 'main' because 0x0004 is the interrupt vector.

You can get copies of PicLoader and BotLoader over on the MiniSumo
Mark III group here at Yahoo.

Microchip has a bootloader manual on the 16F877A page.

See http://ww1.microchip.com/downloads/en/DeviceDoc/39591a.pdf

Richard
	
Reply by mr_gees100_peas March 16, 20062006-03-16
Hi, 
   For a while now I've been wondering what does the A in 16F877A
means? I mean what is the difference between a 16F877 and a 16F877A? 

   My other question is what is a bootloader?