MSC8156EVM Boot-over-Ethernet

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

MSC8156EVM Boot-over-Ethernet

Jump to solution
3,597 Views
TimeLord86
Contributor I

Hi everyone,

 

I've been attempting to get a boot-over-Ethernet system working. I've enabled the DHCP and TFTP servers, and created the .s files for the boot.

 

However, I am having issues in communicating with the MSC8156EVM board. I set the values of SW2 for the BPRT of the RCWHR to 110 (RGMII1 + I2C), and I would expect the board to send a DHCP discovery packet. So far, however, there is no communication out of the board.

 

Any suggestions or hints at what I'm missing?

 

Cheers.

0 Kudos
1 Solution
2,949 Views
AndrewinApps
Contributor IV

Hi David and Avi,

Based on seeing nothing in the packet sniffer - I would assume that the EE0 pin is set to 1 (leaving the board in debug mode - preventing the device from booting).


Could you confirm the value of this dip switch?

 

If the dips are configured to boot from Ethernet (no I2C), and EE0 is set to 0 (which is ON, as ON==0 in our boards), then as you said, you should see DHCP requests coming in on your sniffer -

assuming that your computer is connected directly to the EVM card via a crossover cable, with your computer set up to a static IP address on that port, with the sniffer monitoring the port in question.

View solution in original post

0 Kudos
38 Replies
1,080 Views
AndrewinApps
Contributor IV

Hello Avi,

For a 6 core application - it's a little more complicated - the master core on the MSC8156 does not have access to the slave cores' M2 memory, so it can't load programs to other cores' M2 - meaning that the download will freeze/get a bus error.

 

It sounds like David has sent in an SR for a boot patch regarding DDR setup. I suggest doing the same for the custom multi-core DMA loader which is needed here.

 

Regards,

-Andrew

0 Kudos
1,080 Views
AviDG
Contributor I

Hey 

 

I noticed that for the MSC8156ADS board there is a DIP Switch in the SW1 on the board that is called  "Boot Patch"....

Does it only a bit that needed to be '1' or '0' ? If thats the case were is it on the EVM board ? How do i configure that Boot Patch  for the ethernet boot file(.srec) so it will be load to the DDR on the board ...

 

Thanks 

 

Avi 

0 Kudos
1,080 Views
TimeLord86
Contributor I

Ah,

 

Now for that I know you need to get the boot patch for the EVM board, and you can only get that by creating a support request. Unfortunately it's not as easy as that on the EVM board as flicking a switch!

 

I'm playing with the boot patch now. I'll let you know how I get on...

 

 

0 Kudos
1,080 Views
AviDG
Contributor I

Hey David 

 

Thanks for the help , I sent you a private message too , please check it and tell me what u think .

 

Avi 

0 Kudos
1,080 Views
AviDG
Contributor I

Hey David,

 

What exactly did you get from freescale when you opened SR?

What is this "Boot Patch" ? Is it changing something with processor boot loader ?

Did they sent you an installation manual with it ?

 

Avi .

 

0 Kudos
1,080 Views
TimeLord86
Contributor I

Hi Avi,

 

