15.12.2012 Views

Implementing an IEEE 1588 V2 Node on the ColdFire MCF5441x ...

Implementing an IEEE 1588 V2 Node on the ColdFire MCF5441x ...

Implementing an IEEE 1588 V2 Node on the ColdFire MCF5441x ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Freescale Semic<strong>on</strong>ductor<br />

Applicati<strong>on</strong> Note<br />

Document Number: AN4273<br />

Rev. 0, 08/2011<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g><br />

<str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> <strong>ColdFire</strong> <strong>MCF5441x</strong><br />

Using <strong>the</strong> Freescale MQX <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><br />

<str<strong>on</strong>g>1588</str<strong>on</strong>g> Communicati<strong>on</strong> Library<br />

by: Michal Princ<br />

System Applicati<strong>on</strong> Engineer<br />

Roznov Czech System Center<br />

1 Introducti<strong>on</strong><br />

This applicati<strong>on</strong> note describes implementati<strong>on</strong> of <strong>the</strong><br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> ® <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> Precisi<strong>on</strong> Time Protocol (PTP) <strong>on</strong> <strong>the</strong><br />

<strong>ColdFire</strong> ® <strong>MCF5441x</strong> processor running <strong>the</strong> MQX <br />

Operating System. The soluti<strong>on</strong> is targeting <strong>the</strong><br />

TWR-MCF54418 KIT <str<strong>on</strong>g>an</str<strong>on</strong>g>d Freescale’s <strong>ColdFire</strong><br />

MCF54418 microprocessor. The demo software runs<br />

under <strong>the</strong> Freescale MQX Real Time Operati<strong>on</strong> System<br />

<str<strong>on</strong>g>an</str<strong>on</strong>g>d uses <strong>the</strong> Freescale MQX <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> Communicati<strong>on</strong><br />

Library. The library is based <strong>on</strong> <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g><br />

protocol software by IXXAT Automati<strong>on</strong> GmbH.<br />

© Freescale Semic<strong>on</strong>ductor, Inc., 2011. All rights reserved.<br />

C<strong>on</strong>tents<br />

1 Introducti<strong>on</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

2 <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> basic overview. . . . . . . . . . . . . . . . . . . . . . . . 2<br />

2.1 Synchr<strong>on</strong>izati<strong>on</strong> principle. . . . . . . . . . . . . . . . . . . . . 3<br />

2.2 Timestamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

3 <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> implementati<strong>on</strong> for <strong>ColdFire</strong> MCF54418 based<br />

<strong>on</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

3.1 Hardware comp<strong>on</strong>ents . . . . . . . . . . . . . . . . . . . . . . 6<br />

3.2 Software comp<strong>on</strong>ents . . . . . . . . . . . . . . . . . . . . . . . 8<br />

4 Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software . . 10<br />

4.1 MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library usage. . . . . . . . . . . . . . . . . . . . . 11<br />

4.2 MQX tasks list . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

4.3 N<strong>on</strong>volatile storage . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

4.4 Timestamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

4.5 User interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

5 <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

5.1 Hardware setup <str<strong>on</strong>g>an</str<strong>on</strong>g>d jumper settings. . . . . . . . . . . 21<br />

5.2 Measuring <strong>the</strong> clock synchr<strong>on</strong>icity. . . . . . . . . . . . . 26<br />

6 C<strong>on</strong>clusi<strong>on</strong>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> basic overview<br />

This document discusses <strong>the</strong> following topics:<br />

• <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> protocol basics<br />

• <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> protocol implementati<strong>on</strong> for <strong>ColdFire</strong> MCF54418 based <strong>on</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

• Descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> demo applicati<strong>on</strong> targeting <strong>the</strong> TWR-MCF54418 KIT<br />

2 <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> basic overview<br />

The <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard is known as Precisi<strong>on</strong> Clock Synchr<strong>on</strong>izati<strong>on</strong> Protocol for Networked<br />

Measurement C<strong>on</strong>trol Systems, also known as Precisi<strong>on</strong> Time Protocol (PTP). The <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> PTP allows<br />

clocks distributed across <str<strong>on</strong>g>an</str<strong>on</strong>g> E<strong>the</strong>rnet network to be accurately synchr<strong>on</strong>ized using a process whereby <strong>the</strong><br />

distributed nodes exch<str<strong>on</strong>g>an</str<strong>on</strong>g>ge timestamped messages.<br />

The technology behind <strong>the</strong> st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard was originally developed by Agilent Technologies ® <str<strong>on</strong>g>an</str<strong>on</strong>g>d was used for<br />

distributed measuring <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<strong>on</strong>trol tasks. The challenge is to synchr<strong>on</strong>ize networked measuring devices<br />

with each o<strong>the</strong>r in terms of time, making <strong>the</strong>m able to record measured values <str<strong>on</strong>g>an</str<strong>on</strong>g>d providing <strong>the</strong>m with a<br />

precise system timestamp. Based <strong>on</strong> this timestamp, <strong>the</strong> measured values c<str<strong>on</strong>g>an</str<strong>on</strong>g> <strong>the</strong>n be correlated with each<br />

o<strong>the</strong>r.<br />

Typical applicati<strong>on</strong>s of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> time synchr<strong>on</strong>izati<strong>on</strong> include:<br />

• Time-sensitive telecommunicati<strong>on</strong> services that require precise time synchr<strong>on</strong>izati<strong>on</strong> between<br />

communicating nodes<br />

• Industrial network switches that synchr<strong>on</strong>ize sensors <str<strong>on</strong>g>an</str<strong>on</strong>g>d actuators over a single wire distributed<br />

c<strong>on</strong>trol network to c<strong>on</strong>trol <str<strong>on</strong>g>an</str<strong>on</strong>g> automated assembly process<br />

• Powerline networks that synchr<strong>on</strong>ize across large-scale distributed power grid switches to enable<br />

smooth tr<str<strong>on</strong>g>an</str<strong>on</strong>g>sfer of power<br />

• Test/measurement devices that must maintain accurate time synchr<strong>on</strong>izati<strong>on</strong> with <strong>the</strong> device under<br />

test in m<str<strong>on</strong>g>an</str<strong>on</strong>g>y different operating envir<strong>on</strong>ments<br />

• Printing machines, cooperative robotic systems, <str<strong>on</strong>g>an</str<strong>on</strong>g>d residential E<strong>the</strong>rnet<br />

These applicati<strong>on</strong>s require precise clock synchr<strong>on</strong>izati<strong>on</strong> between devices with accuracy in <strong>the</strong><br />

sub-microsec<strong>on</strong>d r<str<strong>on</strong>g>an</str<strong>on</strong>g>ge. It is a remarkable feature of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> that this synchr<strong>on</strong>izati<strong>on</strong> precisi<strong>on</strong> is<br />

achieved through regular E<strong>the</strong>rnet c<strong>on</strong>nectivity with st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard E<strong>the</strong>rnet frames.<br />

This soluti<strong>on</strong> allows nearly <str<strong>on</strong>g>an</str<strong>on</strong>g>y device of <str<strong>on</strong>g>an</str<strong>on</strong>g>y perform<str<strong>on</strong>g>an</str<strong>on</strong>g>ce to participate in high-precisi<strong>on</strong> synchr<strong>on</strong>ized<br />

networks that are simple to operate <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<strong>on</strong>figure.<br />

O<strong>the</strong>r key benefits of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> protocol include:<br />

• C<strong>on</strong>vergence times of less th<str<strong>on</strong>g>an</str<strong>on</strong>g> a minute for sub-microsec<strong>on</strong>d synchr<strong>on</strong>izati<strong>on</strong> between<br />

heterogeneous distributed devices with different clocks, resoluti<strong>on</strong>, <str<strong>on</strong>g>an</str<strong>on</strong>g>d stability.<br />

• Automatic c<strong>on</strong>figurati<strong>on</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d segmentati<strong>on</strong>. Each node uses <strong>the</strong> best master clock algorithm (BMC)<br />

to determine <strong>the</strong> best clock in <strong>the</strong> segment. Every PTP node stores its features within a specified<br />

dataset. These features are tr<str<strong>on</strong>g>an</str<strong>on</strong>g>smitted to o<strong>the</strong>r nodes within its sync telegrams. Based <strong>on</strong> this, o<strong>the</strong>r<br />

nodes are able to synchr<strong>on</strong>ize <strong>the</strong>ir data sets with <strong>the</strong> features of <strong>the</strong> actual master <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<str<strong>on</strong>g>an</str<strong>on</strong>g> adjust<br />

<strong>the</strong>ir clocks. The cyclic running of <strong>the</strong> BMC also allows hot swapping; that is, nodes c<str<strong>on</strong>g>an</str<strong>on</strong>g> be<br />

c<strong>on</strong>nected or removed during propagati<strong>on</strong> time.<br />

2<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> basic overview<br />

• Simple c<strong>on</strong>figurati<strong>on</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d operati<strong>on</strong> with low compute resource <str<strong>on</strong>g>an</str<strong>on</strong>g>d network b<str<strong>on</strong>g>an</str<strong>on</strong>g>dwidth<br />

c<strong>on</strong>sumpti<strong>on</strong><br />

2.1 Synchr<strong>on</strong>izati<strong>on</strong> principle<br />

Network clocks are org<str<strong>on</strong>g>an</str<strong>on</strong>g>ized in a master-slave hierarchy. <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> identifies <strong>the</strong> master clock <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong>n<br />

establishes two-way timing exch<str<strong>on</strong>g>an</str<strong>on</strong>g>ge by which <strong>the</strong> master sends messages to its slaves to initiate<br />

synchr<strong>on</strong>izati<strong>on</strong>. Each slave <strong>the</strong>n resp<strong>on</strong>ds to synchr<strong>on</strong>ize itself to its master. This sequence is repeated<br />

throughout <strong>the</strong> specified network to achieve <str<strong>on</strong>g>an</str<strong>on</strong>g>d maintain clock synchr<strong>on</strong>izati<strong>on</strong>.<br />

The process starts with <strong>on</strong>e node (master clock) tr<str<strong>on</strong>g>an</str<strong>on</strong>g>smitting a sync telegram that c<strong>on</strong>tains <strong>the</strong> estimated<br />

tr<str<strong>on</strong>g>an</str<strong>on</strong>g>smissi<strong>on</strong> time. The exact tr<str<strong>on</strong>g>an</str<strong>on</strong>g>smissi<strong>on</strong> time of <strong>the</strong> sync telegram is captured by a clock <str<strong>on</strong>g>an</str<strong>on</strong>g>d tr<str<strong>on</strong>g>an</str<strong>on</strong>g>smitted<br />

in a sec<strong>on</strong>d follow-up message. By comparing <strong>the</strong> timestamp informati<strong>on</strong> c<strong>on</strong>tained within <strong>the</strong> first <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

sec<strong>on</strong>d telegrams against its own clock, <strong>the</strong> receiver c<str<strong>on</strong>g>an</str<strong>on</strong>g> calculate <strong>the</strong> time difference between its own<br />

clock <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> master clock (see Figure 1). Sync <str<strong>on</strong>g>an</str<strong>on</strong>g>d follow-up messages are sent as multicast. Some <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><br />

<str<strong>on</strong>g>1588</str<strong>on</strong>g> systems enable hardware timestamping <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> inserti<strong>on</strong> of actual timestamps into <strong>the</strong> sync message.<br />

In this case, follow up messages are not needed (so called <strong>on</strong>e-step mode of operati<strong>on</strong>).<br />

t0 = timestamp<br />

of sync msg sent<br />

t0 value<br />

sent in follow-up msg<br />

System A<br />

(Master)<br />

t0<br />

sync msg<br />

