Quantcast
Channel: Embedded Community : All Content - All Communities
Viewing all 3140 articles
Browse latest View live

i210 Unused Pins when configuring for 100/10 Mb only

$
0
0

I am using a COM Type 10 module that contains an i210 Ethernet controller. I'm designing a carrier board for this COM module and  I desire to configure the i210 as a 100/10 Mb only controller.

Therefore, the MDI2 and MID3 differential pairs will not be used, only the MDI0/1.  Is it OK to leave these pins unconnected?  If not what is the preferred method for terminating them.

 

Also, with the i210 controller, it is possible to 'turn-off' the gigabit mode and it will be configured as a 100/10 Mb controller.  How is this done?

Is there an external software configuration tool used to do this?  If so, what is the name of this tool?

 

Any help that you can offer would be appreciated.

Thanks

Jim


Atom x5-E8000 i2c

$
0
0

Hello Guys,

 

I'm working with a SMARC Sytem on Module supplied by ADLINK (SMARC Modules,  SMARC Short Size Modules, SMARC Full Size Modules, SMARC Extreme Rugged Versions - ADLINK Technology - A… ), featuring the Atom(TM) x5-E8000 processor.

 

No matter what i try, i cannot make all the I2C busses work (there should be 4, according to the vendor).

 

The i2cdetect gives me the following output

 

i2c-3  i2c      i915 gmbus panel                        I2C adapter
i2c-1  i2c      i915 gmbus ssc                             I2C adapter
i2c-8  i2c      DPDDC-B                        I2C adapter
i2c-6  i2c      i915 gmbus dpd                           I2C adapter
i2c-4  i2c      i915 gmbus dpc                            I2C adapter
i2c-2  i2c      i915 gmbus vga                            I2C adapter
i2c-0  smbus              SMBus I801 adapter at f040    SMBus adapter
i2c-9  i2c      DPDDC-D                        I2C adapter
i2c-7  i2c      DPDDC-C                        I2C adapter
i2c-5  i2c      i915 gmbus dpb                           I2C adapter

 

from what I real those should all be relate to graphic adapters, the processors resources are not listed.

 

After some research i found that those soc feature something called Serial IO, but it's unclear to me if it need to be configured somehow, and if it need a patched linux kernel to work (I tried mainline  4.15 and 4.9).

 

Is there any resource i can look at to understand better?

Is the datasheet of the Atom x5-E8000 available? (I can have an NDA signed if needed).

 

Thanks a lot,

 

Marco

Intel Bluemoon PMB-8763 and Bluetooth vulnerabilities

$
0
0

Hi,

 

This is regarding the vulnerability: CVE-2018-5383 identified recently.

It is understood that the above vulnerability affect all devices with Bluetooth SSP and LE secure connections implementations.

In those lines, we wanted to check if the modules “PMB 8753, PMB 8763, UniStone PBA 31308" which are being used in our solutions are affected. 

Can we know your plan in supporting us resolving the vulnerability if existed?

 

References:

https://www.kb.cert.org/vuls/id/304725

https://securityboulevard.com/2018/07/cve-2018-5383-bluetooth-vulnerability-impacts-apple-intel/

 

Thanks and Regards,

Ravi Teja

Where to Download Flash Image Tool (fitc)?

$
0
0

Hello Embedded Community,

 

I'm developing on a platform based on an Intel Atom z8550 and I am looking to modify the contents of the SPI flash for debugging purposes. I've seen some references to the Flash Image Tool (fitc) in documentation, and I was wondering where I could get access to this tool? Thank you for your help!

 

Best,

Rob

i210 eeupdate64e programming alongside a similar ComExpress solution

$
0
0

I've got a ComExpress carrier board that accommodates a board with either a i210 or i211.

On the carrier board itself, I also have a i210 with its own flash.

 

Programming my own i210 using EEupdate64e works well, specifying bus# and device #. Everything works on the network with both network devices, until I replace the ComExpress board with another new card.

Then it seems that my on-carrier i210 loses its programming, and I need to reprogram the carrier card 's i210 mac address.

I noticed a reference to "shared flash" during the EEupdate64e process.

 

Is the flash program updating a single flash on the ComExpress and not the i210's flash on the carrier?

If so, is Linux and the i210 driver somehow taking the responsibility of doing register setup instead of the power-up flash read, and is there a way to prevent this?

PXA27x Processor failed by temperature

$
0
0

Hello together,

 

we still using the pxa27x processor at 624 MHz in our plattform. We use the RTPXA270C5C624 (stepping C5).

 

Our firmware failes when the surrounding temperature rises.

 

The case temperature of the pxa27x processor is 71°C. When we are cooling down the processor with help of a peltier element, the plattfrom doesn't fail.

 