My interpretation of what the boot patch is (can't get a definitive answer anywhere) is that it rewrites the boot program in the EEPROM on the board, and I specifically wanted the boot program to initialise the DDR, as well as running boot-over-Ethernet.

 

However, I am also aware that I may be wrong, and in actual fact, it's flashing the EEPROM with a program which only initialises the DDR, then returns to the boot program to run boot-over-Ethernet.

 

Other parties feel free to correct me if I'm wrong!

 

They didn't send me any instructions, although they did tell me the boot patch is for the ADS board. I submitted a separate support request to get some help on boot patch with the EVM, and I got a nice E-mail giving me some help in configuring the boot-patch and getting it ready to flash on the EVM.

0 Kudos
1,080 Views
AviDG
Contributor I

Hey David 

 

Could you please share that Email they send you about the way to configure the boot-patch and getting it ready to flash on the EVM.

 

Thanks 

 

Avi

0 Kudos
1,080 Views
TimeLord86
Contributor I

Open the boot patch project, in boot_load.asm modify the DDR CONFIGURATION part, you can refer to MSC8156_Init.cfg and MSC8156_EVM_Init.cfg by comparing them. The two configuration file located at: C:\Program Files\Freescale\CW SC v10.2.2\SC\StarCore_Support\Initialization_Files\RegisterConfigFiles\MSC8156_ADS and C:\Program Files\Freescale\CW SC v10.2.2\SC\StarCore_Support\Initialization_Files\RegisterConfigFiles\MSC8156_EVM

How to use boot patch:

Open the boot patch project, edit and build, drag the output .eld file to directory "TOOLS_AND_IMAGES".
Edit the required RCW in RCW.cfg file, edit the required MAC address for boot over ETH with I2C support in MAC.txt.
Double click on "Boot_EPROM_from_ELD.bat" to create the I2C EEPROM image. This image needs to be burnt to the EEPROM. (Output file name "CHANGE_MY_NAME.txt")

The "Boot_EPROM_from_ELD.bat" is executing:
I2CBoot.exe -t 1 -r RCW.cfg -c MAC.cfg -m entry_point.txt -e boot_load_patch_ddr.eld > CHANGE_MY_NAME.txt

0 Kudos
1,080 Views
AviDG
Contributor I

Hey David 

 

Thank you, I will let you know how\if it works for me.

 

Avi 

0 Kudos
1,081 Views
AviDG
Contributor I

Hey David 

 

I realized they guide you to use "boot patch project" , well I didn't find such a project in the FreeScale installation folder .

I found other projects that I am assuming doing similar functionality .....

 

Do you have this project ? How do you manage to built this .txt file needed to be burn to the EEPROM ?

 

Thanks 

 

Avi 

0 Kudos
1,081 Views
TimeLord86
Contributor I

Hi Avi,

 

Yes I had to do some funny configuration and project loading to get the project in. I think you have to import it into CodeWarrior using the conversion between whatever freescale used before, and CodeWarrior. Once you start on that p[rocess, you need to open the .mcp (patch.mcp I tihnk it's called), and then that should start the conversion.

 

This should import it into CodeWarrior. The bootpatch produces a .txt file, which you are expected to flash to the EEPROM using the I2C burner in your FreeScale installation folder: "CW SC v10.2\SC\StarCore_Support\I2CBoot\MSC815x-MSC825x". There's a 'how to' document there. It seems to be relatively straight forward but I've not had a go yet. 

 

Just out of curiosity, what did you set your RCWLR and RCWHR values to be?

 

Hope this helps!

 

0 Kudos
1,081 Views
AviDG
Contributor I

Hey David 

 

RCWLR =   0xFF, 0xFF, 0xFF, 0x03, 0x33, 0x00, 0x00

RCWHR=   0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x18, 0x01

 

I produced a .txt file (not a final one but something for this stage) ... BUT I didn't got the way to flash it into EEPROM , I maneged to built the I2C burner project from : "CW SC v10.2\SC\StarCore_Support\I2CBoot\MSC815x-MSC825x" BUT I could not launch it to the EVM board , this project lunch files are for the ADS board . Do you have a clue how to build a lunch file for this project to EVM board ? 

I am working on it and got into a point I need to have a .tcl and .cfg files needed to config the Remote System section under "run configuration" in Eclipse .

 

Thanks 

 

sorry for the late respond - weekend vacation ...

Avi .

0 Kudos
1,080 Views
AviDG
Contributor I

Hey David 

 

An Update :

 

RCWLR =  0xFF, 0xFF, 0xFF, 0x03, 0x33, 0x00, 0x00

RCWHR=  0xFF, 0xFF, 0xFF, 0x04, 0x06, 0x0C, 0x00

 

the 3 0xFF are preambles

So finally your EEPROM (the 0x0000 to 0x0010 address) sould look like this :

 

0xAA, 0x55, 0xAA, 0xFF, 0xFF, 0xFF, 0x03, 0x33, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x04, 0x06, 0x0C, 0x00,

 

hope it helps 

 

Avi 

0 Kudos
1,080 Views
TimeLord86
Contributor I

Hey Avi,

 

When converting from the ADS to the EVM there are a few things that you need to consider:

 

- the ADS has two banks of RAM, as opposed to the EVM which has only one. The linker files need to be adjusted to reflect this. 

- the linker files will also make specific reference to ADS resources. You'll need to change them to be EVM instead.

 

There may be a few other things I've forgotten...

 

R.E. the RCW's, thanks, I have similar, except for the RCWHR.

 

Let me know how you get on. I am still having issues with my normal Boot over Ethernet, in that it part loads, and then freezes. I'm only using a single core program (but compiling a ethernet loadable srec with information for all six cores). The issue is that whilst I can find a small program (2kb), I can't verify it's operation. The smallest ethernet loadable srec that I can build so far is about 224kb, which blows the M2 memory. Any suggestions?

 

 

0 Kudos
1,080 Views
AviDG
Contributor I

Hey David 

 

Did you tried to change the memory init file at the : Menu -> Run -> Debug Configuration-> Remote System  under Edit to the file : " C:\Program Files\Freescale\CW SC v10.2\SC\StarCore_Support\Initialization_Files\MemoryConfigFiles\MSC8156ADS_Memory_Example.mem"  ?

This should  solve your problem ...

Let me know if it helped u 

 

 

Avi 

0 Kudos
1,080 Views
TimeLord86
Contributor I

Yeah, I have that set for all of the cores at startup. Still doesn't make a difference. The difficulty I have is creating a .eld file under 190kb.

 

Did you manage to achieve this? If so, how?

 

 

0 Kudos
1,080 Views
TimeLord86
Contributor I

Hi Andrew,

 

Is there a dedicated freescale website that publishes all of these errata?

 

I installed and used DHCP Turbo, and TFTP Turbo, but the issue remains unfortunately. I suspect that I will need a bootpatch.I'll need it for future development anyway.Despite this though, the file I'm testing with is only 432kb.

 

 

0 Kudos
1,080 Views
TimeLord86
Contributor I

Just as a follow up to my last post,

 

I removed any references to DDR memory and compiled the project in Release Mode.

Then I copied the .eld files generated to another folder, then ran the sc100_elf2xx utility to turn the six eld files into srec's.

After this I used the sc100_srec2xx utility using the -dis_nl tag to remove line breaks, and then set the DHCP server to supply this srec file to the TFTP server.

 

It still timeout's at the same point. It fell apart after data packet block 366.

0 Kudos