follow-up msg<br />

(includes t0)<br />

System B<br />

(Slave)<br />

Equati<strong>on</strong> 1:<br />

t1 - t0 = offset + delay<br />

Figure 1. Offset <str<strong>on</strong>g>an</str<strong>on</strong>g>d delay measurement—sync message, follow-up message<br />

The telegram propagati<strong>on</strong> time is determined cyclically in a sec<strong>on</strong>d tr<str<strong>on</strong>g>an</str<strong>on</strong>g>smissi<strong>on</strong> process between <strong>the</strong> slave<br />

<str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> master (delay telegrams). The slave c<str<strong>on</strong>g>an</str<strong>on</strong>g> <strong>the</strong>n correct its clock <str<strong>on</strong>g>an</str<strong>on</strong>g>d adapt it to <strong>the</strong> current bus<br />

propagati<strong>on</strong> time (see Figure 2). Delay_req <str<strong>on</strong>g>an</str<strong>on</strong>g>d delay_resp messages are point-to-point but sent with a<br />

multicast address for simplicity.<br />

Freescale Semic<strong>on</strong>ductor 3<br />

t1<br />

t1 = timestamp<br />

of sync msg received


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> basic overview<br />

4<br />

t3 = timestamp<br />

of delay_req msg received<br />

t3<br />

delay_requ msg<br />

delay_resp msg<br />

(includes t3)<br />

Figure 2. offset <str<strong>on</strong>g>an</str<strong>on</strong>g>d delay measurement—delay messages<br />

Figure 3 serves as <str<strong>on</strong>g>an</str<strong>on</strong>g> example of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> synchr<strong>on</strong>izati<strong>on</strong> sequence (<strong>on</strong>e cycle) <str<strong>on</strong>g>an</str<strong>on</strong>g>d calculati<strong>on</strong> of<br />

<strong>the</strong> actual offset <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> actual delay between master <str<strong>on</strong>g>an</str<strong>on</strong>g>d slave node.<br />

100<br />

102<br />

104<br />

106<br />

108<br />

110<br />

112<br />

Estimated<br />

Send Time<br />

(100)<br />

Precise<br />

Send<br />

Time<br />

(101)<br />

B<br />

Precise<br />

Receive<br />

Time<br />

(108)<br />

Master Clock<br />

PTP Appl. G/MII<br />

t 0<br />

t 3<br />

Key Equati<strong>on</strong>s:<br />

A = t1 –t0 = Delay + Offset<br />

B = t3 -t2 = Delay – Offset<br />

Delay = (A+B) / 2<br />

Offset = (A-B) / 2<br />

System A<br />

(Master)<br />

SYNC(100??)<br />

FOLLOW_UP(101!)<br />

DELAY_REQ<br />

DELAY_RESP(108)<br />

System B<br />

(Slave)<br />

Figure 3. <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> synchr<strong>on</strong>izati<strong>on</strong> message sequence<br />

For more informati<strong>on</strong> about <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard, visit <strong>the</strong> web page for <strong>the</strong> Nati<strong>on</strong>al Institute of<br />

St<str<strong>on</strong>g>an</str<strong>on</strong>g>dards <str<strong>on</strong>g>an</str<strong>on</strong>g>d Technology.<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

t2<br />

Example:<br />

A = 106 – 101 = 5<br />

B = 108 – 111 = -3<br />

Delay = (5-3) / 2 = 1<br />

Offset = (5+3) / 2 = 4<br />

Equati<strong>on</strong> 2:<br />

t2 = timestamp<br />

of delay_req msg sent<br />

t3 – t2 = delay - offset<br />

Slave Clock<br />

G/MII PTP Appl.<br />

t 1<br />

t 2<br />

A<br />

Precise<br />

Receive<br />

Time (106)<br />

Offset<br />

Computati<strong>on</strong><br />

Precise<br />

Send Time<br />

(111)<br />

104<br />

106<br />

108<br />

110<br />

112<br />

114<br />

116<br />

UDP port 319: Sync <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

Delay_Req<br />

UDP port 320: Follow_up,<br />

Delay_Resp, <str<strong>on</strong>g>an</str<strong>on</strong>g>d Mgmt<br />

Freescale Semic<strong>on</strong>ductor


2.2 Timestamping<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> basic overview<br />

The PTP protocol c<str<strong>on</strong>g>an</str<strong>on</strong>g> be implemented completely in software using a st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard E<strong>the</strong>rnet module. However,<br />

because <strong>the</strong> timestamp informati<strong>on</strong> is applied at <strong>the</strong> applicati<strong>on</strong> level, <strong>the</strong> delay fluctuati<strong>on</strong> introduced by<br />

<strong>the</strong> software stack running <strong>on</strong> both master <str<strong>on</strong>g>an</str<strong>on</strong>g>d slave devices me<str<strong>on</strong>g>an</str<strong>on</strong>g> that <strong>on</strong>ly a limited precisi<strong>on</strong> c<str<strong>on</strong>g>an</str<strong>on</strong>g> be<br />

achieved (see Figure 4).<br />

Now, it's<br />

9:28 !<br />

Millisec<strong>on</strong>ds<br />

of delay <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

variati<strong>on</strong><br />

introduced<br />

by protocol<br />

stack<br />

Now, it's<br />

…<br />

…9:28!<br />

Master Clock<br />

PTP<br />

UDP<br />

IP<br />

MAC<br />

PHY<br />

PTP Packet<br />

Master Clock<br />

PTP<br />

UDP<br />

IP<br />

MAC<br />

PHY<br />

Variable delay introduced<br />

by <strong>the</strong> Network due to <strong>the</strong><br />

topology:<br />

•Hundreds of n<str<strong>on</strong>g>an</str<strong>on</strong>g>osec<strong>on</strong>ds<br />

to microsec<strong>on</strong>ds for<br />

repeaters & switches<br />

•Millisec<strong>on</strong>ds for routers<br />

Network<br />

Now it's 9:28<br />

Slave Clock<br />

PTP<br />

UDP<br />

Figure 4. Software timestamp implementati<strong>on</strong><br />

PTP Packet<br />

Network<br />

Now it's 9:28<br />

Figure 5. Hardware timestamp implementati<strong>on</strong><br />

Freescale Semic<strong>on</strong>ductor 5<br />

IP<br />

MAC<br />

PHY<br />

Slave Clock<br />

PTP<br />

UDP<br />

IP<br />

MAC<br />

PHY<br />

OK, th<str<strong>on</strong>g>an</str<strong>on</strong>g>ks<br />

9:28 !<br />

Millisec<strong>on</strong>ds<br />

of delay <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

variati<strong>on</strong><br />

introduced<br />

by protocol<br />

stack<br />

OK, th<str<strong>on</strong>g>an</str<strong>on</strong>g>ks<br />

9:28 !


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> implementati<strong>on</strong> for <strong>ColdFire</strong> MCF54418 based <strong>on</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

It is possible to minimize <strong>the</strong> impact of <strong>the</strong> protocol stack delay by taking timestamps closer to <strong>the</strong> physical<br />

interface, that is, at <strong>the</strong> MAC or PHY layers (see Figure 5). Dedicated hardware with timestamping<br />

capabilities, such as MAC-NET peripheral module of <strong>the</strong> Freescale <strong>ColdFire</strong> <strong>MCF5441x</strong>, allows<br />

synchr<strong>on</strong>izati<strong>on</strong> with signific<str<strong>on</strong>g>an</str<strong>on</strong>g>tly improved accuracy.<br />

3 <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> implementati<strong>on</strong> for <strong>ColdFire</strong> MCF54418<br />

based <strong>on</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

Freescale Semic<strong>on</strong>ductor’s <strong>ColdFire</strong> TWR-MCF54418 KIT serves as a hardware platform for hardware<br />

timestamping-based <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> soluti<strong>on</strong>s. When combined with <strong>the</strong> Freescale MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library, which<br />

uses <strong>the</strong> MQX TCP/IP stack, <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> protocol software by IXXAT Automati<strong>on</strong> GmbH,<br />

customers c<str<strong>on</strong>g>an</str<strong>on</strong>g> develop highly accurate <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> systems. Figure 6 illustrates <strong>the</strong> hardware <str<strong>on</strong>g>an</str<strong>on</strong>g>d software<br />

comp<strong>on</strong>ents of this soluti<strong>on</strong>.<br />

3.1 Hardware comp<strong>on</strong>ents<br />

3.1.1 MCF5441X tower module kit<br />

6<br />

Figure 6. <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> soluti<strong>on</strong> for <strong>ColdFire</strong> MCF54418<br />

The <strong>MCF5441x</strong> tower module kit (TWR-MCF5441X-KIT) is part of <strong>the</strong> Freescale Tower System, a<br />

modular development platform that enables rapid prototyping <str<strong>on</strong>g>an</str<strong>on</strong>g>d tool re-use through <strong>the</strong> implementati<strong>on</strong><br />

of rec<strong>on</strong>figurable hardware. The TWR-MCF5441X-KIT includes:<br />

• TWR-MCF5441X MPU module<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


• TWR-SER2 serial module<br />

• TWR-ELEV elevator cards<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> implementati<strong>on</strong> for <strong>ColdFire</strong> MCF54418 based <strong>on</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

The TWR-<strong>MCF5441x</strong> MPU module features include:<br />

• MCF54418 v4 Coldfire processor with MMU <str<strong>on</strong>g>an</str<strong>on</strong>g>d EMAC<br />

• Dual E<strong>the</strong>rnet with integrated L2 switch <str<strong>on</strong>g>an</str<strong>on</strong>g>d high precisi<strong>on</strong> hardware time stamping (<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g>)<br />

• Hi-Speed Dual Role USB<br />

• Access to DDR2, NAND, serial memories<br />

• Extensive I/Os available up to:<br />

—2 × SPIs<br />

—2 × I2Cs<br />

—1 × SSI<br />

—6 × PWMs<br />

—5 × UARTs<br />

—1 × eSDHC<br />

—1 × CAN<br />

For more informati<strong>on</strong> about <strong>the</strong> TWR-MCF5441X-KIT, refer to <strong>the</strong> MCF5441X Tower Module User<br />

M<str<strong>on</strong>g>an</str<strong>on</strong>g>ual, TWRMCF5441XUM, or visit www.freescale.com/tower.<br />

3.1.2 <strong>ColdFire</strong> <strong>MCF5441x</strong> 32-bit microprocessor<br />

The <strong>MCF5441x</strong> devices are a family of highly-integrated 32-bit microprocessors based <strong>on</strong> <strong>the</strong> Versi<strong>on</strong> 4m<br />

<strong>ColdFire</strong> microarchitecture, comprising <strong>the</strong> V4 integer core, memory m<str<strong>on</strong>g>an</str<strong>on</strong>g>agement unit (MMU) <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

enh<str<strong>on</strong>g>an</str<strong>on</strong>g>ced multiply-accumulate unit (EMAC). This product line is well-suited for processing data from <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

moving data between a variety of comm<strong>on</strong> serial interfaces (CAN, I2C, SSI, SPI, UART, <str<strong>on</strong>g>an</str<strong>on</strong>g>d USB) <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

E<strong>the</strong>rnet networks, especially for factory automati<strong>on</strong>, process c<strong>on</strong>trol, <str<strong>on</strong>g>an</str<strong>on</strong>g>d motor c<strong>on</strong>trol applicati<strong>on</strong>s.<br />

Support for low-cost memory <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<strong>on</strong>nectivity opti<strong>on</strong>s also make this family ideal for a r<str<strong>on</strong>g>an</str<strong>on</strong>g>ge of c<strong>on</strong>sumer<br />

digital lifestyle products.<br />