We apply a VCC_Core Voltage of 1,56V in the regular plattform, which is inside the spec.

 

When i'm increasing the vcc_core voltage to 1,62V, the plattform doesn't fail too, also when no peltier element is build in as a cooling device.

 

So i read  in the Intel PXA27x Processor Developer's Kit, that there was a issue with the vcc_core voltage in the RTPXA270C0C624  processor with the stepping C0.

 

Is there still an issue with the vcc_core voltage in the RTPXA270C5624 processor with the stepping C5?

 

Kind regards

 

Konstantin

82574 Gbe MAC Programming

$
0
0

Hello,

 

I am currently designing a new board which could include a number of 82574 Gbe controllers. This would be the first time I have implemented Gbe controllers on board (as opposed to hosting mPCIe cards which already have 82574 Gbe controllers onboard).

 

One of my concerns is the allocation and assignment of MAC addresses for the controllers.

- Does this have to be done by pre-programming NVM before assembling the circuit card, or can it be done by writing to NVM when the board is assembled?

- Is the only way of obtaining MAC addresses to go through the IEEE Registration Authority?

 

Thanks for your help.

 

Regards, John

Case Study: Launch Vehicle Leverages Intel Atom-based Small Form Factor Mission Systems for Challenging Space Flight Conditions

$
0
0

Launch-Vehicle-Leverages-SFF-Mission-Systems.gifRugged Ethernet switches and computers capable of handling the extreme shock and vibrations experienced during the liftoff, stage separation, and recovery phases of a launch were needed for a heavy-lift reusable launch vehicle. It was critical that these systems be highly dependable to make reliable access to space more affordable, accessible, and commercialized.

 

The launch vehicle required mission processors to serve as its Telemetry Conversion Units (TCU), gathering and processing instrument telemetry data from multiple networks over Ethernet with several switch boxes, providing the backbone to the Local Area Network (LAN).

 

Looking to eliminate the lengthy process associated with designing custom solutions from the ground-up, sights were set on leveraging proven, affordable Commercial Off the Shelf (COTS) products. To mitigate program risks, these systems needed to be qualified to operate in the violent environment of space launch, which far exceeds the vibration and shock limits identified in MIL-STD-810 or DO-160 standards for traditional aerospace applications.

 

Results

Curtiss-Wright’s ability to modify rugged COTS solutions to withstand multiple trips to and from space, with minimal NRE ensured tight budget and aggressive program objectives were met. By leveraging an MCOTS solution, traditional investment in custom development was avoided as well as the overhead time, and risks associated with in-house development.

 

Read about the solution Curtiss-Wright developed and the results achieved in our case study - download the 'Launch Vehicle Leverages Small Form Factor Mission Systems for Challenging Space Flight Conditions' case study here.


Coreboot boot up on Serial port

$
0
0

Hi,

 

We would like to boot up the coreboot image in serial console. Our custom board contains a super I/O NCT5104D. We have done the below changes to enable the super I/O for our custom board. But no luck.

 

  • Added the below code line in \coreboot\src\mainboard\intel\leafhill\romstage.c

      #define SERIAL_DEV PNP_DEV(0x4E, NCT5104D_SP1)

nct5104d_enable_uartd(SERIAL_DEV);

             nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE)

             console_init();

  • Added the PCI and IRQ details under device pci 1f.0 on # - LPC bridge in \coreboot\src\mainboard\intel\leafhill\devicetree.cb
  • Selected “SUPERIO_NUVOTON_NCT5104D” under BOARD_SPECIFIC_OPTIONS in \coreboot\src\mainboard\intel\leafhill\Kconfig
  • Default console log level as 6 in \coreboot\src\console\Kconfig

 

Please advise if we are missing anything.

Please mention the serial console related configurations to be done in menuconfig.

 

Thanks

82580 Transceiver 4 ports set to different types of interfaces

$
0
0

Hello,

I'd like to set port 1 on my 82580 in 1000base-BX mode and the remaining 3 ports in SGMII mode. In my current hardware, I have wired the LAN0 MDC/MDIO lines to the PHYs. LAN0 is a 1000 base BX connection to a back plane. If I use Intel's pre-configured EEPROM files and manipulate them I am unable to get the configuration I want to work. Right now I have a test set up with the dual version of the 82580 and if I set both ports to 1000 base BX or both to SGMII then they work in two test set ups I have. I am unable to get it to work if I set one to 1000 base BX and the other to SGMII.

 

My final configuration will use a quad where first port is 1000base-BX and the remaining three SGMII.

 

Is there an EEPROM build with first port set to 1000base-BX and the remaining three in SGMII. I also need the MDC/MDIO access from LAN0 port to access the 3 PHYs.

 

