Jump to content

    
AlexandrY

Новые ARM Cortex-M7 на 600 МГц

Recommended Posts

24 минуты назад, novikovfb сказал:

обычно они отличаются температурным диапазоном, т.е. чипы либо проходят испытания в расширенном диапазоне температур, либо - нет

не совсем так, не испытания, а технология изготовления чипа немного другая и немного подроже.

2 минуты назад, sergvks сказал:

Судя по рефернес-мануалу отличий нет. Вопрос будет ли Industrial стабильно работать при комнатной температуре на частоте 500Мег.

будет, если отводить лишнее тепло, не перегревать его.

Share this post


Link to post
Share on other sites
On 6/23/2020 at 10:56 AM, sergvks said:

В процессе возник вопрос - eFUSE можно прошивать чем-то через swd или только через загрузчик самого проца usb-hid и com-порт ?

отвечу сам, может кому пригодитсяvoid setFuses(void) {

Spoiler

 

     // Write Fuses, burn BT_FUSE_SEL (disable BT_CFG_xx pins) and burn FORCE_INTERNAL_BOOT (so that BOOT_MODE0 and BOOT_MODE1 inputs does not matter any more)
     //
     // Value at the start of line is [xx] which is number of nS at 132 MHz with the timing values below

     // [151]     WAIT = tSP_RD=(WAIT+1)/ipg_clk_freq, should be >= 150 ns
     // [106]     RELAX = tSP_PGM=tHP_PGM=(RELAX+1)/ipg_clk_freq, should be >= 100ns
     // [10015]     STROBE_PROG = tPGM = [(STROBE_PROG+1) – 2?(RELAX_PROG+1)] / ipg_clk_freq (The tPGM should be configured within the range of 9000 ns < tPGM < 11000 ns, while its recommended value is 10000 ns)
     // [45]          STROBE_READ = tRD= [(STROBE_READ+1) – 2?(RELAX_READ+1)] / ipg_clk_freq (The tRD is required to be larger than 40 ns)
     //
     // [15.2]     TIMING2.RELAX_READ = (RELAX_READ+1) / ipg_clk_freq, should be >= 10 ns.
     // [1000]     TIMING2.RELAX_PROG = tSP_PG_AVDD = tHP_PG_AVDD = (RELAX_PROG+1)/ipg_clk_freq, should be >= 1000 ns.
     
     // In TIMING2, RELAX_READ is set to 0x01 (1) and RELAX_PROG is 0x92 (131)
     // (At default, RELAX_READ is 0x03 (3) and RELAX_PROG is 0x92 (146))
     // For 132 MHz:
     //     TIMING_WAIT = 150ns * 132MHz - 1 = 18,8 => 19
    //     RELAX = 100ns * 132MHz - 1 = 12,2 => 13
    //     RELAX_READ = 10ns * 132MHz -1 = 0,32 => 1
    //     RELAX_PROG = 1000ns * 132MHz - 1 = 131
    //     STROBE_PROG = 10us * 132MHz + 2 * (RELAX_PROG + 1) - 1 = 10us * 132MHz + 2 * (131 + 1) - 1 = 1583
    //     STROBE_READ = 40ns * 132MHz + 2 * (RELAX_READ + 1) - 1 = 40ns * 132MHz + 2 * (1 + 1) - 1 = 8,28 => 9
     //
     // For 150 MHz:
     //     TIMING_WAIT = 150ns * 150MHz - 1 = 21,5 => 22
    //     RELAX = 100ns * 150MHz - 1 = 14,0 => 14
    //     RELAX_READ = 10ns * 150MHz - 1 = 0,5 => 1
    //     RELAX_PROG = 1000ns * 150MHz - 1 = 149
    //     STROBE_PROG = 10us * 150MHz + 2 * (RELAX_PROG + 1) - 1 = 10us * 150MHz + 2 * (131 + 1) - 1 = 1763
    //     STROBE_READ = 40ns * 150MHz + 2 * (RELAX_READ + 1) - 1 = 40ns * 150MHz + 2 * (1 + 1) - 1 = 11,0 => 11
     //
     // If BT_FUSE_SEL (bit 4) is not set already then burn it (and FORCE_INTERNAL_BOOT)
     if (!(SRC->SBMR2 & SRC_SBMR2_BT_FUSE_SEL_MASK)) {
          //
          // Based on ipg_clk = 132 MHz => 1/f = 7.576 nS
          int timing = OCOTP_TIMING_STROBE_PROG(1583) | OCOTP_TIMING_RELAX(13) | OCOTP_TIMING_STROBE_READ(9) | OCOTP_TIMING_WAIT(19); //ipg_clk=132MHz, Calculation described at Chapter 22.4.3 (Rev.2) OTP Read/Write Timing Parameters
          int timing2 = OCOTP_TIMING2_RELAX_READ(1) | OCOTP_TIMING2_RELAX_PROG(131);
          //
          // Based on ipg_clk = 150 MHz => 1/f = 6.67 nS
          // int timing = OCOTP_TIMING_STROBE_PROG(1763) | OCOTP_TIMING_RELAX(14) | OCOTP_TIMING_STROBE_READ(11) | OCOTP_TIMING_WAIT(22); // ipg_clk=150MHz, Calculation described at Chapter 22.4.3 OTP Read/Write Timing Parameters
          // int timing2 = OCOTP_TIMING2_RELAX_READ(1) | OCOTP_TIMING2_RELAX_PROG(131);
          //     
          OCOTP->TIMING = timing;
          OCOTP->TIMING2 = timing2;
          while ((OCOTP->CTRL & (1<<OCOTP_CTRL_BUSY_SHIFT)) || (OCOTP->CTRL & (1<<OCOTP_CTRL_ERROR_SHIFT))); // Check that HW_OCOTP_CTRL[BUSY] and HW_OCOTP_CTRL[ERROR]are clear
          int ocotp_ctrl = OCOTP->CTRL;
          ocotp_ctrl &= ~OCOTP_CTRL_ADDR_MASK;
          ocotp_ctrl |= OCOTP_CTRL_ADDR(6);     // Set address 6
          ocotp_ctrl &= ~OCOTP_CTRL_WR_UNLOCK_MASK ;
          ocotp_ctrl |= OCOTP_CTRL_WR_UNLOCK(0x3E77); // WR_UNLOCK sequence
          OCOTP->CTRL = ocotp_ctrl; // Write ADDR and unlock
          //OCOTP->DATA = (long)((1<<4)|(1<<16));// burn both BT_FUSE_SEL (1<<4) and FORCE_INTERNAL_BOOT (1<<16)
          OCOTP->DATA = (long)((1<<4));// burn only BT_FUSE_SEL (1<<4)
     }
}

 

 