All <strong>MCF5441x</strong> devices operate at up to 250 MHz <str<strong>on</strong>g>an</str<strong>on</strong>g>d include 64 Kbytes of single-cycle SRAM, memory<br />

c<strong>on</strong>trollers for DDR2 SDRAM <str<strong>on</strong>g>an</str<strong>on</strong>g>d NAND flash, <strong>the</strong> highly c<strong>on</strong>figurable FlexBus for interfacing<br />

comp<strong>on</strong>ents like NOR flash, SRAM, <str<strong>on</strong>g>an</str<strong>on</strong>g>d programmable logic devices (FPGAs <str<strong>on</strong>g>an</str<strong>on</strong>g>d CPLDs), a 64-ch<str<strong>on</strong>g>an</str<strong>on</strong>g>nel<br />

DMA c<strong>on</strong>troller, <str<strong>on</strong>g>an</str<strong>on</strong>g>d serial memory boot <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<strong>on</strong>figurati<strong>on</strong> support.<br />

Communicati<strong>on</strong>s peripheral interfaces include: USB host <str<strong>on</strong>g>an</str<strong>on</strong>g>d On-<strong>the</strong>-Go c<strong>on</strong>trollers with integrated<br />

full-speed/low-speed tr<str<strong>on</strong>g>an</str<strong>on</strong>g>sceivers <str<strong>on</strong>g>an</str<strong>on</strong>g>d a switchable port for <str<strong>on</strong>g>an</str<strong>on</strong>g> external ULPI high-speed PHY, dual smart<br />

card ports, <str<strong>on</strong>g>an</str<strong>on</strong>g> enh<str<strong>on</strong>g>an</str<strong>on</strong>g>ced c<strong>on</strong>troller for MMC, MMCplus, SD, <str<strong>on</strong>g>an</str<strong>on</strong>g>d SDHC memory cards, dual CAN<br />

modules, a pair of synchr<strong>on</strong>ous serial interfaces, a 1-wire interface for low speed communicati<strong>on</strong> to<br />

devices (<strong>the</strong>rmostats, batteries, <str<strong>on</strong>g>an</str<strong>on</strong>g>d so <strong>on</strong>) <str<strong>on</strong>g>an</str<strong>on</strong>g>d a maximum of ten UARTs, six I2C c<strong>on</strong>trollers, <str<strong>on</strong>g>an</str<strong>on</strong>g>d four<br />

DMA serial peripheral interfaces.<br />

Unique to <strong>the</strong> <strong>MCF5441x</strong> family is a flexible 10/100 Mbps E<strong>the</strong>rnet subsystem c<strong>on</strong>figurable as a single<br />

media access c<strong>on</strong>troller (MAC) with a media independent interface (MII) or reduced MII (RMII), a pair<br />

of MACs with dual RMIIs, or, <strong>on</strong> specific devices, as a 3-port switch with two external ports <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> third<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor 7


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> implementati<strong>on</strong> for <strong>ColdFire</strong> MCF54418 based <strong>on</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

port internally c<strong>on</strong>nected to <strong>the</strong> processor. The E<strong>the</strong>rnet MACs incorporate hardware CRC<br />

checking/generati<strong>on</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d Magic Packet power m<str<strong>on</strong>g>an</str<strong>on</strong>g>agement. The entire E<strong>the</strong>rnet subsystem supports <strong>the</strong><br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g>-2002 st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard. Certain <strong>MCF5441x</strong> family members also include <strong>the</strong> cryptographic<br />

accelerati<strong>on</strong> unit (CAU), a CPU coprocessor for <strong>the</strong> DES, 3DES, AES, MD5, SHA-1, <str<strong>on</strong>g>an</str<strong>on</strong>g>d SHA-256<br />

algorithms implemented in network security protocols like SSL <str<strong>on</strong>g>an</str<strong>on</strong>g>d IPsec.<br />

Additi<strong>on</strong>al features include four 32-bit timers that c<str<strong>on</strong>g>an</str<strong>on</strong>g> opti<strong>on</strong>ally be linked to <strong>the</strong> E<strong>the</strong>rnet subsystem's<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> timestamp logic for network-triggered event recogniti<strong>on</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d generati<strong>on</strong>, a flexible<br />

multi-ch<str<strong>on</strong>g>an</str<strong>on</strong>g>nel pulse width modulati<strong>on</strong> timer suitable for motor c<strong>on</strong>trol which c<str<strong>on</strong>g>an</str<strong>on</strong>g> also be linked to <strong>the</strong><br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> timestamp logic for synchr<strong>on</strong>izing motors through E<strong>the</strong>rnet, a fast, 12-bit <str<strong>on</strong>g>an</str<strong>on</strong>g>alog-to-digital<br />

c<strong>on</strong>verter (ADC) with 8-shared input ch<str<strong>on</strong>g>an</str<strong>on</strong>g>nels capable of simult<str<strong>on</strong>g>an</str<strong>on</strong>g>eous parallel c<strong>on</strong>versi<strong>on</strong>s, <str<strong>on</strong>g>an</str<strong>on</strong>g>d two<br />

12-bit digital-to-<str<strong>on</strong>g>an</str<strong>on</strong>g>alog c<strong>on</strong>verters (DACs). Figure 7 is a block diagram for <strong>the</strong> <strong>MCF5441x</strong> family of<br />

microprocessors. For more informati<strong>on</strong>, refer to <strong>the</strong> <strong>MCF5441x</strong> Reference M<str<strong>on</strong>g>an</str<strong>on</strong>g>ual, MCF54418RM.<br />

3.2 Software comp<strong>on</strong>ents<br />

8<br />

Figure 7. <strong>MCF5441x</strong> block diagram<br />

3.2.1 Freescale MQX real time operati<strong>on</strong> system<br />

The MQX is a real-time operating system (RTOS) from MQX Embedded <str<strong>on</strong>g>an</str<strong>on</strong>g>d ARC Internati<strong>on</strong>al ® . It has<br />

been designed for uniprocessor, multiprocessor, <str<strong>on</strong>g>an</str<strong>on</strong>g>d distributed-processor embedded real-time systems.<br />

To leverage <strong>the</strong> success of <strong>the</strong> MQX RTOS, Freescale Semic<strong>on</strong>ductor adopted this software platform for<br />

its <strong>ColdFire</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d Power Architecture families of microprocessors. Compared to <strong>the</strong> original MQX<br />

distributi<strong>on</strong>s, <strong>the</strong> Freescale MQX distributi<strong>on</strong> is simpler to c<strong>on</strong>figure <str<strong>on</strong>g>an</str<strong>on</strong>g>d use. One single release now<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> implementati<strong>on</strong> for <strong>ColdFire</strong> MCF54418 based <strong>on</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

c<strong>on</strong>tains <strong>the</strong> MQX operating system plus all <strong>the</strong> o<strong>the</strong>r software comp<strong>on</strong>ents supported for a given<br />

microprocessor part (TCP/IP Stack, USB Host <str<strong>on</strong>g>an</str<strong>on</strong>g>d Device Stack, Filesystem, <str<strong>on</strong>g>an</str<strong>on</strong>g>d more).<br />

The MQX RTOS is a runtime library of functi<strong>on</strong>s that programs use to become real-time multitasking<br />

applicati<strong>on</strong>s. The main features are its scalable size, comp<strong>on</strong>ent-oriented architecture, <str<strong>on</strong>g>an</str<strong>on</strong>g>d ease of use. It<br />

supports multiprocessor applicati<strong>on</strong>s <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<str<strong>on</strong>g>an</str<strong>on</strong>g> be used with flexible embedded I/O products for networking,<br />

data communicati<strong>on</strong>s, <str<strong>on</strong>g>an</str<strong>on</strong>g>d file m<str<strong>on</strong>g>an</str<strong>on</strong>g>agement.<br />

The Freescale MQX RTOS offers leading-edge software technology for embedded designs based <strong>on</strong><br />

Freescale microprocessors <str<strong>on</strong>g>an</str<strong>on</strong>g>d microc<strong>on</strong>troller. The Freescale MQX RTOS offers a straightforward<br />

applicati<strong>on</strong> programming interface (API) with a modular, comp<strong>on</strong>ent-based architecture that makes it<br />

simple to fine-tune custom applicati<strong>on</strong>s. It also allows developers to add web servers, e-mail, network<br />

m<str<strong>on</strong>g>an</str<strong>on</strong>g>agement, security, <str<strong>on</strong>g>an</str<strong>on</strong>g>d routing to <strong>the</strong>ir designs. Comp<strong>on</strong>ents are linked in <strong>on</strong>ly if needed, preventing<br />

unused functi<strong>on</strong>s from bloating <strong>the</strong> memory footprint. By leveraging Freescale’s str<strong>on</strong>g network of<br />

partners, Freescale MQX software soluti<strong>on</strong>s easily scale across third-party software <str<strong>on</strong>g>an</str<strong>on</strong>g>d tools such as<br />

security, industrial protocols, <str<strong>on</strong>g>an</str<strong>on</strong>g>d graphical plug-ins.<br />

For more informati<strong>on</strong>, refer to Freescale MQX Real-Time Operating System User’s Guide, MQXUG,<br />

Freescale MQX Real-Time Operating System Reference M<str<strong>on</strong>g>an</str<strong>on</strong>g>ual, MQXRM, or visit<br />

www.freescale.com/mqx.<br />

3.2.2 Freescale MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

The Freescale MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library was created to support <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard in <strong>the</strong> MQX RTOS <str<strong>on</strong>g>an</str<strong>on</strong>g>d to<br />

provide users with <str<strong>on</strong>g>an</str<strong>on</strong>g> easy way to develop <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> applicati<strong>on</strong>s in MQX-based systems. The MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g><br />

library is based <strong>on</strong> <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> protocol software by IXXAT Automati<strong>on</strong> GmbH, adapted for usage<br />

in <strong>the</strong> MQX envir<strong>on</strong>ment.<br />

The IXXAT <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> stack is a full implementati<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g>-2008 st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard with <strong>the</strong><br />

following features:<br />

• Ordinary/boundary clock<br />

• Tr<str<strong>on</strong>g>an</str<strong>on</strong>g>sparent clock<br />

• Unicast messaging<br />

• Best master algorithm<br />

• One step/two step support<br />

• Peer-to-peer <str<strong>on</strong>g>an</str<strong>on</strong>g>d end-to-end delay mech<str<strong>on</strong>g>an</str<strong>on</strong>g>ism<br />

• M<str<strong>on</strong>g>an</str<strong>on</strong>g>agement protocol/interface<br />

• Simple API for interfacing <strong>the</strong> applicati<strong>on</strong><br />

• Runs with <str<strong>on</strong>g>an</str<strong>on</strong>g>d without OS<br />

• Easily adaptable to target hardware, UDP/IP stack <str<strong>on</strong>g>an</str<strong>on</strong>g>d OS<br />

• Optimized filter algorithms for <strong>the</strong> usage in st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard E<strong>the</strong>rnet networks with high bus loads<br />

For more informati<strong>on</strong>, refer to Freescale MQX <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> Communicati<strong>on</strong> Library User’s Guide,<br />

MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>UG.<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor 9


Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

3.2.3 MQX RTCS full-featured TCP/IP stack<br />

Freescale MQX Real-Time TCP/IP Communicati<strong>on</strong> Suite (RTCS) is a fast <str<strong>on</strong>g>an</str<strong>on</strong>g>d low-footprint embedded<br />

internet stack that supports a rich set of st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard protocols that sp<str<strong>on</strong>g>an</str<strong>on</strong>g> from data link to applicati<strong>on</strong> layer<br />