Thanks

How to set config/mac data to Springville I210IT?

$
0
0

We use a Apollo lake(APL) SOC , which connect to the intel Ethernet chipset -Springville I210IT.

In order to enable the Ethernet function, our understanding is some configuration data(e.g.: vender id, MAC address…) shall be set to the external flash/iNVM for Springville I210IT.

 

Understand from community ,The flashing tools for supporting these products are available on IBL in document number 348742. EEUPDATE is used to program the flash memory or iNVM in production environments.

we had a test using this EEUPDATE  tool, i could dump the information from the I210IT,  note: i210_setup.sh is a script including an eeupdate64e tool.

 

Precondition:

     SW: Linux OS ,

     HW: Intel MRB reference board with APL SOC mounted.

 

root@:Dom0 /usr/bin/i210_tools $./i210_setup.sh -d

dump files

MAC Address: 0808CAFEBABE

Config File: I210.txt

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

EEUPDATE v5.25.20.03

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-1533    Intel(R) I210 Gigabit Network Connection

 

Only /INVM* and /MAC commands are valid for this adapter.

1:  LAN MAC Address is 000000000000.

 

BUT problem is I can not write data to the controller using the following cmd:

root@:Dom0 /usr/bin/i210_tools $ ./i210_setup.sh -m 000E9FCB7B31 -w mac                     <==i.e.: eeupdate64e /NIC=1 /MAC=000E9FCB7B31;                                                                                                               

write mode

MAC Address: 000E9FCB7B31

Config File: I210.txt

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

EEUPDATE v5.25.20.03

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-1533    Intel(R) I210 Gigabit Network Connection

 

Only /INVM* and /MAC commands are valid for this adapter.

 

1:  Updating Mac Address to 000E9FCB7B31...Failed!

writing mac 000E9FCB7B31

 

thanks to support for this failure .

Upgrading Apollo Lake to 16GB DDR3L memory -40 to 95°C with DRAM from Intelligent Memory

$
0
0

Intels Apollo Lake CPUs can take up to 16GB DDR3L RAM at 1866MT/s speed in Non-ECC operation.

Optionally ECC can be used with reduced maximum operation speed of 1600MT/s.

 

These 16GB need to be split into two ranks of 8GB each. This means that each rank must be made of 8 Gigabit DDR3L components in a x8 organization.

The manufacturer Micron had the 8Gb MT41K1G8SN devices before, but these are now EOL.  Industrial Temp or DDR3L-1866 versions were rarely or not available anyway.

 

A good option is to use the 8Gb DDR3L Intelligent Memory DRAM-components with part# IM8G08D3FCBG (Click the part# for direct link to the datasheet!)

These parts are available with up to DDR3L-1866 speed and also industrial temperature.

We have already tested them successfully on multiple boards with Apollo Lake CPUs as well as others like Broadwell, Baytrail, etc!

 

For customers having a SO-DIMM slot on their Apollo Lake boards, Intelligent Memory also offers 16GB modules with and without ECC.

16GB Non-ECC SO-DIMM Module Part# IMM2G64D3LSOD8AG (Click the part# for direct link to the datasheet!)

16GB Non-ECC SO-DIMM Module Part# IMM2G72D3LSOD8AG (Click the part# for direct link to the datasheet!)

 

A list of distributors can be found here: Where to buy | Intelligent Memory

max10 on chip flash write issue (without nios)

$
0
0

max10 on chip flash write issue (without nios)

 

 

hi, can anyone help to answer this question?

 

 

I am trying to write data to max10 on chip flash(UFM) without using NIOS.

what i am doing is to write a simple controller module and send the control signal required by on_chip_flash ip.

The steps can be described as follows:

1, disable write protection

2, do sector erase

3, write data to UFM

4, read back the data and verify the writing is successful or not.

5, enable write protection bit

 

 

my question is if i read back signal after write, data is correct. However, if i disable the write process, and read the address

directly (same address as i write before), the data is always FFFF. It seems that the data is not write into flash successfully.

However, during the wite process, the statue signal from avmm_csr_readdata shows that the erase/write operation is successful.

And the data can be read back correctly after the write process. Please help to solve this problem. Thanks!

 

 

Attached please find the cource code of the controller.

 

module main_controller

(

clock,

reset_n,

UFM_ADDRESS1,

UFM_ADDRESS2,

display_count1,

display_count2,

data_valid,

csr_status,

CSR_IDLE,

CSR_OP_WRITE_PASS,

CSR_OP_READ_PASS,

CSR_OP_ERASE_PASS,

CSR_BUSY_ERASE,

CSR_BUSY_WRITE,

CSR_BUSY_READ,

write_protect,

mc_state_machine

);

 

 

