35 Replies Latest reply on Jun 26, 2017 9:07 AM by Carlos_A

    Programming i210 Blank Flash w/ EEUPDATE & LANConf

    Jason.Bean Green Belt

      Greetings,

       

      I have a new design that includes my prototype baseboard which has an i210-it and a Qseven CoM that includes an E3815 Atom and an i210. I'm following the directions from document 513655 to program the blank flash for my baseboard's i210. Running EEUPDATE shows my two i210 controllers (one working, and one blank). Using both EEUPDATE & LANConf to attempt to program the blank flash results in a timeout error that occurs after 5+ minutes of the tool claiming that it is writing to flash.

      LANCOnf gives the following: c86a0004 - "Timeout Error" when programming i210 blank flash

       

      I'm using the following versions on an Intel Atom E3815 processor on Ubuntu 16.04.2

      eeupdate64e: EEUPDATE v5.26.17.11

      lanconfig64e: LANConf v1.26.17.11

       

      lshw shows the driver as: driver=igb driverversion=5.3.0-k

       

      I've tried flashing with multiple 4Mb files onto a 4Mb flash On Semi LE25U40CMC

      Below is the eeupdate log:

      _________________________________________________________

      root@ubuntu-serv-slim:/# ./eeupdate64e /NIC=1 /DATA Dev_Start_I210_Copper_NOMNG_4Mb_A2_3.25_0.03.bin

       

      Using: Intel (R) PRO Network Connections SDK v2.26.17

      EEUPDATE v5.26.17.11

      Copyright (C) 1995 - 2015 Intel Corporation

      Intel (R) Confidential and not for general distribution.

       

      Driverless Mode

       

      NIC Bus Dev Fun Vendor-Device  Branding string

      === === === === ============= =================================================

        1   2  00  00   8086-1531    Intel(R) I210 Blank NVM Device

        2   4  00  00   8086-1533    Intel(R) I210 Gigabit Network Connection

       

      Writing SHARED FLASH.  PLEASE DO NOT INTERRUPT THIS PROCESS.

        1:  Shared Flash image update FAILED! Timeout Error

       

      _____________________________________________________

       

      Things I've learned in debugging:

      1) I can program the flash off board and then the I210 is recognized.

      2) After flashing off board, EEUPDATE can reprogram the flash using the same file that timed out originally including update the check sum.

       

      Is there some bit that needs to be set or a flag to allow for programming blank flash? Does is need a MAC address first? I'm sure it's something simple/stupid but any help you can provide is appreciated.

       

      Enjoy,

      Jason

       

      p.s. This was originally posted in "Wire Ethernet" and was requested to move to embedded.

        • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
          Carlos_A Brown Belt

          Hello, Jason.Bean:

           

          Thank you for contacting Intel Embedded Community.

           

          In order to better understand this situation, could you please try to reproduce this situation using one of the Operating Systems listed on page 3 of the Platform Brief: Intel® Atom™ Processor E3800 Product Family and let us know the results in a detailed way?

           

          We really appreciate your cooperation.

           

          Best regards,

          Carlos_A.

          • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
            RobH Green Belt

            Hi Jason.Bean,

             

            I have not seen this problem but i would definitely try loading a MAC address. I have seen issues with eeupdate not behaving as expected without a mac address loaded.

             

            Hope it helps

            RobH

              • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                Jason.Bean Green Belt

                I tried to update the MAC address of the blank Flash an got a "Failed" error. My next step is to boot to a different OS, but I'm curious if anyone has had success with the bit-banging access mentioned in 3.3.1 of the datasheet "For the first programming of a blank Flash, it is the host’s responsibility to remove the write protection from the Flash part via bit-banging access"

                 

                It seems similar to the discussion in:

                Issue's programming FLASH on I210

                I didn't see a solution other than the fact that the tool should be doing the bit-banging already.

                I confirmed that my flash supports all the same OpCodes referenced on pg. 53 of the datasheet.

                  • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                    Carlos_A Brown Belt

                    Hello, Jason.Bean:

                     

                    Could you please tell us if you have tried our last suggestion? In case that your answer is affirmative, please let us know the results.

                     

                    Thanks again for your cooperation to solve this situation.

                     

                    Best regards,

                    Carlos_A.

                      • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                        Jason.Bean Green Belt

                        Carlos,

                         

                        Just got my board back and booted up with Fedora and got identical timeout error. It failed with EEUPDATE and also failed with updating just the MAC address. Any other suggestions?

                         

                        Writing SHARED FLASH.  PLEASE DO NOT INTERRUPT THIS PROCESS.

                          2:  Shared Flash image update FAILED! Timeout Error

                         

                         

                        NIC Bus Dev Fun Vendor-Device  Branding string

                        === === === === ============= =================================================

                          1   4  00  00   8086-1533    Intel(R) I210 Gigabit Network Connection

                          2   2  00  00   8086-1531    Intel(R) I210 Blank NVM Device

                         

                        2: Updating Mac Address to 00209D23C751...Failed!

                         

                        Enjoy,
                        Jason

                  • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                    Jason.Bean Green Belt

                    Additional Results

                     

                    I put the CS, SI, SO, & CLK on the scope during boot up. I see an active CS and SK (at 3.125 MHz). SI stays low the entire time (PD resistor). Sounds like a bug with EEUPDATE that won't work with multiple controllers?? Currently the SI is pulled low, but I've also tried it pulled high. Since it has no problem reading an externally programmed Flash we know that SO is working fine. I know that the SI & PCB are good because EEUPDATE can update a non-blank flash to update MAC and checksum. Guess I'll see what iNVM is capapble of to determine if that option is better than external programming.

                     

                    Thanks,
                    Jason

                      • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                        Jason.Bean Green Belt

                        In an effort to test out the iNVM I tried to program and got the Error code - 0x13 : INVM content can't be merged. I tried the suggested /invmislocked and got the "UNLOCKED" response but still no luck. For fun, I removed the external Flash and get the same results. I still have pin 12 pulled low and am using the stock I210_Invm_Copper_NoAPM_v0.6.txt

                         

                        Any fresh ideas? I've spent months with an 82574L/I210 combo before being told they couldn't work together because of hardware addressing on the SMBus, and now with a pair of I210s it seems that none of the tools want to program a blank device, even when the blank device is the I210's own internal memory.

                         

                         

                        Verify if INVM is locked ... INVM content is UNLOCKED !

                        done.

                        ---------------------------------------------

                         

                        root@# ./eeupdate64e /nic=1 /invmupdate /file=I210_Invm_Copper_NoAPM_v0.6.txt

                         

                        Using: Intel (R) PRO Network Connections SDK v2.26.17

                        EEUPDATE v5.26.17.11

                        Copyright (C) 1995 - 2015 Intel Corporation

                        Intel (R) Confidential and not for general distribution.

                         

                        Driverless Mode

                         

                        NIC Bus Dev Fun Vendor-Device  Branding string

                        === === === === ============= =================================================

                          1   2  00  00   8086-1531    Intel(R) I210 Blank NVM Device

                          2   4  00  00   8086-1533    Intel(R) I210 Gigabit Network Connection

                         

                        Update INVM content ... Verify autoload configuration ...

                                Error code - 0x13 : INVM content can't be merged.

                        NOT done !

                          • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                            AntonN Community Member

                            Hi Jason,

                             

                            Did you install a pull-up to the SO line (i210, pin 14), as stated in the datasheet, before attemting to program the iNVM ?

                             

                            I've successfully used eeupdate to program both an empty external Flash (AT25DF081A-SSH-B) and the iNVM from Linux:

                            - The External flash was kind of a pain in the *** getting programmed. Took me a couple of Days experimenting with different procedures before I found one that consistently worked: I have to first program the template BIN-file + MAC-adreess, then power-cycle the device and re-program only the MAC-address, then reboot the device. Not sure if some other procedure may also work but this is the only way I successfully manage to program empty an extenral Flash.

                             

                            - The iNVM was programmed succesfully at first try! First disconnected the external Flash by removing series resistor from SO, then mounted a pull-up to the SO line, then programmed with the following commands:

                            ./eeupdate32 /nic=1 /invmupdate /file=I210_Invm_Copper_NoAPM_v0.6.txt

                            ./eeupdate32 /nic=1 /mac=AABBCCDDEEFF

                            ...then rebooted the device and - voila!

                             

                            Our board setup seems quite similar to your's (?), having dual I210i Ethernet controllers; one located on a COM-Express Processor Module (I210i Flash pre-programmed by the module manufaturer) and the other located on the motherboard manufactured by us. As a plan-C we also prepared the PCB with test-points to allow programming the external Flash during production using an external SPI programmer (Aardvark or similar) with the I210 chip tri-stated (by pulling DEV_OFF_N pin low) - though this route has not yet been verified, it will require either generating uniquie BIN-files with MAC-address and checksum merged, or flashing only the template binary through test-points then the MAC-address with eeupdate in a later stage. A similar approach could be using JTAG/Baoundary Scan to program external Flash from the I210-controller), though an external SPI-programmer should be much faster considering the amount of data to be flashed.

                             

                            Hope things will work out for you!

                             

                            Regards

                            Anton

                             

                              • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                                Jason.Bean Green Belt

                                Hi Anton,

                                 

                                Great info. I implied from Table 2-1 Pull-Up Resistors that there was an internal pull-up on NVM_SO but I'll add an external and give it a try. I'll try the bin + MAC as well ordering as well. What OS did you use? Did you only try 32-bit or did both 32 & 64 bit work?

                                 

                                Thanks!

                                Jason

                                  • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                                    AntonN Community Member

                                    Hi Jason,

                                     

                                    Yes the documentation is not perfectly clear on the pull-ups. You are right that the datasheet Table 2.1 actually states that an external pull-up is not required but the design checklist states: "If a Flash is not used add a 3.3 KΩ pull-up to NVM_SO(14).". Not sure if it makes a difference but I added it just in case.

                                     

                                    The CPU is an Intel Atom E3826 Dual Core and I'm currently running a custom Yocto BSP, Linux 3.14.4 where only the 32-bit version eeupdate can execute, but I also used the Linux_x64 version with Ubuntu 16.04 and the DOS version from a bootable USB-stick and they all work fine if I remember correct.

                                     

                                    Regards

                                    Anton

                              • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                                Jason.Bean Green Belt

                                Additional results...I finally bit the bullet and erased the Flash and EEPROM of the COTS Qseven I210. To this point all testing was done on my carrier board I210. Rerunning EEUPDATE on the Qseven with blank Flash resulted in the same timeout error. I moved the Qseven to the vendor's development board that has no other Ethernet controllers and got the same timeout error. This debunks my theory that the tool didn't like dual I210s, but makes EEUPDATE look more like the source of the failure, or at least the 64-bit version. I plan to test the 32-bit install when I get my development board back from my coworkers.

                                  • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                                    matt.l.ferraro Community Member

                                    Hi Jason,

                                     

                                    I have had very similar experience to you.  I have a COM Express module with an i210 and my carrier board also has an i210.

                                    I have actually gotten the external flash to program; but not quite sure how.

                                     

                                    it was some combination of running in

                                    - 'driver mode' vs.  'driverless mode'

                                    - running eeupdate64e with .bin file then running directly afterwards the same command string but with the .hex file.

                                    - or maybe running with the .hex file and power cycling

                                     

                                    I did a lot of experimenting, rebooting, power cycling, mucking with lanconf64e

                                    I have a few more boards to process; to see if I can establish a method.

                                     

                                    Maybe Intel can comment on when one should use .hex versus .bin ?

                                     

                                    In my screen shots below i have renamed

                                     

                                    For ease of typing I renamed Dev_Start_I210_Copper_NOMNG_4Mb_A2_3.25_0.03.bin to CTII210.bin

                                     

                                    -Matt

                                    binfile.pnghexfile.png

                                • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                                  Leonardo_saldivar Community Member

                                  Jason,

                                   

                                   

                                  I had the same issue trying to program a blank flash w/eeupdate and what I found is that the driver iqvlinux that I used was not compatible with the kernel.

                                  I tried an old version I had available with the following command:

                                   

                                       insmod iqvlinux.ko

                                   

                                  The old version I had of the iqvlinux solved the problem. Unfortunately, I can't give you more details about the version I tried since I'm an electrical engineer with limited knowledge in SW but I hope this can give you a good hint.

                                   

                                   

                                  Best regards

                                  • Re: Programming i210 Blank Flash w/ EEUPDATE & LANConf
                                    mferraro2 Green Belt

                                    Hello Jason,

                                     

                                    I have finally gotten eeupdate64e to program to boards consistently.

                                    The latest version seems to have fixed the problems I was having.  As well as a 1K pulldown on NVM_SI

                                    It is part of part of 348742_Quartzville_Tools_460903.zip

                                    See below console output below.

                                     

                                    Hope this helps

                                    -Matt

                                     

                                    root@type7ubuntu:/usr/cti/software/intel/OEM_Mfg2# ./eeupdate64e /nic=3 /d CTII210.bin /MAC=000C8B7173FA

                                     

                                    Using: Intel (R) PRO Network Connections SDK v2.29.5

                                    EEUPDATE v5.29.05.02

                                    Copyright (C) 1995 - 2017 Intel Corporation

                                    Intel (R) Confidential and not for general distribution.

                                     

                                     

                                    NIC Bus Dev Fun Vendor-Device  Branding string

                                    === === === === ============= =================================================

                                      1   4  00  00   8086-15AC    Intel(R) Ethernet Connection X552 10 GbE SFP+

                                      2   4  00  01   8086-15AC    Intel(R) Ethernet Connection X552 10 GbE SFP+

                                      3   9  00  00   8086-1531    Intel(R) I210 Blank NVM Device

                                      4  10  00  00   8086-1533    Intel(R) I210 Gigabit Network Connection

                                     

                                     

                                    Writing SHARED FLASH.  PLEASE DO NOT INTERRUPT THIS PROCESS.

                                    3:  Shared Flash image updated successfully.

                                    3: Updating Mac Address to 000C8B7173FA...Done.

                                    3: Updating Checksum and CRCs...Done.