such as FTP, Telnet, DHCP, DNS servers <str<strong>on</strong>g>an</str<strong>on</strong>g>d clients, <str<strong>on</strong>g>an</str<strong>on</strong>g>d SNMP clients. It provides great flexibility<br />

r<str<strong>on</strong>g>an</str<strong>on</strong>g>ging from simple applicati<strong>on</strong> such as E<strong>the</strong>rnet-serial to complex gateway systems. It also allows<br />

developers to add Web servers, e-mail, network m<str<strong>on</strong>g>an</str<strong>on</strong>g>agement, security, <str<strong>on</strong>g>an</str<strong>on</strong>g>d routing to <strong>the</strong>ir designs.<br />

For more informati<strong>on</strong>, refer to Freescale MQX RTCS User’s Guide, MQXRTCSUG.<br />

4 Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

A dem<strong>on</strong>strati<strong>on</strong> applicati<strong>on</strong> has been created to show <strong>the</strong> functi<strong>on</strong>ality <str<strong>on</strong>g>an</str<strong>on</strong>g>d usage of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library.<br />

This demo applicati<strong>on</strong> provides <str<strong>on</strong>g>an</str<strong>on</strong>g> example of how to:<br />

• Set up all parts of <strong>the</strong> applicati<strong>on</strong> including <strong>the</strong> RTCS<br />

• Use <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library<br />

• Implement user-overridable MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>API functi<strong>on</strong>s<br />

• Realize n<strong>on</strong>volatile storage using <strong>the</strong> st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard MQX NAND Flash driver<br />

• Implement <strong>the</strong> user interface for <strong>the</strong> applicati<strong>on</strong> (Shell, Telnet, <str<strong>on</strong>g>an</str<strong>on</strong>g>d HTTP Web Server)<br />

The demo software goes with <strong>the</strong> installati<strong>on</strong> of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<str<strong>on</strong>g>an</str<strong>on</strong>g> be found in <strong>the</strong> demo folder<br />

of <strong>the</strong> mqx<str<strong>on</strong>g>1588</str<strong>on</strong>g>lib software package. The applicati<strong>on</strong> projects c<str<strong>on</strong>g>an</str<strong>on</strong>g> be found in <strong>the</strong> following<br />

subdirectories:<br />

• cwcf72: dedicated for CodeWarrior Development Studio for <strong>ColdFire</strong> Architectures Versi<strong>on</strong> 7.2.x<br />

projects<br />

• cw10: dedicated for CodeWarrior Development Studio for Microc<strong>on</strong>trollers Versi<strong>on</strong> 10.0 projects<br />

Start by opening <strong>the</strong> cwcf72\demo<str<strong>on</strong>g>1588</str<strong>on</strong>g>_two_step_twrmcf54418.mcp project file in CW for CF 7.2 or <strong>the</strong><br />

cw10\demo<str<strong>on</strong>g>1588</str<strong>on</strong>g>_two_step_twrmcf54418\.project file in <strong>the</strong> CodeWarrior 10.0. Both CodeWarrior project<br />

c<strong>on</strong>tains basic three build targets:<br />

• PEBDM Ext Flash Release / OSBDM Ext Flash Release—<strong>the</strong>se targets allow <strong>on</strong>e to build<br />

applicati<strong>on</strong>s suitable for booting <strong>the</strong> system up from external NAND flash memory. After <strong>the</strong> reset<br />

<strong>the</strong> initializati<strong>on</strong> code of <strong>the</strong> applicati<strong>on</strong> loaded from NAND flash memory to SRAM. The<br />

initializati<strong>on</strong> code copies <strong>the</strong> rest of <strong>the</strong> applicati<strong>on</strong> to <strong>the</strong> SDRAM memory <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<strong>on</strong>tinues<br />

executi<strong>on</strong> <strong>the</strong>re. Release targets are suitable for final applicati<strong>on</strong> deployment.<br />

• PEBDM Ext Flash Debug / OSBDM Ext Flash Debug—same as above, <strong>on</strong>ly <strong>the</strong> Debug-compiled<br />

libraries are used. This target is suitable for debugging before deployment. On boards without<br />

external memory, this is <strong>the</strong> <strong>on</strong>ly target suitable for debugging larger applicati<strong>on</strong>s.<br />

• PEBDM Ext Ram Debug / OSBDM Ext Ram Debug—solely for debugging purposes with code<br />

located in external RAM memory (available as SDRAM). Both code <str<strong>on</strong>g>an</str<strong>on</strong>g>d variables are located in<br />

this external memory. Applicati<strong>on</strong> executable is loaded to RAM automatically by <strong>the</strong> debugger.<br />

The applicati<strong>on</strong> requires Freescale MQX 3.6.2 (or later) <str<strong>on</strong>g>an</str<strong>on</strong>g>d TWR-MCF54418 Patch for Freescale<br />

MQX RTOS 3.6.2 to be installed <str<strong>on</strong>g>an</str<strong>on</strong>g>d rebuilt with compile-time c<strong>on</strong>figurati<strong>on</strong> opti<strong>on</strong>s as stated in<br />

Chapter 3 of <strong>the</strong> Freescale MQX <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> Communicati<strong>on</strong> Library User’s Guide.<br />

10<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


4.1 MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library usage<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

The following binary libraries from <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library are used in <strong>the</strong> demo software. Debug versi<strong>on</strong>s<br />

of binary images are used in Debug targets (Ext RAM, Ext flash) <str<strong>on</strong>g>an</str<strong>on</strong>g>d release versi<strong>on</strong> of binary images are<br />

used in <strong>the</strong> external flash memory release targets.<br />

The user-overridable API functi<strong>on</strong>s for <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library are implemented in <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>user.c file.<br />

This file implements two functi<strong>on</strong>s for reading <str<strong>on</strong>g>an</str<strong>on</strong>g>d writing <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> c<strong>on</strong>figurati<strong>on</strong> data to/from <strong>the</strong><br />

n<strong>on</strong>volatile storage (external NAND flash memory) <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>on</strong>e error callback functi<strong>on</strong>.<br />

4.2 MQX tasks list<br />

Table 1. List of binary libraries used from <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library suite<br />

mqx<str<strong>on</strong>g>1588</str<strong>on</strong>g>_comm<strong>on</strong>_two_step_regabi_d.a Debug versi<strong>on</strong> of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_comm<strong>on</strong> library for two-step mode<br />

implementati<strong>on</strong>s<br />

mqx<str<strong>on</strong>g>1588</str<strong>on</strong>g>_comm<strong>on</strong>_two_step_regabi.a Release versi<strong>on</strong> of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_comm<strong>on</strong> library for two-step mode<br />

implementati<strong>on</strong>s<br />

mqx<str<strong>on</strong>g>1588</str<strong>on</strong>g>_macnet_regabi_d.a Debug versi<strong>on</strong> of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_macnet library<br />

mqx<str<strong>on</strong>g>1588</str<strong>on</strong>g>_macnet_regabi.a Release versi<strong>on</strong> of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_macnet library<br />

This secti<strong>on</strong> describes all applicati<strong>on</strong> tasks created with <strong>the</strong> help of <strong>the</strong> MQX RTOS. See Figure 8 for <strong>the</strong><br />

overview of applicati<strong>on</strong> tasks <str<strong>on</strong>g>an</str<strong>on</strong>g>d assigned priorities (<strong>the</strong> higher number, <strong>the</strong> lower <strong>the</strong> task priority).<br />

Shell Task<br />

12<br />

RTCS Task<br />

6<br />

Telnet Srv. Task<br />

8<br />

HTTP Srv. Task<br />

8<br />

PTP Task<br />

7<br />

Shell Log Task<br />

11<br />

Figure 8. Overview of all tasks<br />

Telnet Shell Task<br />

Freescale Semic<strong>on</strong>ductor 11<br />

8<br />

.<br />

.<br />

.


Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

12<br />

• Shell task—<strong>the</strong> <strong>on</strong>ly task with assigned autostart attribute; that is, it is started when MQX starts.<br />

This task runs <strong>the</strong> serial port shell <str<strong>on</strong>g>an</str<strong>on</strong>g>d starts <str<strong>on</strong>g>an</str<strong>on</strong>g>o<strong>the</strong>r applicati<strong>on</strong> tasks, as shown in Figure 8.<br />

• RTCS task—started by <strong>the</strong> Shell task <str<strong>on</strong>g>an</str<strong>on</strong>g>d runs <strong>the</strong> TCP/IP stack.<br />

• Telnet Server task—<strong>on</strong>ce enabled (see Secti<strong>on</strong> 4.5.2, “Telnet c<strong>on</strong>sole“), this task listens <strong>on</strong> a stream<br />

socket. Any time a client initiates a c<strong>on</strong>necti<strong>on</strong>, <strong>the</strong> server creates a new Telnet Shell task <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

redirects <strong>the</strong> new task’s I/O to <strong>the</strong> c<strong>on</strong>nected socket. Comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d processing is d<strong>on</strong>e by <strong>the</strong> specified<br />

shell.<br />

• HTTP Server task—<strong>on</strong>ce enabled (see Secti<strong>on</strong> 4.5.2, “Telnet c<strong>on</strong>sole“), this task h<str<strong>on</strong>g>an</str<strong>on</strong>g>dles,<br />

evaluates, <str<strong>on</strong>g>an</str<strong>on</strong>g>d resp<strong>on</strong>ds to HTTP requests.<br />

• PTPMain task—created by <strong>the</strong> Shell task <str<strong>on</strong>g>an</str<strong>on</strong>g>d runs <strong>the</strong> PTP engine. As <strong>the</strong> evaluati<strong>on</strong> versi<strong>on</strong> of <strong>the</strong><br />

IXXAT <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> stack is provided, <strong>the</strong> PTP engine is automatically stopped 4 hours after <strong>the</strong><br />

MQX start time.<br />

• Telnet Shell task—created by <strong>the</strong> Telnet Server task <str<strong>on</strong>g>an</str<strong>on</strong>g>d runs <strong>the</strong> Telnet shell, similar to <strong>the</strong> shell<br />

<strong>on</strong> <strong>the</strong> serial port.<br />

• Shell Log task—created ei<strong>the</strong>r by <strong>the</strong> Shell task when <strong>the</strong> serial line shell comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d “show <strong>on</strong>” is<br />

applied, or by <strong>the</strong> Telnet Server task when <strong>the</strong> Telnet shell comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d “show <strong>on</strong>” is applied. The<br />

Shell Log task prints log data (actual <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> time, offset to master, master-to-slave delay,<br />

slave-to-master delay, <strong>on</strong>e-way delay, drift) <strong>on</strong>ce per sec<strong>on</strong>d, to ei<strong>the</strong>r <strong>the</strong> serial c<strong>on</strong>sole or <strong>the</strong><br />

Telnet c<strong>on</strong>sole.<br />

4.3 N<strong>on</strong>volatile storage<br />

With <strong>the</strong> excepti<strong>on</strong> of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> c<strong>on</strong>figurati<strong>on</strong> data, which relates to <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library, <strong>the</strong> user<br />

c<str<strong>on</strong>g>an</str<strong>on</strong>g> specify o<strong>the</strong>r applicati<strong>on</strong> data to be stored in <strong>the</strong> external NAND flash memory. The following<br />

applicati<strong>on</strong>-specific structure is defined in <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO.h file:<br />

typedef struct<br />

{<br />

MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_CONFIG lib<str<strong>on</strong>g>1588</str<strong>on</strong>g>_cfg;<br />

boole<str<strong>on</strong>g>an</str<strong>on</strong>g> autorun;<br />

uint_32 checksum;<br />

} MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO_CONFIG, _PTR_ MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO_CONFIG_PTR;<br />

lib<str<strong>on</strong>g>1588</str<strong>on</strong>g>_cfg<br />