parameter COUNTER_BITS = 32;

parameter read_only = 1; 

 

 

input    clock;

input    reset_n;

input    [19:0] UFM_ADDRESS1;

input    [19:0] UFM_ADDRESS2;

input    [COUNTER_BITS-1:0] display_count1; //

input    [COUNTER_BITS-1:0] display_count2;

output    reg data_valid;  //

output   [9:0] csr_status;

output         CSR_IDLE;

output         CSR_OP_WRITE_PASS;

output         CSR_OP_READ_PASS;

output         CSR_OP_ERASE_PASS;

output         CSR_BUSY_ERASE;

output         CSR_BUSY_WRITE;

output         CSR_BUSY_READ;

output   [4:0] write_protect;

output   [5:0] mc_state_machine; //

///////////////////////////////////////////////

// mc_state_machine states

`define            IDLE                                                          6'b000000

`define            FETCH_FLASH                                                   6'b000001

`define            FLASH_READ1                                                   6'b000010

`define            FLASH_READ2                                                   6'b000011

`define            FLASH_READ3                                                   6'b000100

`define            FLASH_READ4                                                   6'b000101

`define            READ_FLASH_DONE                                               6'b000110

`define            WAIT_FOR_INIT_SHUTDOWN                                        6'b000111

`define            START_SHUTDOWN                                                6'b001000

`define            CSR_MASK_OFF1                                                 6'b001001

`define            CSR_MASK_OFF2                                                 6'b001010

`define            CSR_MASK_OFF3                                                 6'b001011

`define            CSR_MASK_OFF4                                                 6'b001100

`define            CSR_READ1                                                     6'b001101

`define            CSR_READ2                                                     6'b001110

`define            CSR_READ3                                                     6'b001111

`define            CSR_READ4                                                     6'b010000

`define            CSR_READ5                                                     6'b010001

`define            CSR_READ6                                                     6'b010010

`define            FLASH_WRITE0                                                  6'b010011

`define            FLASH_WRITE1                                                  6'b010100

`define            FLASH_WRITE2                                                  6'b010101

`define            FLASH_WRITE3                                                  6'b010110

`define            FLASH_WRITE4                                                  6'b010111

`define            FLASH_WRITE5                                                  6'b011000

`define            FLASH_WRITE6                                                  6'b011001

`define            FLASH_WRITE7                                                  6'b011010

`define            FLASH_WRITE_DONE                                              6'b011011

`define            FLASH_VERIFY1                                                 6'b011100

`define            FLASH_VERIFY2                                                 6'b011101

`define            FLASH_VERIFY3                                                 6'b011110

`define            FLASH_VERIFY4                                                 6'b011111

`define            CSR_MASK_ON1                                                  6'b100000

`define            CSR_MASK_ON2                                                  6'b100001

`define            CSR_MASK_ON3                                                  6'b100010

`define            CSR_MASK_VERIFY1                                              6'b100011

`define            CSR_MASK_VERIFY2                                              6'b100100

`define            CSR_MASK_VERIFY3                                              6'b100101

