Jump to content

    
Sign in to follow this  
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
On 8/1/2020 at 7:59 PM, Aner said:

В реалтайме с периферией удобнее работать с ARM ядрами M0-M4-M7 а не с ядрами A7-A8-A10, (A8 у Allwinner A13) также и с ОСами.

 

В этом плане более приятны DSP.

 

On 8/1/2020 at 7:59 PM, Aner said:

Те реализации Linux под реал-тайм не очень то и заточены в плане эффективности.

  

Не использую Линукс и другие ОС для микроконтроллеров.  У меня там своя тема крутится - на голом железе.  Хотя не отрицаю, часть сорцов подглядел в Линуксе, но это были только драйвера для работы с периферией .  Я очистил всю шелуху и взял оттудова всё нужное мне.

 

On 8/1/2020 at 7:59 PM, Aner said:

Семейство у Allwinner "A" заточено под видео

 

Вы про x264 ?   Смысла от одного видео в МК мало.

Share this post


Link to post
Share on other sites
01.08.2020 в 12:59, Aner сказал:

Семейство у Allwinner "A" заточено под видео.

Как бы да, все закономерно. Видео сжирает дофига ресурсов...

01.08.2020 в 12:59, Aner сказал:

STM под видео не совсе то. Кроме 157, у которого два разных ядра, два A7 и одно M4.

Не вижу смысла в этом 157м вообще, все внешнее, корпус сложный в плане разводки. Вся прелесть СТМов, в их камнях со встроенным флешем и планарным корпусом - все в одном, плата легко разводится... Но все это только для бездисплейных применений, если уж экран - то лучше Allwinner v3s или S3, ИМХО..

Share this post


Link to post
Share on other sites
20 часов назад, __inline__ сказал:

В этом плане более приятны DSP.

DSP для обработки реал-тайм событий и алгоритмов управления "вермишельного" типа?? :russian_ru: Выбор - хуже не придумаешь. Даже хуже чем использовать его для работы в режиме memcpy-only... :negative:

Share this post


Link to post
Share on other sites
On 8/10/2020 at 5:25 AM, jcxz said:

DSP для обработки реал-тайм событий и алгоритмов управления "вермишельного" типа?? :russian_ru: Выбор - хуже не придумаешь. Даже хуже чем использовать его для работы в режиме memcpy-only... :negative:

 

Вы зря сердитесь! :acute:  Я вообще-то  про свою нишу говорю - про применение DSP в играх! :gamer4: Вот в них возможности DSP очень даже подходят - STM32 кусает локти от зависти!

Edited by __inline__

Share this post


Link to post
Share on other sites
6 часов назад, __inline__ сказал:

Я вообще-то  про свою нишу говорю - про применение DSP в играх!

И где же про игры? У нас все ходы записаны:

09.08.2020 в 02:16, __inline__ сказал:
01.08.2020 в 12:59, Aner сказал:

В реалтайме с периферией удобнее работать с ARM ядрами M0-M4-M7 а не с ядрами A7-A8-A10, (A8 у Allwinner A13) также и с ОСами.

В этом плане более приятны DSP.

Как видно - разговор шёл не про игры, а про работу с периферией и про ОСы. :unknw:

Share this post


Link to post
Share on other sites
2 hours ago, jcxz said:

И где же про игры? У нас все ходы записаны:

 

Quote

В реалтайме с периферией удобнее работать с ARM ядрами M0-M4-M7 а не с ядрами A7-A8-A10, (A8 у Allwinner A13) также и с ОСами.

 

Хорош зубатиться.  В играх нужен реалтайм. На ОСы мне наплевать.

Ещё вопросы есть?

 

2 hours ago, jcxz said:

Как видно - разговор шёл не про игры, а про работу с периферией и про ОСы.

 

Разгор шёл об ARM Cortex-M7: об их убогости по сравнению с DSP и Cortex-A8.

Edited by __inline__

Share this post


Link to post
Share on other sites
On 1/12/2021 at 3:38 PM, sergvks said:

Никто не знает где бы добыть Security Reference Manual for the i.MX RT102x и Processor Security Application Note AN12079 ?

 

Добрый день,

 

Напишите мне на почту nxp@symmetron.ru . Думаю смогу с этим помочь.

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.

Sign in to follow this