This is <strong>the</strong> c<strong>on</strong>figurati<strong>on</strong> structure of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library <str<strong>on</strong>g>an</str<strong>on</strong>g>d its c<strong>on</strong>tent is vital for proper <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g><br />

stack functi<strong>on</strong>ality. It includes <strong>the</strong> PTP low-level library-specific parameters, network c<strong>on</strong>figurati<strong>on</strong><br />

parameters, <str<strong>on</strong>g>an</str<strong>on</strong>g>d MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library-specific parameters. See <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library documentati<strong>on</strong> for<br />

more details about this structure. The MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_ReadC<strong>on</strong>fig() <str<strong>on</strong>g>an</str<strong>on</strong>g>d MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_WriteC<strong>on</strong>fig()<br />

user-overridable functi<strong>on</strong>s are dedicated for reading out <str<strong>on</strong>g>an</str<strong>on</strong>g>d writing into this structure.<br />

autorun<br />

This enables <strong>the</strong> automatic resumpti<strong>on</strong> of <strong>the</strong> PTPMain task after its creati<strong>on</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d thus starts <strong>the</strong> clock<br />

synchr<strong>on</strong>izati<strong>on</strong> process after <strong>the</strong> board reset without <str<strong>on</strong>g>an</str<strong>on</strong>g>y user interventi<strong>on</strong>.<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


checksum<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

This 32-bit checksum field is required to maintain <str<strong>on</strong>g>an</str<strong>on</strong>g>d verify MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO_CONFIG structure<br />

integrity in <strong>the</strong> flash memory.<br />

The default_MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMOCfg structure of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO_CONFIG type is defined in <strong>the</strong> ptp_cfg.h file.<br />

This structure is saved in <strong>the</strong> external NAND flash memory <strong>on</strong>ce <strong>the</strong> applicati<strong>on</strong> is started for <strong>the</strong> first time<br />

or <strong>on</strong>ce <strong>the</strong> checksum of <strong>the</strong> c<strong>on</strong>figurati<strong>on</strong> structure saved in <strong>the</strong> NAND Flash memory is invalid. The user<br />

c<str<strong>on</strong>g>an</str<strong>on</strong>g> modify this default c<strong>on</strong>figurati<strong>on</strong> structure before project compilati<strong>on</strong>.<br />

Applicati<strong>on</strong>-specific functi<strong>on</strong>s MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO_ReadC<strong>on</strong>fig() <str<strong>on</strong>g>an</str<strong>on</strong>g>d MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO_WriteC<strong>on</strong>fig()<br />

that access <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO_CONFIG structure saved in <strong>the</strong> NAND flash memory are implemented<br />

in <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO.c file. These functi<strong>on</strong>s are used by <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library API functi<strong>on</strong>s<br />

MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_ReadC<strong>on</strong>fig() <str<strong>on</strong>g>an</str<strong>on</strong>g>d MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>_WriteC<strong>on</strong>fig() each time <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> c<strong>on</strong>figurati<strong>on</strong> data<br />

reading or writing is requested.<br />

4.4 Timestamping<br />

The timestamping capability of <strong>the</strong> <strong>MCF5441x</strong> 10/100Mbps E<strong>the</strong>rnet MAC-NET module allows <strong>the</strong><br />

precise timestamping of incoming <str<strong>on</strong>g>an</str<strong>on</strong>g>d outgoing frames. This module incorporates <str<strong>on</strong>g>an</str<strong>on</strong>g> adjustable timer<br />

module which implements a free running 32-bit counter. Through dedicated correcti<strong>on</strong> logic, <strong>the</strong> timer c<str<strong>on</strong>g>an</str<strong>on</strong>g><br />

be adjusted to allow synchr<strong>on</strong>izati<strong>on</strong> to a remote master <str<strong>on</strong>g>an</str<strong>on</strong>g>d provide a synchr<strong>on</strong>ized timing reference for<br />

<strong>the</strong> local system. The timer c<str<strong>on</strong>g>an</str<strong>on</strong>g> be c<strong>on</strong>figured to cause <str<strong>on</strong>g>an</str<strong>on</strong>g> interrupt after a fixed time period to allow <strong>the</strong><br />

synchr<strong>on</strong>izati<strong>on</strong> of software timers or to perform o<strong>the</strong>r synchr<strong>on</strong>ized system functi<strong>on</strong>s.<br />

When a PTP frame is received, <strong>the</strong> MAC latches <strong>the</strong> value of <strong>the</strong> timer when <strong>the</strong> frame’s Start Frame<br />

Delimiter (SFD) field is detected <str<strong>on</strong>g>an</str<strong>on</strong>g>d provides <strong>the</strong> captured timestamp <strong>on</strong> <strong>the</strong> Rx buffer descriptor. This is<br />

d<strong>on</strong>e for all received frames.<br />

When tr<str<strong>on</strong>g>an</str<strong>on</strong>g>smitting, <strong>the</strong> client driver (MAC-NET driver) should detect <str<strong>on</strong>g>1588</str<strong>on</strong>g> event frames <str<strong>on</strong>g>an</str<strong>on</strong>g>d indicate in<br />

<strong>the</strong> Tx buffer descriptor that <strong>the</strong> frame has to be timestamped. Afterwards, <strong>the</strong> MAC module records <strong>the</strong><br />

timestamp for <strong>the</strong> frame in <strong>the</strong> dedicated register <str<strong>on</strong>g>an</str<strong>on</strong>g>d generates <str<strong>on</strong>g>an</str<strong>on</strong>g> interrupt to indicate that <strong>the</strong> new Tx<br />

timestamp is available.<br />

Detailed descripti<strong>on</strong> of <strong>the</strong> timestamping capabilities of <strong>the</strong> MAC-NET peripheral module c<str<strong>on</strong>g>an</str<strong>on</strong>g> be found in<br />

<strong>the</strong> <strong>MCF5441x</strong> Reference M<str<strong>on</strong>g>an</str<strong>on</strong>g>ual, MCF54418RM.<br />

4.5 User interface<br />

The Freescale MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library-based <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> demo applicati<strong>on</strong> for <strong>ColdFire</strong> <strong>MCF5441x</strong> c<str<strong>on</strong>g>an</str<strong>on</strong>g> be<br />

interfaced by:<br />

• Serial line c<strong>on</strong>sole<br />

• Telnet c<strong>on</strong>sole<br />

• HTTP web server<br />

• IXXAT PTPM<str<strong>on</strong>g>an</str<strong>on</strong>g>ager<br />

The following compile-time c<strong>on</strong>figurati<strong>on</strong> opti<strong>on</strong>s must be set in <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO.h in order to enable<br />

<strong>the</strong> Telnet server <str<strong>on</strong>g>an</str<strong>on</strong>g>d HTTP web server in <strong>the</strong> applicati<strong>on</strong>.<br />

Freescale Semic<strong>on</strong>ductor 13


Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

4.5.1 Serial line c<strong>on</strong>sole<br />

14<br />

Table 2. Compile time c<strong>on</strong>figurati<strong>on</strong> opti<strong>on</strong>s of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

Opti<strong>on</strong> Value<br />

MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMOCFG_ENABLE_WEBSERVER 1<br />

MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMOCFG_ENABLE_TELNET_SERVER 1<br />

The MQX shell library is a part of MQX <str<strong>on</strong>g>an</str<strong>on</strong>g>d allows you to execute comm<str<strong>on</strong>g>an</str<strong>on</strong>g>ds <strong>on</strong> <strong>the</strong> target system ei<strong>the</strong>r<br />

through <strong>the</strong> serial line or <strong>the</strong> Telnet client. In additi<strong>on</strong> to <strong>the</strong> st<str<strong>on</strong>g>an</str<strong>on</strong>g>dard shell utilities, <strong>the</strong> user c<str<strong>on</strong>g>an</str<strong>on</strong>g> add o<strong>the</strong>r<br />

comm<str<strong>on</strong>g>an</str<strong>on</strong>g>ds to <strong>the</strong> shell. These c<str<strong>on</strong>g>an</str<strong>on</strong>g> be useful for setting up applicati<strong>on</strong> parameters, m<strong>on</strong>itoring <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<strong>on</strong>trol<br />

of <strong>the</strong> PTP engine. The list of embedded shell comm<str<strong>on</strong>g>an</str<strong>on</strong>g>ds defined for <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo applicati<strong>on</strong> is<br />

summarized in Table 3.<br />

Table 3. Embedded shell comm<str<strong>on</strong>g>an</str<strong>on</strong>g>ds overview<br />

Comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d Functi<strong>on</strong>ality<br />

exit Usage — exit<br />

Exits <strong>the</strong> shell.<br />

ptp Usage — ptp [<strong>on</strong>|off]<br />

<strong>on</strong> – starts <strong>the</strong> IXXAT <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> engine<br />

off – stops <strong>the</strong> IXXAT <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> engine<br />

ptpdisplay Usage — ptpdisplay <br />

Selects what <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> specific runtime data will be printed out when show comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

executed.<br />

Opti<strong>on</strong>s:<br />

offs – actual offset to master (unfiltered/filtered)<br />

mtsd – actual master-to-slave delay (unfiltered/filtered)<br />

stmd – actual slave-to-master delay (unfiltered/filtered)<br />

owd – actual <strong>on</strong>e-way delay (unfiltered/filtered)<br />

me<str<strong>on</strong>g>an</str<strong>on</strong>g>Drft – actual drift [psec/sec] between Slave <str<strong>on</strong>g>an</str<strong>on</strong>g>d Master<br />

gmstraddr – actual gr<str<strong>on</strong>g>an</str<strong>on</strong>g>d master address<br />

mstraddr – actual master address<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


Table 3. Embedded shell comm<str<strong>on</strong>g>an</str<strong>on</strong>g>ds overview (c<strong>on</strong>tinued)<br />

Comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d Functi<strong>on</strong>ality<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

cfgparam Usage — cfgparam [ ]<br />

Enables to ch<str<strong>on</strong>g>an</str<strong>on</strong>g>ge PTP engine c<strong>on</strong>figurati<strong>on</strong> parameters <str<strong>on</strong>g>an</str<strong>on</strong>g>d network c<strong>on</strong>figurati<strong>on</strong><br />

parameters. Ch<str<strong>on</strong>g>an</str<strong>on</strong>g>ged values are saved in <strong>the</strong> n<strong>on</strong>volatile storage <str<strong>on</strong>g>an</str<strong>on</strong>g>d applies after <strong>the</strong><br />

reset.<br />

Opti<strong>on</strong>s:<br />

clkClass – clock class of local clock<br />

scldVar – log2 of scaled vari<str<strong>on</strong>g>an</str<strong>on</strong>g>ce of local clock<br />

prio1 – clock priority 1 of local clock<br />

prio2 – clock priority 2 of local clock<br />

domNmb – domain number attribute of local clock<br />

slaveOnly – 0 = slave <strong>on</strong>ly, 1 = slave or master<br />

dlrqIntv – log2 of delay request interval<br />

AnncIntv – log2 of <str<strong>on</strong>g>an</str<strong>on</strong>g>nounce interval<br />

<str<strong>on</strong>g>an</str<strong>on</strong>g>ncRcptTmo – <str<strong>on</strong>g>an</str<strong>on</strong>g>nounce receipt timeout<br />

syncIntv – log2 of sync interval<br />

pdelReqIntv – log2 of pdelay request interval<br />

ip_addrX – IP address of <strong>the</strong> interface X<br />

ip_netmaskX – IP netmask of <strong>the</strong> interface X<br />

ip_gatewayX – IP gateway of <strong>the</strong> interface X<br />

mac_addrX – MAC address of <strong>the</strong> interface X<br />

