EmbeddedRelated.com
Forums

Programming AVR from ARM using CAN Bus interface

Started by pidy June 9, 2008
Hello to all,

I'm looking since many days something about my problem without find
nothing interesting so I'm going to post it.

I have a system of 4 different closed boxes: the Main box based on an
Linux ARM9 processor with a static IP and the A, B and C boxes each one
based on an AT90CAN128 microprocessor.

The 4 boxes are connected all toghether with CAN-BUS.

Let's say... my system is located in USA and I'm in Italy.

I can connect to my system with TCP/IP. 

My scope is to reprogram the 3 AVR uP from Italy. So I have to put a CAN
booloader on the 3 AVRs (naturally with JTAG and before send the system in
USA).

Than I can telnet from Italy the Main box, transfer the new 3 hex files on
it and than using CAN Bus upload the AVRs firmware. 

So I need both the CAN Bootloader for AVRs  and a script for the ARM to
download the hex file into AVR flash memory.
I had a look of those codes on the net but I didn’t find too much.
The only interesting thing is Flip tool by ATmel but is just works with
x86 architecture and not support CAN Bus.

Any example code for my purpose? Any suggestion?

Just for information, the Main box is this board
http://www.embeddedarm.com/products/board-detail.php?product=TS-7200 with
the TS-CAN1 module.

Many thanks to all,
Daniele 



pidy wrote:

> Hello to all, > > I'm looking since many days something about my problem without find > nothing interesting so I'm going to post it. > > I have a system of 4 different closed boxes: the Main box based on an > Linux ARM9 processor with a static IP and the A, B and C boxes each one > based on an AT90CAN128 microprocessor. > > The 4 boxes are connected all toghether with CAN-BUS. > > Let's say... my system is located in USA and I'm in Italy. > > I can connect to my system with TCP/IP. > > My scope is to reprogram the 3 AVR uP from Italy. So I have to put a CAN > booloader on the 3 AVRs (naturally with JTAG and before send the system in > USA). > > Than I can telnet from Italy the Main box, transfer the new 3 hex files on > it and than using CAN Bus upload the AVRs firmware. > > So I need both the CAN Bootloader for AVRs and a script for the ARM to > download the hex file into AVR flash memory. > I had a look of those codes on the net but I didn’t find too much. > The only interesting thing is Flip tool by ATmel but is just works with > x86 architecture and not support CAN Bus. > > Any example code for my purpose? Any suggestion? > > Just for information, the Main box is this board > http://www.embeddedarm.com/products/board-detail.php?product=TS-7200 with > the TS-CAN1 module. > > Many thanks to all, > Daniele
If you can decide for using CANopen as a higher layer protocol, implement a bootloader understanding the SDO domain transfer on the AVRs and put an CANopen implementation on your ARM9 linux. That's it. Heinz
>pidy wrote: > >> Hello to all, >> >> I'm looking since many days something about my problem without find >> nothing interesting so I'm going to post it. >> >> I have a system of 4 different closed boxes: the Main box based on an >> Linux ARM9 processor with a static IP and the A, B and C boxes each
one
>> based on an AT90CAN128 microprocessor. >> >> The 4 boxes are connected all toghether with CAN-BUS. >> >> Let's say... my system is located in USA and I'm in Italy. >> >> I can connect to my system with TCP/IP. >> >> My scope is to reprogram the 3 AVR uP from Italy. So I have to put a
CAN
>> booloader on the 3 AVRs (naturally with JTAG and before send the system
in
>> USA). >> >> Than I can telnet from Italy the Main box, transfer the new 3 hex files
on
>> it and than using CAN Bus upload the AVRs firmware. >> >> So I need both the CAN Bootloader for AVRs and a script for the ARM
to
>> download the hex file into AVR flash memory. >> I had a look of those codes on the net but I didn’t find too much. >> The only interesting thing is Flip tool by ATmel but is just works
with
>> x86 architecture and not support CAN Bus. >> >> Any example code for my purpose? Any suggestion? >> >> Just for information, the Main box is this board >> http://www.embeddedarm.com/products/board-detail.php?product=TS-7200
with
>> the TS-CAN1 module. >> >> Many thanks to all, >> Daniele > >If you can decide for using CANopen as a higher layer protocol, >implement a bootloader understanding the SDO domain transfer on the AVRs >and put an CANopen implementation on your ARM9 linux. That's it. > >Heinz > > >
What You mean for SDO domain? and what is it CANopen?? Thanks, Daniele
pidy wrote:


>> >>If you can decide for using CANopen as a higher layer protocol, >>implement a bootloader understanding the SDO domain transfer on the AVRs >>and put an CANopen implementation on your ARM9 linux. That's it. >> >>Heinz >> >> >> > > > What You mean for SDO domain? > and what is it CANopen?? > > Thanks, > Daniele
CANopen is a protocol which uses CAN as Data Link Layer. It defines for example things that are not possible with CAN. CAN frames can transport in maximum 8 bytes. CANopen has a definition for a larger data stream, which is called 'domain'. SDO means 'Service Data Object', which is a special kind of point to point client server communication. Please look at http://www.can-cia.org/index.php?id=171 Heinz