Embedded Connectivity
Intel network controllers, Firmware, and drivers support systems
881 Discussions

Bringing up flash on a custom I350AM4 design.

E-Matt
Novice
2,246 Views

I am attempting to bring up a new custom design with an I350AM4 on it.   

I am using a machine with RHEL 7.9.

The design shows up with lspci as:

04:00.0 Ethernet controller: Intel Corporation Device 151f (rev 01)
04:00.1 Ethernet controller: Intel Corporation Device 151f (rev 01)
04:00.2 Ethernet controller: Intel Corporation Device 151f (rev 01)
04:00.3 Ethernet controller: Intel Corporation Device 151f (rev 01)

However, I have not been able to program the on board flash.  After installing the latest drivers (igb-5.5.2), I downloaded the Preboot_26.3 and attempted to use the bootutil64e utility and provided boot image (BootIMG.FLB) but it tells me that the Flash is not present.  I know a flash device is attached to the Flash interface on the I350.  The overall design is based the reference design schematic provided by Intel and I verified the pin-outs of both the 17X17mm package I350 and both my Flash and EEPROM.

Did I need the flash device to have an image on it before it was soldered onto the board?  Did I miss something such as a pullup on some other pin to indicate that flash is present or is it able to discover that on it's own?

0 Kudos
7 Replies
Caguicla_Intel
Moderator
2,218 Views

Hello E-Matt,


Thank you for posting in Intel Ethernet Communities. 


Since your query involves customization, please be informed that this will be best answered by our Embedded Connectivity Support team. We will help you to move this post to the designated team for further assistance. 


Please feel free to contact us if you need assistance from Ethernet support team.


Best regards,

Crisselle C.

Intel® Customer Support


0 Kudos
CarlosAM_INTEL
Moderator
2,200 Views

Hello, @E-Matt:

Thank you for contacting Intel Embedded Community.

We want to address the following questions to understand the reported situation:

Could you please clarify if the device related to this situation has been designed by you or by a third-party company?

Could you please let us know the part number, name of the manufacturer, and where to find the information related to the affected project?

Could you please list the source that you used to develop the design associated with the mentioned Ethernet Controller and if it has been verified by Intel?

We are waiting for your answer to these questions.

Best regards,

@CarlosAM_INTEL.

0 Kudos
E-Matt
Novice
2,187 Views

Hello @CarlosAM_INTEL:

 

This device was designed by me at our company.

There is not a part number or documentation that I can share as all the information is ITAR restricted and can't be shared on an open forum.  However I can say the design was manufactured by us using the I350AM4 17X17mm part and that the connectivity is very similar to the reference design in Documentation ID# 323852.

The schematic documentation used to develop the board was downloaded from the intel website at: Intel Ethernet Controller I350 Documentation # 323852  as well as the datasheet at Document ID # 333171 and Document ID # 333066 .  

The device has not be verified by Intel since it is ITAR restricted.  Extra steps would need to be taken for any design files to be able to be transferred to Intel for evaluation.

 

Thanks,

E-Matt

 

0 Kudos
E-Matt
Novice
2,155 Views

Update:

I have written an EEPROM utility that programs the on the board EEPROM via the memory mapped PCIe EEC register.  I have programmed it with the "Non-Volatile Memory Map EEPROM" as described in the I350 datasheet chapter 6.  The device is now recognized as an I350 device instead of the non-eeprom device (ID 151F).  However it still does not recognize the flash memory which is also attached.  I have set the PCIe Control 2 register (described in section 6.2.27) to a value of 0x1C4D, (0001_1100_0100_1101b)  which should set the flash size at 4Mbyte and enable the Flash BAR.  Is there another register I am missing or do I need to write an initial image to the flash as well in order to get it to be recognized by the bootutil64e flash utility?

 

Thanks,

E-Matt

0 Kudos
Stefan-Pixida
Beginner
284 Views

Hi E-Matt,

could you share your utility? I have basically the same issue.

BR & Thanks

Stefan

0 Kudos
E-Matt
Novice
212 Views

I would love to, but where I work everything we do is considered ITAR restricted.  This unfortunately means I can't just put files in a forum as they could be downloaded by someone outside of the US resulting in an export control violation for which I would be criminally liable for. 

To finish out from where I stopped, I also ended up writing a flash read/write utility using the PCIe bar as well in order to get the flash working.  From there I was able to use a pre existing Intel board to get a flash image that I could then program onto my boards.  I used a repository at https://github.com/billfarrow/pcimem as a base to understand how to read/write using a PCIe bar but had to create the EEPROM memory by hand as a C library and created the read/write functionality as a library as well using the datasheet chapters 6 and 8 respectively as a guide.  I wish Intel would create a programming utility for the initial bring up of their devices in third party designs over PCIe as this is certainly a issue with using the I350.  I also ran into the same issue with a design using the X550, except in that case you have to pre-program the flash with an image before putting it on the board, otherwise it won't even show up as a PCIe device.  If you have the resources you could also buy an intel card with an I350 installed, remove the flash part from the board, pull the image off of it and use an external programmer or depending on what your expected production quantity is you could also just use the flash from the intel board directly onto your prototype if you used a footprint/pin out compatible device.  A brute force method of getting a prototype working, but effective.

Stefan-Pixida
Beginner
195 Views

Hi E-Matt,

thanks for the detailed answer. I tried using a intel card with an i350 and using this EEPROM as a reference but was not successful. Maybe the EEPROM was damaged during desoldering...

Thank you for your recommendations, then I might have to dig deeper into the EEPROM memory assignment as it looks like. I will try my best, what I don't understand is why Intel does not just hand out the EEPROM tool together with a valid image...

BR

Stefan

0 Kudos
Reply