autorun – <strong>on</strong>|off<br />

netstat Usage — netstat<br />

Displays <strong>the</strong> TCP/IP statistics.<br />

show Usage — show <br />

Displays actual <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> time <str<strong>on</strong>g>an</str<strong>on</strong>g>d o<strong>the</strong>r <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> specific runtime data as selected<br />

by <strong>the</strong> ptpdisplay shell comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d.<br />

Opti<strong>on</strong>s:<br />

<strong>on</strong> – starts regular display of current time & actual offset (<strong>on</strong>ce per sec<strong>on</strong>d)<br />

off – stops regular display of current time & actual offset<br />

help Usage — help []<br />

= comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d to get help <strong>on</strong><br />

To set up <strong>the</strong> serial line shell, which serves as a default user interface, c<strong>on</strong>nect your PC <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> UART<br />

socket of <strong>the</strong> TWR-SER2 serial board with <strong>the</strong> RS232 cable. The following parameters of <strong>the</strong> serial port<br />

must be set in order to establish <strong>the</strong> c<strong>on</strong>necti<strong>on</strong>:<br />

• Baud rate: 115200<br />

• Data bits: 8<br />

• Parity: n<strong>on</strong>e<br />

• Stop bit: 1<br />

• Flow c<strong>on</strong>trol: n<strong>on</strong>e<br />

The Shell task is started automatically after <strong>the</strong> reset. Figure 9 shows <strong>the</strong> welcome message of <strong>the</strong> shell<br />

<str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d prompt that displays after reset.<br />

Freescale Semic<strong>on</strong>ductor 15


Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

4.5.2 Telnet c<strong>on</strong>sole<br />

16<br />

Figure 9. Serial line shell<br />

The MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMOCFG_ENABLE_TELNET_SERVER compile-time c<strong>on</strong>figurati<strong>on</strong> opti<strong>on</strong>s must be set in <strong>the</strong><br />

MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>DEMO.h in order to enable <strong>the</strong> Telnet server in <strong>the</strong> applicati<strong>on</strong> (see Table 2).<br />

While using <strong>the</strong> Telnet c<strong>on</strong>sole, <strong>the</strong> embedded comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d shell is accessible after <strong>the</strong> communicati<strong>on</strong> with<br />

<strong>the</strong> TWR-MCF54418-KIT is established. This is d<strong>on</strong>e by entering <strong>the</strong> comm<str<strong>on</strong>g>an</str<strong>on</strong>g>d open into <strong>the</strong> user preferred Telnet Client. A set of Telnet shell comm<str<strong>on</strong>g>an</str<strong>on</strong>g>ds is <strong>the</strong> same as for <strong>the</strong> serial<br />

line shell, see Table 3.<br />

4.5.3 HTTP web server<br />

Figure 10. Telnet c<strong>on</strong>sole<br />

The Hypertext Tr<str<strong>on</strong>g>an</str<strong>on</strong>g>sfer Protocol (HTTP) server is <strong>on</strong>e of <strong>the</strong> MQX RTCS comp<strong>on</strong>ents. It is comprised of<br />

a simple web server that h<str<strong>on</strong>g>an</str<strong>on</strong>g>dles, evaluates, <str<strong>on</strong>g>an</str<strong>on</strong>g>d resp<strong>on</strong>ds to HTTP requests <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<str<strong>on</strong>g>an</str<strong>on</strong>g> be used as a GUI for<br />

<strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo applicati<strong>on</strong>. Once enabled by <strong>the</strong> compile time c<strong>on</strong>figurati<strong>on</strong> opti<strong>on</strong> (see Table 2), it<br />

allows <strong>the</strong> implementati<strong>on</strong> of a web server with support for dynamically generated web pages. Comm<strong>on</strong><br />

Gateway Interface (CGI) callback functi<strong>on</strong>s are registered with <strong>the</strong> HTTP server by <strong>the</strong> applicati<strong>on</strong>. These<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

functi<strong>on</strong>s are called back from <strong>the</strong> HTTP server when <strong>the</strong> client requests that <strong>the</strong> assigned CGI file be<br />

