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.

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

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

Saved successfully!

Ooh no, something went wrong!