`define            POWER_DOWN_READY                                              6'b100110

////////////////////////////////////////////////

   reg      [19:0]   avmm_data_addr;

   reg               avmm_data_read;

   reg      [31:0]   avmm_data_writedata;

   reg               avmm_data_write;

   reg      [3:0]    avmm_data_burstcount;

   wire     [31:0]   avmm_data_readdata;

   reg               avmm_csr_addr;

   reg               avmm_csr_read;

   reg      [31:0]   avmm_csr_writedata;

   reg               avmm_csr_write;

   reg    [31:0]     flash_dataout1, flash_dataout2;

   reg    [5:0]      mc_state_machine;

   wire     [31:0]   avmm_csr_readdata;

   wire              avmm_data_waitrequest;

   wire              avmm_data_readdatavalid;

 

 

assign csr_status = avmm_csr_readdata[9:0];

assign write_protect= avmm_csr_readdata[9:5];

////////////////////////

//wire CSR_IDLE, CSR_OP_WRITE_PASS,CSR_OP_READ_PASS,CSR_OP_ERASE_PASS;

assign CSR_IDLE=(csr_status[1:0]==2'b00)?1'b1:1'b0;

assign CSR_BUSY_ERASE=(csr_status[1:0]==2'b01)?1'b1:1'b0;///5'bxxx01

assign CSR_BUSY_WRITE=(csr_status[1:0]==2'b10)?1'b1:1'b0;///5'bxxx10

assign CSR_BUSY_READ=(csr_status[1:0]==2'b11)?1'b1:1'b0;///5'bxxx11

assign CSR_OP_WRITE_PASS=(csr_status[3]);

assign CSR_OP_READ_PASS=(csr_status[2]);

assign CSR_OP_ERASE_PASS=(csr_status[4]);

//////////////////////////////////////////////////////

   // Flash IP instance

   on_chip_flash flash_inst (

      .clock                   (clock),                   //    clk.clk

      .reset_n                 (reset_n),                 // nreset.reset_n

      .avmm_data_addr          (avmm_data_addr),          //   data.address

      .avmm_data_read          (avmm_data_read),          //       .read

      .avmm_data_writedata     (avmm_data_writedata),     //       .writedata

      .avmm_data_write         (avmm_data_write),         //       .write

      .avmm_data_readdata      (avmm_data_readdata),      //       .readdata

      .avmm_data_waitrequest   (avmm_data_waitrequest),   //       .waitrequest

      .avmm_data_readdatavalid (avmm_data_readdatavalid), //       .readdatavalid

      .avmm_data_burstcount    (avmm_data_burstcount),    //       .burstcount

      .avmm_csr_addr           (avmm_csr_addr),           //    csr.address

      .avmm_csr_read           (avmm_csr_read),           //       .read

      .avmm_csr_writedata      (avmm_csr_writedata),      //       .writedata

      .avmm_csr_write          (avmm_csr_write),          //       .write

      .avmm_csr_readdata       (avmm_csr_readdata)        //       .readdata

   );

always @ (posedge clock)

   if (~reset_n) data_valid<=1'b0;

   else if (flash_dataout1==display_count1) data_valid<=1'b1;

   else data_valid<=data_valid;

 

 

always @ (posedge clock)

   begin

   if (~reset_n)

      begin

//inputs

   //AV MM

        //////////////////////////

         avmm_data_addr <= 20'h00000;

         avmm_data_read <= 1'b0;

         avmm_data_writedata <= 32'h0000_0000;

         avmm_data_write <= 1'b0;

         avmm_data_burstcount <= 4'b0001;

   //AV CSR

         avmm_csr_addr <= 1'b0;

         avmm_csr_read <= 1'b0;

         avmm_csr_write <= 1'b0;

avmm_csr_writedata <= 32'hFFFF_FFFF;

   //General Purpose

         mc_state_machine <= 6'b000000;

flash_dataout1   <=32'b0;

flash_dataout2   <=32'b0;

///////////////////

      end

   else begin

         case (mc_state_machine)

            `IDLE  : begin///0

                     //////////////////////////

                     avmm_data_addr <= 20'h00000;

                     avmm_data_read <= 1'b0;

                     avmm_data_writedata <= 32'h0000_0000;

                     avmm_data_write <= 1'b0;

                     avmm_data_burstcount <= 4'b0001;

                     //AV CSR

                     avmm_csr_addr <= 1'b0;

                     avmm_csr_read <= 1'b0;

                     avmm_csr_write <= 1'b0;

avmm_csr_writedata <= 32'hFFFF_FFFF;

                     //General Purpose

flash_dataout1   <=32'b0;

flash_dataout2   <=32'b0;

              ///////////////////  

mc_state_machine <= `FETCH_FLASH;////read

                     end

//////////////////////////////////////////

            `FETCH_FLASH      : begin ///1

                    avmm_data_burstcount <= 4'b0001;

                                if (avmm_data_waitrequest) mc_state_machine <= `FETCH_FLASH;

                                else mc_state_machine <= `FLASH_READ1;

                                end

            `FLASH_READ1      : begin///2

                                data_read1(UFM_ADDRESS1-0);

                                mc_state_machine <= `FLASH_READ2;

                                end

            `FLASH_READ2      : begin///3

                                data_read2;

                                mc_state_machine <= `FLASH_READ3;

                                end

            `FLASH_READ3      : begin///4

                                if (!avmm_data_readdatavalid) mc_state_machine <= `FLASH_READ3;

                                else

                                  begin

                                  data_read3;

                                  flash_dataout1 <= avmm_data_readdata;

                                  mc_state_machine <= `FLASH_READ4;

                                  end

                                end

            `FLASH_READ4      : begin///5

                                mc_state_machine <= `READ_FLASH_DONE;

                                end

            `READ_FLASH_DONE      : begin////6

                    ////////////////////////

                    if(read_only) mc_state_machine <= `POWER_DOWN_READY;

  else mc_state_machine <= `WAIT_FOR_INIT_SHUTDOWN;

                                ////////////////////////

  //mc_state_machine <= `POWER_DOWN_READY;

                                end

//////////////////////////////////////////   

