MSC8144ADS Net_Multicore Demo

Showing results for 
Search instead for 
Did you mean: 

MSC8144ADS Net_Multicore Demo

Contributor II


I am trying to get the net_multicore demo to run on a msc8144ADS board using the Eclipse based CodeWarrior v10.1.

I have followed the Setup instructions as per the Net_Demo_Readme.txt with no luck.  The problem seems to be in the auto negotiation (miiAutoNegotiation()) the call to:

static void adsMiiWait(volatile unsigned long count)


#pragma opt_level = "O0"

    while(count--) ;


never finishes, I think this is because initEtherPhyPilot() sets the following values:

mii_info.wait_param  = 400000;/* Modified by ZRP 11/10/2010 according to net_mii.h from 400000 to 2000 (2 sec.);*/

mii_info.max_wait_cycles = 4000000; /* Modified by ZRP 11/10/2010 according to net_mii.h from 4000000 to 6 (6 * 2 sec. = 12 sec. total wait, way longer than necessary);*/


as you can see I have played with these values in the ads_support drivers, this causes the routine to finish, but the auto negotiation doesn't seem to ever work.

I have a few questions about my setup:

1.) The instructions say "1b. On 8144ADS rev. PILOT, SW2.8 has to be changed to RGMII (ON)." is this documented anywhere the MSC8144ADS Ref. Manual says 2.8 is reserved?

2.) "NOTE         This demo requires that pin MUX6 work. It cannot configured by external dip-switches only." - what is MUX6, is this documented anywhere?

3.) "2.   Burn the file eeprom_pin_mux6.img into the EEPROM." I have modified the i2c demo to write the following to the eeprom:

const uint8_t eeprom_pin_mux6[40] = {0xaa, 0x55, 0xaa, 0xff,

                                    0xff, 0xff, 0x00, 0x1f,

                                    0x18, 0x00, 0xff, 0xff,

                                    0xff, 0x01, 0x6c, 0x18,

                                    0x18, 0x00, 0xff, 0xff,

                                    0xff, 0xff, 0xff, 0xff,

                                    0xde, 0xad, 0xbe, 0xef,

                                    0xde, 0xad, 0xbe, 0xef,

                                    0xde, 0xad, 0xbe, 0xef,

                                    0xff, 0xff, 0xff, 0xff};

i2cEepromWrite(i2c_device, devAddr, memAddr, eeprom_pin_mux6, 40);

      a.) Is there a better/easier way to burn an image to the eeprom?

      b.) Do I have to worry about byte swapping any of the above values before writing them to the EEPROM, those values were taken from "eeprom_pin_mux6.img" but after looking at the MSC8144 Reference Manual some of the values don't make sense

4.) Is there anything else I'm missing?

Note: I seem to be able to boot from the EEPROM, and the link light for Port D on the 8144ADS comes on, it goes off during the auto negotiation.



Labels (1)
Tags (1)
0 Kudos
3 Replies

Contributor IV

Hello ZRP,


Most common failures in the net_demo happen due to NIC connectivity or PIN_MUX.

What kind of NIC are you connected to to test this?

Speed?  (Needs to be a gigabit NIC to work on the 8144 net_multicore demo w/o modification).

Is there a link light?


As per your questions:

1. If you have a PILOT board, yes, you have to set RGMII to on via sw2.8.  This is shown in the MSC8144ADS Users Guide - Rev B. You may be looking at older documentation. 


2. & 3.

The pin mux is a value programmed into the RCWHR register, which it appears you have ready to burn to the I2CROM from your post above. Refer to the MSC8144 Reference Manual, section 5.3.2 (RCWHR) for more information.


CodeWarrior provides an I2C Burner application in the following folder:

<CW SC v10.x Install>\SC\StarCore_Support\I2CBoot\MSC8144

This includes readme documents on how to burn the I2CROM.


Once you've burned the I2CROM, make sure you have RCW_SRC set to read the I2C ROM (RCW_src=010).




One more thing to note is - after you have burned the I2CROM, repower the board and you can check the value of your RCWLR and RCWHR by connecting to CodeWarrior, starting the debugger, and then click:

Window -> Show View -> Registers.
Search for Reset registers - RCWHR.



0 Kudos

Contributor I

Hello Andrew,


there is a i2cboot.exe utility but the flags (at least the -c, -r which are relevant) that it provides do not correspond to the format of eeprom_pin_mux6.img. I have tried both actually every time i try to run i get a osHwiDMMUError after some time. Also when checking the rcwlr and rcwhr the contents seem to be not the ones that I would expect. 


What is the correct way to transform the eeprom_pin_mux6.img to data.txt that burner application requires? (or any other way to make the net project work correctly).



0 Kudos

Contributor IV

Hello nmitas,


The correct way to update the i2crom is shown in the ReadMe.txt and How To.doc located in the following folders:

<CW Install Dir>\SC\StarCore_Support\I2CBoot\ 

<CW Install Dir>\StarCore_Support\I2CBoot\MSC815x-MSC825x  


In the case of the eeprom_pin_mux6.img, use these values and place them in the

\I2CBoot\MSC815x-MSC825x\EEPROM_image_builder\SC3850_rcw.cfg in place of the current values (using the same # format).

This sort of work is all outlined in the MSC8144's Configuration Guide (the basic idea is the same for MSC8144 and 56): AN3424.




0 Kudos