Share this post


Link to post
Share on other sites

а они работает только с 3.3В SDRAM?

LPSDRAM на 1.8В (то есть микроновские MT48H*) поддерживаются? что-то не вижу, там с  EXTENDED MODE REGISTER-ом нужно работать (если не ошибаюсь в отличиях от 3.3В памяти), хотя бы при запуске что-то прописать, чтобы включить память...  

Share this post


Link to post
Share on other sites

После освоения камешков Allwinner A13 и V3s, сферические, существующие только на бумаге недо-дистрофики от STM  более не интересны. :lol:

 

P.S. Ежегодный выхлоп STM - всего до полусотни мегагерц. При этом ни NEON, ни встроенной DDR, ничерта нет ничего, что бы  зацепило...

 

Edited by __inline__

Share this post


Link to post
Share on other sites

Думаю, что не совем корректно отзываетесь об STM процах. Всему свое место. В реалтайме с периферией удобнее работать с ARM ядрами M0-M4-M7 а не с ядрами A7-A8-A10, (A8 у Allwinner A13) также и с ОСами. Те реализации Linux под реал-тайм не очень то и заточены в плане эффективности. Семейство у Allwinner "A" заточено под видео. STM под видео не совсе то. Кроме 157, у которого два разных ядра, два A7 и одно M4.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.