retrieved (for example http://169.254.3.3/data<str<strong>on</strong>g>1588</str<strong>on</strong>g>.cgi).<br />

The c<strong>on</strong>tent of all applicati<strong>on</strong> web pages is stored in <strong>the</strong> flash memory <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<str<strong>on</strong>g>an</str<strong>on</strong>g> be accessible from <str<strong>on</strong>g>an</str<strong>on</strong>g>y web<br />

browser by applying <strong>the</strong> target E<strong>the</strong>rnet port IP address. The default IP addresses of <strong>the</strong> board<br />

are169.254.3.3. for port0 <str<strong>on</strong>g>an</str<strong>on</strong>g>d 169.254.3.4. for port1.<br />

After navigating to <strong>the</strong> device IP address, <strong>the</strong> browser window displays a web server welcome page with<br />

a user menu <strong>on</strong> <strong>the</strong> left side. You c<str<strong>on</strong>g>an</str<strong>on</strong>g> click <strong>on</strong> <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> Data menu item to see <strong>the</strong> course of <strong>the</strong> actual<br />

clock offset, as in Figure 11. The following selected PTP stack variables are displayed <strong>on</strong> this page:<br />

• Actual time (s)<br />

• Actual offset (ns)<br />

• One-way delay (ns)<br />

• Master-to-slave delay (ns)<br />

• Slave-to-master delay (ns)<br />

• Gr<str<strong>on</strong>g>an</str<strong>on</strong>g>dMaster address<br />

• Master address<br />

This page also allows <strong>the</strong> start or stop of <strong>the</strong> PTP engine by clicking <strong>on</strong> <strong>the</strong> respective butt<strong>on</strong>.<br />

NOTE<br />

The pages c<strong>on</strong>tain binary ActiveX graph comp<strong>on</strong>ent to visualize time<br />

differences. You may need to add <strong>the</strong> device IP address to your list of trusted<br />

sites to enable automatic installati<strong>on</strong> of this comp<strong>on</strong>ent.<br />

Freescale Semic<strong>on</strong>ductor 17


Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

18<br />

Figure 11. “<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> Data” page of <strong>the</strong> demo applicati<strong>on</strong><br />

Ano<strong>the</strong>r import<str<strong>on</strong>g>an</str<strong>on</strong>g>t menu item is <strong>the</strong> Settings attribute, which has several submenus:<br />

• <str<strong>on</strong>g>1588</str<strong>on</strong>g> Stack Settings—enables a ch<str<strong>on</strong>g>an</str<strong>on</strong>g>ge of <strong>the</strong> c<strong>on</strong>figurati<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>1588</str<strong>on</strong>g> protocol software specific<br />

data (see Figure 12). The data c<str<strong>on</strong>g>an</str<strong>on</strong>g> be ch<str<strong>on</strong>g>an</str<strong>on</strong>g>ged during runtime <str<strong>on</strong>g>an</str<strong>on</strong>g>d is stored in <strong>the</strong> n<strong>on</strong>volatile<br />

memory to be restored after device reset.<br />

• Network Settings—enables a ch<str<strong>on</strong>g>an</str<strong>on</strong>g>ge of <strong>the</strong> basic network parameters, such as <strong>the</strong> MAC address,<br />

IP address, Gateway, <str<strong>on</strong>g>an</str<strong>on</strong>g>d Netmask (see Figure 13). These parameters are saved in <strong>the</strong> n<strong>on</strong>volatile<br />

memory <str<strong>on</strong>g>an</str<strong>on</strong>g>d applied after <strong>the</strong> device reset.<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

Figure 12. “<str<strong>on</strong>g>1588</str<strong>on</strong>g> Stack Settings” page of <strong>the</strong> demo applicati<strong>on</strong><br />

Freescale Semic<strong>on</strong>ductor 19


Detailed descripti<strong>on</strong> of <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo software<br />

4.5.4 IXXAT PTPM<str<strong>on</strong>g>an</str<strong>on</strong>g>ager<br />

20<br />

Figure 13. “Network Settings” page of <strong>the</strong> demo applicati<strong>on</strong><br />

Ano<strong>the</strong>r possibility for accessing <strong>the</strong> running <str<strong>on</strong>g>1588</str<strong>on</strong>g> demo applicati<strong>on</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d m<strong>on</strong>itoring <strong>the</strong> <str<strong>on</strong>g>1588</str<strong>on</strong>g><br />

communicati<strong>on</strong> between each node in <strong>the</strong> network is <strong>the</strong> IXXAT PTPM<str<strong>on</strong>g>an</str<strong>on</strong>g>ager. It allows you to m<strong>on</strong>itor all<br />

<str<strong>on</strong>g>1588</str<strong>on</strong>g> nodes within <strong>the</strong> network <str<strong>on</strong>g>an</str<strong>on</strong>g>d to use <strong>the</strong> PTP m<str<strong>on</strong>g>an</str<strong>on</strong>g>agement messages to get/set different <str<strong>on</strong>g>1588</str<strong>on</strong>g>node<br />

parameters. This way, <strong>the</strong> offset between <strong>the</strong> master node <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> slave node c<str<strong>on</strong>g>an</str<strong>on</strong>g> be captured <str<strong>on</strong>g>an</str<strong>on</strong>g>d displayed<br />

graphically. This PC applicati<strong>on</strong> c<str<strong>on</strong>g>an</str<strong>on</strong>g> be downloaded from <strong>the</strong> IXXAT webpages.<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


5 <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

Figure 14. IXXAT PTPM<str<strong>on</strong>g>an</str<strong>on</strong>g>ager<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

This secti<strong>on</strong> describes how to build <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo using <strong>the</strong> TWR-MCF54418-KIT <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> demo<br />

software of <strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> library.<br />

5.1 Hardware setup <str<strong>on</strong>g>an</str<strong>on</strong>g>d jumper settings<br />

The following parts of <strong>the</strong> TWR-MCF54418-KIT must be used <str<strong>on</strong>g>an</str<strong>on</strong>g>d c<strong>on</strong>nected each o<strong>the</strong>r to build a correct<br />

hardware setup (see Figure 15).<br />

• TWR-MCF54418 Rev. D processor board<br />

• TWR-SER2 Rev. C serial board<br />

• TWR-ELEV primary <str<strong>on</strong>g>an</str<strong>on</strong>g>d sec<strong>on</strong>dary—four-story elevator boards<br />

Freescale Semic<strong>on</strong>ductor 21


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

22<br />

Figure 15. Correct TWR-MCF54418-KIT setup<br />

As described in TWR-MCF54418 Patch for Freescale MQX RTOS 3.6.2 Release Notes, Chapter 6, <strong>the</strong><br />

following jumper settings have to be checked to ensure correct functi<strong>on</strong>ality of <strong>the</strong> demo:<br />

Table 4. TWR-MCF54418 Rev. D board jumper settings<br />

J2 <strong>on</strong> positi<strong>on</strong> 1-2 Input Clock Selecti<strong>on</strong><br />

1-2 external clock (RMII reference clock from TWR-SER2 board)<br />

2-3 <strong>on</strong>board 25MHz clock<br />

J8 <strong>on</strong> positi<strong>on</strong> 1-2 TCK/PSTCLK Routing:<br />

1-2 PSCCLK routed to pin 24 of BDM header J11<br />

2-3 PSTCLK routed to pin 6 of BDM header J11<br />

J6 <strong>on</strong> positi<strong>on</strong> 1-2 To enable PE micro debugger<br />

J5 <strong>on</strong> positi<strong>on</strong> 3-4 Boot Mode Selecti<strong>on</strong><br />

1-2 & 3-4 Internal RCON<br />

3-4 External RCON<br />

No Jumper Serial Boot<br />

J4 no jumper 8 Ohm speaker c<strong>on</strong>nector<br />

J10 no jumper IRQ active at high level<br />

J12 no jumper MCU Reset In<br />

SW4 Both off<br />

SW1 1-<strong>on</strong>, 2-off, 3-<strong>on</strong>, 4-off, 5-off, 6-<strong>on</strong>, 7-<strong>on</strong>, 8-<strong>on</strong> (booting from NAND)<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


Table 5. TWR-SER2 Rev. C board jumper settings<br />

J1 <strong>on</strong> positi<strong>on</strong> 2-3 RS232/485 RX Select (UART1)<br />

1-2 RS485 Mode (c<strong>on</strong>nects RX to RO)<br />

2-3 RS232 Mode (c<strong>on</strong>nects RX to R1OUT)<br />

J2 <strong>on</strong> positi<strong>on</strong> 2-3 RS232/485 TX Select (UART1)<br />

1-2 RS485 Mode (c<strong>on</strong>nects TX to DI)<br />

2-3 RS232 Mode (c<strong>on</strong>nects TX to T1IN)<br />

J4 no jumper C<str<strong>on</strong>g>an</str<strong>on</strong>g> Isolati<strong>on</strong><br />

1-2 C<strong>on</strong>nects CAN_S to S<br />

3-4 C<strong>on</strong>nects CAN_TX to TXD<br />

5-6 C<strong>on</strong>nects CAN_RX to RXD<br />

J7 <strong>on</strong> positi<strong>on</strong>s 1-2, 3-4 JS16 RS232 Isolati<strong>on</strong> (UART0)<br />

1-2 C<strong>on</strong>nects RX to S08JS16 RXD<br />

3-4 C<strong>on</strong>nects TX to S08JS16 TXD<br />

J8 no jumper Power Down Port B<br />

1-2 Disables E<strong>the</strong>rnet PHY B<br />

J9 no jumper Power Down Port A<br />

1-2 Disables E<strong>the</strong>rnet PHY A<br />

J11 no jumper RS485 C<strong>on</strong>fig (UART1)<br />

1-2 Loopback Mode (c<strong>on</strong>nects RE to DE)<br />

3-4 Loopback Mode (c<strong>on</strong>nects TX0_P to RX0_P)<br />

5-6 Loopback Mode (c<strong>on</strong>nects TX0_N to RX0_N)<br />

7-8 NC<br />

9-10 5V Supply to DB9<br />

J13 <strong>on</strong> positi<strong>on</strong> 1-2 RS232/485 Disable (UART 1)<br />

1-2 Disables RS485<br />

2-3 Disables RS232<br />

J16 no jumper VBUS OC Isolati<strong>on</strong><br />

1-2 C<strong>on</strong>nects USB VBUS OC to Elevator<br />

J19 no jumper UART2 C<strong>on</strong>nector<br />

J20 no jumper UART3 C<strong>on</strong>nector<br />

J21 no jumper VBUS EN Isolati<strong>on</strong><br />

1-2 C<strong>on</strong>nects USB VBUS EN to Elevator<br />

J22 no jumper RS232 (UART2) Isolati<strong>on</strong><br />

1-2 C<strong>on</strong>nects TX to T1IN<br />

3-4 C<strong>on</strong>nects RX to R1OUT<br />

5-6 C<strong>on</strong>nects RTS to T2IN<br />

7-8 C<strong>on</strong>nect CTS to R2OUT<br />

J23 no jumper RS232 (UART3) Isolati<strong>on</strong><br />

1-2 C<strong>on</strong>nects TX to T1IN<br />

3-4 C<strong>on</strong>nects RX to R1OUT<br />

5-6 C<strong>on</strong>nects RTS to T2IN<br />

7-8 C<strong>on</strong>nect CTS to R2OUT<br />

J24 no jumper USB Device Mode<br />

1-2 Device Mode (capable of powering Tower System)<br />

SW1 1-<strong>on</strong> ,2-<strong>on</strong> (MII MODE pull-up, RXDV) 3,4,5,6,7,8 off<br />

SW2 1-<strong>on</strong>, 3-<strong>on</strong> (MII MODE pull-up, 50MHz) 2,4,5,6,7,8 off<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

Freescale Semic<strong>on</strong>ductor 23


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

The demo c<str<strong>on</strong>g>an</str<strong>on</strong>g> be c<strong>on</strong>figured in a back-to-back (point-to-point) c<strong>on</strong>figurati<strong>on</strong> where two boards are<br />

c<strong>on</strong>nected directly using <strong>the</strong> crossover E<strong>the</strong>rnet cable. It deals with a simple type of c<strong>on</strong>necti<strong>on</strong> often used<br />

for evaluating <strong>the</strong> system accuracy <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> overall perform<str<strong>on</strong>g>an</str<strong>on</strong>g>ce. The back-to-back c<strong>on</strong>figurati<strong>on</strong> using two<br />

TWR-MCF54418-KITs is illustrated in Figure 16. The applicati<strong>on</strong> c<str<strong>on</strong>g>an</str<strong>on</strong>g> be interfaced by <strong>the</strong> serial c<strong>on</strong>sole<br />

or by <strong>the</strong> Telnet c<strong>on</strong>sole or by <strong>the</strong> web browser or by <strong>the</strong> IXXAT PTPM<str<strong>on</strong>g>an</str<strong>on</strong>g>ager. The user c<str<strong>on</strong>g>an</str<strong>on</strong>g> also m<strong>on</strong>itor<br />

<strong>the</strong> <str<strong>on</strong>g>1588</str<strong>on</strong>g> communicati<strong>on</strong> using <str<strong>on</strong>g>an</str<strong>on</strong>g>y network protocol <str<strong>on</strong>g>an</str<strong>on</strong>g>alyzer (WireShark).<br />

Figure 17 shows <str<strong>on</strong>g>an</str<strong>on</strong>g>o<strong>the</strong>r demo c<strong>on</strong>cept which c<strong>on</strong>sists of two or more TWR-MCF54418-KITs. This way<br />

Boundary Clock functi<strong>on</strong>ality c<str<strong>on</strong>g>an</str<strong>on</strong>g> be dem<strong>on</strong>strated. The slave node c<str<strong>on</strong>g>an</str<strong>on</strong>g> be interfaced by <strong>the</strong> serial c<strong>on</strong>sole<br />

or by <strong>the</strong> Telnet c<strong>on</strong>sole or by <strong>the</strong> Internet Explorer web browser or by <strong>the</strong> IXXAT PTPM<str<strong>on</strong>g>an</str<strong>on</strong>g>ager. When <str<strong>on</strong>g>an</str<strong>on</strong>g><br />

E<strong>the</strong>rnet switch is inserted between nodes <strong>the</strong> user c<str<strong>on</strong>g>an</str<strong>on</strong>g> also m<strong>on</strong>itor <strong>the</strong> <str<strong>on</strong>g>1588</str<strong>on</strong>g> communicati<strong>on</strong> between<br />

<strong>the</strong>se <str<strong>on</strong>g>1588</str<strong>on</strong>g> nodes using <str<strong>on</strong>g>an</str<strong>on</strong>g>y network protocol <str<strong>on</strong>g>an</str<strong>on</strong>g>alyzer (WireShark).<br />

The hardware setting in Figure 17 also allows dem<strong>on</strong>strating <strong>the</strong> Boundary Clock functi<strong>on</strong>ality, however<br />

<strong>the</strong> MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g>library has to be rebuilt with this opti<strong>on</strong>/c<strong>on</strong>figurati<strong>on</strong> switched <strong>on</strong> first. Note that this c<str<strong>on</strong>g>an</str<strong>on</strong>g><br />

be d<strong>on</strong>e after obtaining <strong>the</strong> full licensed versi<strong>on</strong> from IXXAT.<br />

Ano<strong>the</strong>r Freescale evaluati<strong>on</strong> boards with <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> support c<str<strong>on</strong>g>an</str<strong>on</strong>g> be involved in <strong>the</strong> demo to enlarge<br />

<strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> network. The following <strong>ColdFire</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d PowerQUICC boards c<str<strong>on</strong>g>an</str<strong>on</strong>g> be incorporated:<br />

• <strong>ColdFire</strong> M5234BCC<br />

• <strong>ColdFire</strong> M52259EVB<br />

• PowerQUICC MPC8360MDS<br />

• PowerQUICC MPC8313E-RDB<br />

• i.MX28 Evaluati<strong>on</strong> Kit<br />

Visit www.freescale.com. for updated informati<strong>on</strong> about Freescale platforms with <strong>the</strong> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> support.<br />

24<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


Figure 16. Back-to-back c<strong>on</strong>figurati<strong>on</strong> of <strong>the</strong> demo<br />

Figure 17. Demo extended to include multiple <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> nodes<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

Freescale Semic<strong>on</strong>ductor 25


<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

5.2 Measuring <strong>the</strong> clock synchr<strong>on</strong>icity<br />

To measure <strong>the</strong> synchr<strong>on</strong>icity of <strong>the</strong> clocks, <strong>the</strong> MCF54418 provides <str<strong>on</strong>g>an</str<strong>on</strong>g> opti<strong>on</strong> for generating a<br />

pulse-per-sec<strong>on</strong>d (PPS) signal. This signal is generated directly from <strong>the</strong> <str<strong>on</strong>g>1588</str<strong>on</strong>g> timer <str<strong>on</strong>g>an</str<strong>on</strong>g>d is routed to <strong>the</strong><br />

GPIO PD0 pin (signal name T1IN/PWM_EXTA1/T1OUT/SDHC_DAT1/ GPIOD0/RGPIO). This GPIO<br />

pin is routed to <strong>the</strong> J8-34 (J8-33) pin <strong>on</strong> <strong>the</strong> primary TWR-ELEV board of <strong>the</strong> tower system.<br />

To measure <str<strong>on</strong>g>an</str<strong>on</strong>g>d compare PPS signals from different boards, attach <strong>the</strong> oscilloscope probe to <strong>the</strong> J8-34<br />

(J8-33) pin of <strong>the</strong> primary TWR-ELEV board. Figure 19 illustrates clock synchr<strong>on</strong>icity measurement<br />

using <strong>the</strong> oscilloscope.<br />

To measure <strong>the</strong> clock synchr<strong>on</strong>izati<strong>on</strong> accuracy, a test was performed between two TWR-MCF54418-KITs<br />

c<strong>on</strong>nected back-to-back. Table 6 summarizes <strong>the</strong> c<strong>on</strong>figurati<strong>on</strong> of <strong>the</strong> IXXAT <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> stack used for<br />

testing:<br />

26<br />

Table 6. <str<strong>on</strong>g>1588</str<strong>on</strong>g> stack c<strong>on</strong>figurati<strong>on</strong> for clock synchr<strong>on</strong>izati<strong>on</strong> accuracy Testing<br />

<str<strong>on</strong>g>1588</str<strong>on</strong>g> c<strong>on</strong>figurati<strong>on</strong> Assigned value<br />

Clock basic type Boundary Clock<br />

Delay request mech<str<strong>on</strong>g>an</str<strong>on</strong>g>ism End-to-End<br />

One-step mode False<br />

Announce message interval 2 sec<strong>on</strong>ds<br />

Sync message interval 0.25 sec<strong>on</strong>ds<br />

Delay request interval 0.25 sec<strong>on</strong>ds<br />

Used filter Minimum filter<br />

Filter window length 6<br />

Measurement period 0.5 hours<br />

The results of <strong>the</strong> clock synchr<strong>on</strong>izati<strong>on</strong> accuracy test are provided below, see Table 7.<br />

Table 7. Clock synchr<strong>on</strong>izati<strong>on</strong> accuracy test results<br />

Average clock offset –2.18 ns<br />

St<str<strong>on</strong>g>an</str<strong>on</strong>g>dard deviati<strong>on</strong> 13.88 ns<br />

Peak-to-peak r<str<strong>on</strong>g>an</str<strong>on</strong>g>ge –62ns to +62 ns<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


Master<br />

Slave<br />

Master<br />

Slave<br />

Figure 18. Oscilloscope screen shot—measuring <strong>the</strong> clock synchr<strong>on</strong>icity (PPS)<br />

Figure 19. Oscilloscope screen shot—detail of <strong>the</strong> PPS signal edges<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

<str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> demo<br />

Freescale Semic<strong>on</strong>ductor 27


C<strong>on</strong>clusi<strong>on</strong><br />

6 C<strong>on</strong>clusi<strong>on</strong><br />

This applicati<strong>on</strong> note describes <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> Precisi<strong>on</strong> Time Protocol demo applicati<strong>on</strong> that targets <strong>the</strong><br />

<strong>MCF5441x</strong> <strong>ColdFire</strong> processor <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> TWR-MCF54418-KIT. The applicati<strong>on</strong> software runs under <strong>the</strong><br />

Freescale MQX RTOS <str<strong>on</strong>g>an</str<strong>on</strong>g>d uses <strong>the</strong> MQX RTCS TCP/IP stack <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> Freescale MQX<str<strong>on</strong>g>1588</str<strong>on</strong>g> Library for<br />

quick <str<strong>on</strong>g>IEEE</str<strong>on</strong>g><str<strong>on</strong>g>1588</str<strong>on</strong>g> applicati<strong>on</strong> development. This soluti<strong>on</strong> c<str<strong>on</strong>g>an</str<strong>on</strong>g> be easily ported to o<strong>the</strong>r processors from <strong>the</strong><br />

<strong>ColdFire</strong> family with <strong>the</strong> MQX <str<strong>on</strong>g>an</str<strong>on</strong>g>d RTCS support.<br />

The demo system c<str<strong>on</strong>g>an</str<strong>on</strong>g> be targeted to applicati<strong>on</strong>s that require precise clock synchr<strong>on</strong>izati<strong>on</strong> between<br />

devices with accuracy in <strong>the</strong> sub-microsec<strong>on</strong>d r<str<strong>on</strong>g>an</str<strong>on</strong>g>ge. Typical applicati<strong>on</strong>s include industrial network<br />

switches, time-sensitive telecommunicati<strong>on</strong> services, powerline networks, <str<strong>on</strong>g>an</str<strong>on</strong>g>d test/measurement devices.<br />

For more informati<strong>on</strong> <str<strong>on</strong>g>an</str<strong>on</strong>g>d updates go to www.freescale.com.<br />

28<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor


THIS PAGE IS INTENTIONALLY BLANK<br />

<str<strong>on</strong>g>Implementing</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>IEEE</str<strong>on</strong>g> <str<strong>on</strong>g>1588</str<strong>on</strong>g> <str<strong>on</strong>g>V2</str<strong>on</strong>g> <str<strong>on</strong>g>Node</str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> MCF5441X, Rev. 0<br />

Freescale Semic<strong>on</strong>ductor 29


How to Reach Us:<br />

Home Page:<br />

www.freescale.com<br />

Web Support:<br />

http://www.freescale.com/support<br />

USA/Europe or Locati<strong>on</strong>s Not Listed:<br />

Freescale Semic<strong>on</strong>ductor, Inc.<br />

Technical Informati<strong>on</strong> Center, EL516<br />

2100 East Elliot Road<br />

Tempe, Ariz<strong>on</strong>a 85284<br />

+1-800-521-6274 or +1-480-768-2130<br />

www.freescale.com/support<br />

Europe, Middle East, <str<strong>on</strong>g>an</str<strong>on</strong>g>d Africa:<br />

Freescale Halbleiter Deutschl<str<strong>on</strong>g>an</str<strong>on</strong>g>d GmbH<br />

Technical Informati<strong>on</strong> Center<br />

Schatzbogen 7<br />

81829 Muenchen, Germ<str<strong>on</strong>g>an</str<strong>on</strong>g>y<br />

+44 1296 380 456 (English)<br />

+46 8 52200080 (English)<br />

+49 89 92103 559 (Germ<str<strong>on</strong>g>an</str<strong>on</strong>g>)<br />

+33 1 69 35 48 48 (French)<br />

www.freescale.com/support<br />

Jap<str<strong>on</strong>g>an</str<strong>on</strong>g>:<br />

Freescale Semic<strong>on</strong>ductor Jap<str<strong>on</strong>g>an</str<strong>on</strong>g> Ltd.<br />

Headquarters<br />

ARCO Tower 15F<br />

1-8-1, Shimo-Meguro, Meguro-ku,<br />

Tokyo 153-0064<br />

Jap<str<strong>on</strong>g>an</str<strong>on</strong>g><br />

0120 191014 or +81 3 5437 9125<br />

support.jap<str<strong>on</strong>g>an</str<strong>on</strong>g>@freescale.com<br />

Asia/Pacific:<br />

Freescale Semic<strong>on</strong>ductor China Ltd.<br />

Exch<str<strong>on</strong>g>an</str<strong>on</strong>g>ge Building 23F<br />

No. 118 Ji<str<strong>on</strong>g>an</str<strong>on</strong>g>guo Road<br />

Chaoy<str<strong>on</strong>g>an</str<strong>on</strong>g>g District<br />

Beijing 100022<br />

China<br />

+86 10 5879 8000<br />

support.asia@freescale.com<br />

For Literature Requests Only:<br />

Freescale Semic<strong>on</strong>ductor Literature Distributi<strong>on</strong> Center<br />

1-800-441-2447 or 303-675-2140<br />

Fax: 303-675-2150<br />

LDCForFreescaleSemic<strong>on</strong>ductor@hibbertgroup.com<br />

Document Number: AN4273<br />

Rev. 0<br />

08/2011<br />

Informati<strong>on</strong> in this document is provided solely to enable system <str<strong>on</strong>g>an</str<strong>on</strong>g>d software<br />

implementers to use Freescale Semic<strong>on</strong>ductor products. There are no express or<br />

implied copyright licenses gr<str<strong>on</strong>g>an</str<strong>on</strong>g>ted hereunder to design or fabricate <str<strong>on</strong>g>an</str<strong>on</strong>g>y integrated<br />

circuits or integrated circuits based <strong>on</strong> <strong>the</strong> informati<strong>on</strong> in this document.<br />

Freescale Semic<strong>on</strong>ductor reserves <strong>the</strong> right to make ch<str<strong>on</strong>g>an</str<strong>on</strong>g>ges without fur<strong>the</strong>r notice to<br />

<str<strong>on</strong>g>an</str<strong>on</strong>g>y products herein. Freescale Semic<strong>on</strong>ductor makes no warr<str<strong>on</strong>g>an</str<strong>on</strong>g>ty, representati<strong>on</strong> or<br />

guar<str<strong>on</strong>g>an</str<strong>on</strong>g>tee regarding <strong>the</strong> suitability of its products for <str<strong>on</strong>g>an</str<strong>on</strong>g>y particular purpose, nor does<br />

Freescale Semic<strong>on</strong>ductor assume <str<strong>on</strong>g>an</str<strong>on</strong>g>y liability arising out of <strong>the</strong> applicati<strong>on</strong> or use of <str<strong>on</strong>g>an</str<strong>on</strong>g>y<br />

product or circuit, <str<strong>on</strong>g>an</str<strong>on</strong>g>d specifically disclaims <str<strong>on</strong>g>an</str<strong>on</strong>g>y <str<strong>on</strong>g>an</str<strong>on</strong>g>d all liability, including without<br />

limitati<strong>on</strong> c<strong>on</strong>sequential or incidental damages. “Typical” parameters that may be<br />

provided in Freescale Semic<strong>on</strong>ductor data sheets <str<strong>on</strong>g>an</str<strong>on</strong>g>d/or specificati<strong>on</strong>s c<str<strong>on</strong>g>an</str<strong>on</strong>g> <str<strong>on</strong>g>an</str<strong>on</strong>g>d do vary<br />

in different applicati<strong>on</strong>s <str<strong>on</strong>g>an</str<strong>on</strong>g>d actual perform<str<strong>on</strong>g>an</str<strong>on</strong>g>ce may vary over time. All operating<br />

parameters, including “Typicals”, must be validated for each customer applicati<strong>on</strong> by<br />

customer’s technical experts. Freescale Semic<strong>on</strong>ductor does not c<strong>on</strong>vey <str<strong>on</strong>g>an</str<strong>on</strong>g>y license<br />

under its patent rights nor <strong>the</strong> rights of o<strong>the</strong>rs. Freescale Semic<strong>on</strong>ductor products are<br />

not designed, intended, or authorized for use as comp<strong>on</strong>ents in systems intended for<br />

surgical impl<str<strong>on</strong>g>an</str<strong>on</strong>g>t into <strong>the</strong> body, or o<strong>the</strong>r applicati<strong>on</strong>s intended to support or sustain life,<br />

or for <str<strong>on</strong>g>an</str<strong>on</strong>g>y o<strong>the</strong>r applicati<strong>on</strong> in which <strong>the</strong> failure of <strong>the</strong> Freescale Semic<strong>on</strong>ductor product<br />

could create a situati<strong>on</strong> where pers<strong>on</strong>al injury or death may occur. Should Buyer<br />

purchase or use Freescale Semic<strong>on</strong>ductor products for <str<strong>on</strong>g>an</str<strong>on</strong>g>y such unintended or<br />

unauthorized applicati<strong>on</strong>, Buyer shall indemnify <str<strong>on</strong>g>an</str<strong>on</strong>g>d hold Freescale Semic<strong>on</strong>ductor <str<strong>on</strong>g>an</str<strong>on</strong>g>d<br />

its officers, employees, subsidiaries, affiliates, <str<strong>on</strong>g>an</str<strong>on</strong>g>d distributors harmless against all<br />

claims, costs, damages, <str<strong>on</strong>g>an</str<strong>on</strong>g>d expenses, <str<strong>on</strong>g>an</str<strong>on</strong>g>d reas<strong>on</strong>able attorney fees arising out of,<br />

directly or indirectly, <str<strong>on</strong>g>an</str<strong>on</strong>g>y claim of pers<strong>on</strong>al injury or death associated with such<br />

unintended or unauthorized use, even if such claim alleges that Freescale<br />

Semic<strong>on</strong>ductor was negligent regarding <strong>the</strong> design or m<str<strong>on</strong>g>an</str<strong>on</strong>g>ufacture of <strong>the</strong> part.<br />

For informati<strong>on</strong> <strong>on</strong> Freescale’s Envir<strong>on</strong>mental Products program, go to<br />

http://www.freescale.com/epp.<br />

Freescale <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> Freescale logo are trademarks of Freescale Semic<strong>on</strong>ductor, Inc.<br />

All o<strong>the</strong>r product or service names are <strong>the</strong> property of <strong>the</strong>ir respective owners.<br />

The Power Architecture <str<strong>on</strong>g>an</str<strong>on</strong>g>d Power.org word marks <str<strong>on</strong>g>an</str<strong>on</strong>g>d <strong>the</strong> Power <str<strong>on</strong>g>an</str<strong>on</strong>g>d Power.org logos<br />

<str<strong>on</strong>g>an</str<strong>on</strong>g>d related marks are trademarks <str<strong>on</strong>g>an</str<strong>on</strong>g>d service marks licensed by Power.org<br />

© Freescale Semic<strong>on</strong>ductor, Inc. 2011. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!