///write start here

            `WAIT_FOR_INIT_SHUTDOWN : begin////7

                          avmm_data_burstcount <= 4'b0001;

                                      avmm_csr_addr <= 1'b1;///control register

  if (CSR_IDLE) mc_state_machine <= `START_SHUTDOWN;

  else mc_state_machine <=`WAIT_FOR_INIT_SHUTDOWN;

                                      end

            `START_SHUTDOWN  : begin////8

                                     avmm_csr_writedata[24:23] <=  2'b00;

                                     mc_state_machine <= `CSR_MASK_OFF1;

                                     end

            `CSR_MASK_OFF1   : begin////9

                                 csr_write1(1,avmm_csr_writedata);///write control data

                                 mc_state_machine <= `CSR_MASK_OFF2;

                               end

            `CSR_MASK_OFF2   : begin////A

                                 csr_write2(0);///

                                mc_state_machine <= `CSR_MASK_OFF3;

                               end

            `CSR_MASK_OFF3   : begin////B

                                 csr_read1(0);///

                                mc_state_machine <= `CSR_MASK_OFF4;

                               end

            `CSR_MASK_OFF4   : begin////C

                                 csr_read2(0);///

                                mc_state_machine <= `CSR_READ1;

                               end 

//////////////////////////////////////////////////////////////// 

            `CSR_READ1       : begin////

                   //avmm_csr_writedata[22:20] <=  3'b010;///!!!!

//avmm_csr_writedata[22:20] <=  3'b001;

avmm_csr_writedata[19:0] <=  20'h0001;

  if (CSR_IDLE) mc_state_machine <= `CSR_READ2;

  else mc_state_machine <= `CSR_READ1; 

                               end

            `CSR_READ2       : begin////E

                                csr_write1(1,avmm_csr_writedata);

                                mc_state_machine <= `CSR_READ3;

                               end

            `CSR_READ3       : begin////F

                    csr_write2(0);

  mc_state_machine <= `CSR_READ4;

                               end

            `CSR_READ4       : begin////10

                   mc_state_machine <= `CSR_READ5;

                               end

            `CSR_READ5       : begin////11

                   mc_state_machine <= `CSR_READ6;

                               end

`CSR_READ6       : begin////12

  if (CSR_IDLE && CSR_OP_ERASE_PASS) mc_state_machine <= `FLASH_WRITE0;

  else mc_state_machine <= `CSR_READ6;

                               end 

/////////////////////////////////////// 

            `FLASH_WRITE0    : begin////15

                                 if (avmm_data_waitrequest) mc_state_machine <= `FLASH_WRITE0;

                                 else mc_state_machine <= `FLASH_WRITE1;

                               end

            `FLASH_WRITE1    : begin////13

                                data_write1(UFM_ADDRESS1, display_count1);

                                mc_state_machine <= `FLASH_WRITE2;

                               end

            `FLASH_WRITE2    : begin////14

                    if (avmm_data_waitrequest) mc_state_machine <= `FLASH_WRITE2;

  else begin

                         data_write2(UFM_ADDRESS1, display_count1);

       mc_state_machine <= `FLASH_WRITE3;  

  end

                    ////////////////

                    //data_write2(UFM_ADDRESS1, display_count1);

  //mc_state_machine <= `FLASH_WRITE3;

                               end

//////////////////////////  

            `FLASH_WRITE3    : begin////15

                                 if (avmm_data_waitrequest) mc_state_machine <= `FLASH_WRITE3;

                                 else mc_state_machine <= `FLASH_WRITE4;

                               end  

            `FLASH_WRITE4    : begin////16

                               data_write1(UFM_ADDRESS2, display_count2);

                               mc_state_machine <=`FLASH_WRITE5;

                               end

            `FLASH_WRITE5    : begin////16

                    if (avmm_data_waitrequest) mc_state_machine <= `FLASH_WRITE5;

  else begin

                         data_write2(UFM_ADDRESS2, display_count2);

       mc_state_machine <= `FLASH_WRITE6;  

  end

                   ///////////////

                      //data_write2(UFM_ADDRESS2, display_count2);

                      //mc_state_machine <=`FLASH_WRITE6;

                               end

            `FLASH_WRITE6    : begin////16 

                                 if (avmm_data_waitrequest) mc_state_machine <= `FLASH_WRITE6;

                                 else mc_state_machine <= `FLASH_WRITE7;

                               end

`FLASH_WRITE7    : begin////17

                                   if (CSR_IDLE && CSR_OP_WRITE_PASS) mc_state_machine <= `FLASH_VERIFY4;

                                   else mc_state_machine <= `FLASH_WRITE7; 

                                   end

            ///////////////////////////////

//            `FLASH_WRITE_DONE : begin////18

//                        //avmm_data_burstcount <= 4'b0001;

//   if (avmm_data_waitrequest) mc_state_machine <= `FLASH_WRITE_DONE;

//                                   else mc_state_machine <= `FLASH_VERIFY1;

//                                end

//            `FLASH_VERIFY1      : begin////19

//                                    data_read1(UFM_ADDRESS1);

//                                    mc_state_machine <= `FLASH_VERIFY2;

//                                  end

//            `FLASH_VERIFY2      : begin////1A

//                                    data_read2;

//                                    mc_state_machine <= `FLASH_VERIFY3;

//                                  end

//            `FLASH_VERIFY3      : begin////1B

//                         data_read3;

//                                    if (!avmm_data_readdatavalid) mc_state_machine <= `FLASH_VERIFY3;

//                                    else

//                                      begin                                       

//                                        flash_dataout1 <= avmm_data_readdata;

//                                        mc_state_machine <= `FLASH_VERIFY4;

//                                      end

//                                   end

            ///////////////////////////////

            `FLASH_VERIFY4      : begin////1c

avmm_csr_writedata[24:20] <=  5'b11111;

avmm_csr_writedata[19:0] <=  20'hFFFF;

mc_state_machine <= `CSR_MASK_ON1;

                                  end

            `CSR_MASK_ON1       : begin////1D                                 

                                  csr_write1(1,avmm_csr_writedata);

                                  mc_state_machine <= `CSR_MASK_ON2;

                                  end

            `CSR_MASK_ON2       : begin////1E

                                   csr_write2(0);

                                   mc_state_machine <= `CSR_MASK_VERIFY1;

                                 end

            `CSR_MASK_ON3       : begin////1F

      if (CSR_IDLE) mc_state_machine <= `CSR_MASK_VERIFY1;

      else mc_state_machine <= `CSR_MASK_ON3;

                                 end

            ////////////////////////////////

            `CSR_MASK_VERIFY1 : begin////20

                                csr_read1(0);

                                mc_state_machine <= `CSR_MASK_VERIFY2;

                                end

            `CSR_MASK_VERIFY2 : begin////21

                                csr_read2(0);

                                mc_state_machine <= `CSR_MASK_VERIFY3;

                                end

            `CSR_MASK_VERIFY3 : begin////22

                                mc_state_machine <= `POWER_DOWN_READY;

                                end

            `POWER_DOWN_READY    : begin////23

           mc_state_machine <= `POWER_DOWN_READY;

                                   end

            default               : mc_state_machine <= `IDLE;

            endcase  //end case(mc_state_machine)

end

   end  //end always

 

 

///////////////////////////////////////////

   task csr_write1;

   input        addr;

   input [31:0] data;

   begin

      avmm_csr_addr      <= addr;

      avmm_csr_writedata <= data;

      avmm_csr_write     <= 1'b1;

   end

   endtask

 

 

   task csr_write2;

   input        addr;

   begin

      avmm_csr_addr      <= addr;

      avmm_csr_write     <= 1'b0;

   end

   endtask

 

 

   task csr_read1;

   input         addr;

   begin

      avmm_csr_addr      <= addr;

      avmm_csr_read      <= 1'b1;

   end

   endtask

 

 

   task csr_read2;

   input         addr;

   begin

      avmm_csr_addr      <= addr;

      avmm_csr_read      <= 1'b0;

   end

   endtask

 

 

   task data_read1;

   input  [19:0] addr;

   begin

      avmm_csr_read <= 1'b0;

      avmm_csr_write <= 1'b0;

      avmm_csr_addr      <= 1'b0;

      avmm_data_addr     <= addr;

      avmm_data_read     <= 1'b1;

   end

   endtask

  

   task data_read2;

   begin

      avmm_csr_read <= 1'b0;

      avmm_csr_write <= 1'b0;

      avmm_csr_addr      <= 1'b0;

      avmm_data_read     <= 1'b0;

   end

   endtask

 

 

   task data_read3;

   begin

      avmm_csr_read <= 1'b0;

      avmm_csr_write <= 1'b0;

      avmm_csr_addr      <= 1'b0;

   end

   endtask

 

 

   task data_write1;

   input [19:0] addr;

   input [31:0] data;

   begin

      avmm_csr_read <= 1'b0;

      avmm_csr_write <= 1'b0;

      avmm_csr_addr      <= 1'b0;

      avmm_data_addr      <= addr;

      avmm_data_writedata <= data;

      avmm_data_write     <= 1'b1;

   end

   endtask

 

 

   task data_write2;

   input [19:0] addr;

   input [31:0] data;

   begin

      avmm_csr_read <= 1'b0;

      avmm_csr_write <= 1'b0;

      avmm_csr_addr      <= 1'b0;

      avmm_data_addr      <= addr;

      avmm_data_writedata <= data;

      avmm_data_write     <= 1'b0;

   end

   endtask

 

 

endmodule

White Paper: Why Dissimilar Redundant Architectures Are a Necessity for DAL A

$
0
0

DAL-A-Flight-Standard.gifFor avionics systems requiring DAL A certification, adhering to the required <1 in 10-9 probability of failure is no easy feat. Take, for example, a flight control computer that relies on multiple air data computers and their collected inputs from sensors such as air speed sensors, altitude sensors, accelerometers, and gyroscopes in the roll, pitch and yaw axes. The flight control computer is responsible for reading data from these systems and calculating outputs to drive actuators for various aircraft components (for example, rudders, elevators and propulsion systems) in order to keep the aircraft in straight and level flight. Communication between these sensors and the flight control computer occurs at a high frequency, creating a controlled feedback loop.

 

Relying on a single computer to manage this loop would fall short of meeting the acceptable <1 in 10-9 probability of failure rate. The pitfall of a single channel flight control system is that any single point of failure in that chain can cause the entire system to malfunction. And, no matter how reliable your electronics are, unpredictable external factors can still cause a malfunction. For instance, if a UAV strikes a bird in flight and one of its probes becomes blocked, this can result in one of two major classes of errors: the probe can become completely inoperative or it can begin transmitting Hazardous Misleading Information (HMI) to the flight control computer. Either type of error can potentially prevent the flight control computer from properly calculating the desired output for any of the aircraft components under its control, and can ultimately lead to a disaster. For this reason, redundancy is critical in DAL A systems.

DAL A, Flight Standards

Figure 1: Achieving <1 in 10-9/Flight Hour Probability of Failure with a Dissimilar Redundant Architecture

 

Download the 'Why Dissimilar Redundant Architectures Are a Necessity for DAL A' white paper to learn more about:

  • Design Assurance Levels and Probability of Failure
  • Strengthening Redundancy with Dissimilarity and Complex Voting
  • Examples of Highly Redundant Systems

HSUART support in Coreboot

$
0
0

Hi,

 

We are developing a coreboot image for Apollo lake custom board. We would like to have the coreboot boot-up on serial console.

We are having HSUART ports in our custom board and we would like to give support for HSUART in coreboot image.

 

Could please mention the steps to be done for enabling HSUART in coreboot development ?

 

Also could you please share the necessary documents to be followed in this case ?

 

Thanks


PLEVT SATA margin test

$
0
0

Hello,

 

Our DQA member tries to SATA margin test on Denventon platform

 

they used #526691(Intel Physical Layer Electrical Validation Tool Ver 1.12.7)

 

But the Tool can't capture SATA data that like below picture.

 

we are sure our BIOS program HSIO 16,17 and 18 to SATA. Therefore, we can run the SATA device well.

 

Could you have any suggest?

 

Thanks.

EEUPDATE and LANConf Guide

$
0
0

Hi Intel Embedded Community:

 

We will use the tools EEUPDATE and LANConf (from the Quartzville tools package) for programming the MAC in a i211. Could you please provide us the usage guide for this tools, please? To eulises_camacho@jabil.com and blanca_aguirre@jabil.com.

 

Also, it was installed the software in windows 64, but when i run the application EEUPDATEw64e.exe (in administrator mode) is just flicker the window. How can i open the application correctly?

 

Thanks in advance.

[pktgen-dpdk]Only can send a few packets and stopped.

$
0
0

When I run pktgen-dpdk on computer A and run dpdk on computer B, the pktgen can only send a few packets( about one second) and stopped.

The command on A side is ./tools/pktgen-run.sh.

I modified some line in the tools/pktgen-run.sh to suit my computer. The critical line is “load_file = “-f test/tx-rx-loopback.lua””. I also tried “load_file = -f test/set_seq.lua”. But it also only can send a few packets and stopped.

Which intel tech document for IOC and SOC communication in boot up?

$
0
0

hi,

 

We worked on MRB intel reference board, which has Apollo lake SOC mounted, and another IOC module.

We understand during boot up phase, IOC will send some commands to the bootloader, which is running in SOC side, in order to boot the system(e.g.: linux).

Can you help me to know which intel tech document (document number?)  is preferred to be referred in order to understand how IOC to control SOC boot up via some commands?

 

Thanks.

How to configure Linux SPI driver mcp251x?

$
0
0

Hello,

 

I use an Intel Atom processor E3930 with CAN controller MCP2515 with SPI interface. In the Linux kernel there is a driver "drivers/net/can/spi/mcp251x.c".

 

I am only famiiliar with Linux device tree. But there is no device tree on the Intel Atom platform. Hence my question:

 

How to configure the mcp251x Linux driver on an Intel Atom platform?

 

Every hint is gratefully accepted.

 

With kind regards

Mario

Viewing all 3140 articles
Browse latest View live


Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>