How To: Get started with IPv6 for MQX RTOS TCP/IP Stack

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How To: Get started with IPv6 for MQX RTOS TCP/IP Stack

How To: Get started with IPv6 for MQX RTOS TCP/IP Stack

Are you ready for IPv6?

The worldwide transition to IPv6 networking is in progress.  Many governments and organizations have already mandated IPv6.  Are your connected products going to be ready?

If you need a full-featured traditional host stack with Ipv6 support, Freescale MQX software has a solution for you.  You can even run Ipv4 and Ipv6 at the same time to ease the transition.

Check out www.freescale.com/mqx/ipv6 for details and documentation.


How to get IPv6?

Purchase the add-on at the link above (evaluation available – see below).  The MQX TCP/IP stack (RTCS) supports IPv6 with this optional add-on patch.  Purchasing the add-on gets you all the source code and a year of basic support.


How to Evaluate MQX IPv6?

Freescale offers a 90-day evaluation of a pre-compiled library for a single low-cost Freescale development platform and toolchain.  In the future, evaluation versions are planned for a broader list of development platforms and toolchains.

To evaluate MQX IPv6 today, you will need:

  • MQX RTOS v4.1.1
  • FRDM-K64F, Freescale Freedom Development Platform for Kinetis K64
  • IAR Embedded Workbench® for ARM® v7.10.3

Note: Although the evaluation only covers a single board and toolchain, MQX RTCS with IPv6 source code can be purchased for ALL Freescale MCUs and tool-chains supported by MQX RTCS.

If you need an evaluation library to support a different board or tool-chain, let me know!

Step-By-Step Instructions

1. Obtain a FRDM-K64F Freedom development module from Freescale or a Freescale-authorized distributor (Details at www.freescale.com/frdm-k64f).

image001.png

2. Plug in the USB cable for the debug connection and the Ethernet cable for the network connection between the board and your computer.

3. Download IAR for ARM® v7.10.3 or later (30-day evaluation available at www.iar.com).

4. Install MQX RTOS 4.1.1 (Available at www.freescale.com/mqxrtos).

5. Now get the evaluation package.  Go to www.freescale.com/mqx/ipv6.

6. Click the Download button, or download tab

image002.png

7. Click IPv6 for MQX RTOS TCP/IP Stack (90-Day Binary Evaluation)

image003.png

8. Read the software license agreement.  If it works for you, click I Accept.

9. After you accept, the zip file (e.g. Freescale_MQX_4_1_1_IP6_EVAL.zip) will download.

After it downloads, extract the files to the root directory of the MQX 4.1.1 installation (a.k.a. <Freescale_MQX_4_1> directory).  The default for Windows is C:\Freescale\Freescale_MQX_4_1\.

Note: The package does not overwrite or corrupt any MQX files.  It just adds new ones.

10. Open the readme file readme_ip6_eval.txt. The steps in this guide are listed there also.

11. Build the BSP, PSP, RTCS, MFS, and SHELL libraries for FRDM-K64F

  a. Open IAR Embedded Workbench

  b. Go to File…Open…Workspace.  Browse to <Freescale_MQX_4_1>\build\frdmk64f\iar

  c. Open build_libs.eww

image004.png

12. Got to ProjectBatch Build…  (or press F8)

Choose Debug

Note, if you are trying to achieve the smallest code size, choose Release instead.

Click Make

image005.png

Note: Even though this evaluation provides separate pre-compiled RTCS and SHELL libraries enabled with IPv6. Building RTCS and SHELL is needed to copy over RTCS header files into the appropriate \lib\ folder, which is referenced by application projects.

    Wait for the libraries to finish building.


13.  Now, open an example project that has already been configured to use the special Ipv6-enabled rtcs and shell libraries that come with the evaluation.

           Available example projects:

HTTP Server example

RTCS Shell example

For this tutorial, I will show the HTTP Server example.


     Select Project...Add Existing Project... and browse to

<Freescale_MQX_4_1>\rtcs\examples\httpsrv\build\iar\httpsrv_ip6_frdmk64f

image006.png

14. Double click on the project name httpsrv_frdmk64f

image007.png

Note: If you chose the Release option in the library builds:

Right click on the dropdown box above the project explorer and select the Int Flash Release.  Otherwise chose Int Flash Debug, which is the default.

image008.png

15. Choose Project… Make (or press F7) to build the project

16. Open the terminal program of your choice.

Choose the COM port for the virtual serial connection provided by the board.  Choose 115200 baud.

17. Now, back in IAR. Choose Project…Download and Debug.

Wait for it to download to the target and bring up the debug session.  Then click Go.

image009.png

You should see this in the terminal:

Starting http server No.0 on IP 192.168.1.202 and fe80::200:5eff:fea8:1ca...[OK]

Shell (build: Oct 13 2014)

Copyright (c) 2013 Freescale Semiconductor;

shell>

shell>

18. Type help to see a list of other commands like ipconfig and ping.

Windows includes IPv6 support already.  No configuration necessary.  Your computer will already have an auto-configured link-local Ipv6 address.

19. Now open a web browser

20. Type in the Ipv6 address of the board surrounded by brackets [fe80::200:5eff:fea8:1ca].  The webpage served by the board should appear.

image010.png

21. You’re done.  You can now try out the shell example or use the Ipv6 evaluation library to evaluate it in your own application.  See below.

Want to evaluate IPv6 in other applications?

It’s easy.

1. In linker options of a user application project, replace the rtcs.a library by rtcs_ip6.a, and the shell.a library by shell_ip6.a

2. In C/C++ compiler preprocessor of a user application project, add defined symbol "RTCSCFG_ENABLE_IP6=1".

3. After that, the application is able to communicate over RTCS IPv6 communication.

Best of Luck!

Post any comments or feedback you have.

Mac

Comments

Hi Mac.

It would be nice to see what the flash and RAM usage is for IPV4 vs IPV6 vs dual stack.

Good point!  IPv6 is only a a 1-2 kB (flash) bigger than IPv4.  But when you run dual stack (IPv4 + IPv6) it does Not double the code size because they share common features.   

The flash memory requirements look roughly like this:

IPv4 with ARP, ICMP,UDP, Sockets enabled:  ~27k 

IPv6 with ICMPv6, UDP, Sockets: ~28k

IPv4+IPv6 with ARP, ICMP/ICMPv6, UDP, Sockets: ~41k

If you add TCP, it increases it about ~14-15k.

For RAM, Ipv6 takes just ~100 bytes extra for global data.  I don't have solid numbers on the heap, but I believe it is similar.

Thanks,
Mac

Hello,

I need an example that has a button in the HTML page by sending a command to the microconntrolador and getting an answer.

I use the MQX4.0 with MK60DN512

Thanks.

Samuel

No ratings
Version history
Last update:
‎03-16-2015 09:28 AM
Updated by: