Jump to content

    
KnightIgor

Хозяйкам на заметку: 64К RAM вместо 48К по документам.

Recommended Posts

Интересную вещь обнаружил.

Делаю проект для устройства, на котором будет стоять STM32F103VE. Он имеет 512K ROM и 64K RAM согласно data sheet. Пока плата устройства не готова, взял похожую плату, на которой стоит STM32F103VС. Проект для STM32F103VE создал в STM32CubeIDE и успешно кропал и отлаживал первые шаги пока не смекнул, что процессор VC имеет-то только 48К RAM! Прикол в том, что стек, согласно *.LD, инициализируется на самый верхний адрес памяти, и я все это время успешно мучал VC со стеком от 64K (0x20010000), и все работало!

Чтобы не быть голословным, внизу фото платки, которую я пользую. Извините, что не прибрано: её надо бы пропылесосить.

Кто-нибудь встречал такое?

20201119_103501.jpg

Edited by KnightIgor

Share this post


Link to post
Share on other sites
36 минут назад, aaarrr сказал:

просто часть памяти забракована.

Я от представителя ST слышал версию "не оттестирована". Тестирование тоже стоит денег.

Share this post


Link to post
Share on other sites
15 minutes ago, Сергей Борщ said:

Я от представителя ST слышал версию "не оттестирована".

Вполне вероятно, что в категорию 48K могут попадать все три варианта: неисправна - не тестировалась - исправна.

Share this post


Link to post
Share on other sites

Верно гуру тут пишут.

... и в данном случае "не тестировалась" означает, что в этой, недокументированной, области памяти могут быть неисправные ячейки.

Share this post


Link to post
Share on other sites
1 hour ago, KnightIgor said:

Интересную вещь обнаружил.

Кто-нибудь встречал такое?

Встречал другое, в STM32_F_426 vgt(6 вроде) с размером флеш 1МБ

У него есть есть возможность выбора режима флеш: 1 банк 1 МБ, либо 2 банка х 512КБ

И это не просто логическое разделение 1х1МБ, либо 2х512, а действительно разные памяти флеш.

Как проверено:

 - В режиме 1МБ заполнил флеш тестовыми данными

 - Переключил режим на 512+512КБ

 - Область №2 (вторые 512КБ) оказалась чистой (FF), заполнил и её

 - Переключил обратно на режим 1МБ, в области №2 оказались старые данные из п.1

Т.е. получается памяти там 512КБ х3, и если нужно, то такими хитрыми извращениями можно что-то там хранить/спрятать

 

 

Share this post


Link to post
Share on other sites

Есть такой бинарник для проверки и теста размера ОЗУ на STM32F103xx камне

STM32F103XX-DIAGNOSTICS

 

P.S. Из прoекта неофициальной документации Mecrisp-Stellaris Unofficial User Doc

 

Проет на базе Mecrisp-Stellaris  в среде Cube   https://github.com/spyren/Mecrisp-Cube

Edited by Kopa

Share this post


Link to post
Share on other sites
7 hours ago, Kopa said:

Есть такой бинарник для проверки и теста размера ОЗУ на STM32F103xx камне

STM32F103XX-DIAGNOSTICS

 

P.S. Из прoекта неофициальной документации Mecrisp-Stellaris Unofficial User Doc

 

Проет на базе Mecrisp-Stellaris  в среде Cube   https://github.com/spyren/Mecrisp-Cube

 

Загрузил в процессор, но ответа нет.

Share this post


Link to post
Share on other sites
14 hours ago, KnightIgor said:

Загрузил в процессор, но ответа нет.

А, что не работает?

Вроде по SVD на USB должен быть отклик с плат STM32F103?

 

P.S. Например, заливал оригинальный Mecrisp-Stellarisp в плату STM32L476 и по UART-USB получал связь,

Не увидел исходников приведённой утилиты по тестированию "теневой" памяти STM32F103.

Edited by Kopa

Share this post


Link to post
Share on other sites
51 minutes ago, Kopa said:

А, что не работает?

Вроде по SVD на USB должен быть отклик с плат STM32F103?

 

P.S. Например, заливал оригинальный Mecrisp-Stellarisp в плату STM32L476 и по UART-USB получал связь,

Не увидел исходников приведённой утилиты по тестированию "теневой" памяти STM32F103.

 

Что такое UART-USB? USB CDC, то есть, эмуляция COM-порта?

У меня есть плата, к которой можно подключиться к USART0 (на стандартных пинах PA9 и PA10), а также выведен USB процессора. После загрузки бинарника никаких ссобщений по USART0 нет, нет и реакции на ввод (например, teraterm). При подключении USB никакой виртуальный COM-Port тоже не создается.

Единственно, на что могу грешить: кварц на плате - на 12MHz, а не на 8MHz как на всяких отладочных платах. Использует бинарник кварц или рубает на внутреннем HSI?

Edited by KnightIgor

Share this post


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

Что такое UART-USB? USB CDC, то есть, эмуляция COM-порта?

У меня есть плата, к которой можно подключиться к USART0 (на стандартных пинах PA9 и PA10), а также выведен USB процессора. После загрузки бинарника никаких ссобщений по USART0 нет, нет и реакции на ввод (например, teraterm). При подключении USB никакой виртуальный COM-Port тоже не создается.

Единственно, на что могу грешить: кварц на плате - на 12MHz, а не на 8MHz как на всяких отладочных платах. Использует бинарник кварц или рубает на внутреннем HSI?

 

UART-USB это Uart на стороне STM32 контроллера подключаемый к переходнику для ПК USB-UART.

В описании программы вроде указан UART2 на соответствующих пинах контроллера (в конце страницы) скорость, терминала вероятно 9600

 

P.S. SVD   в стандарте плат STM32, вроде, имеет выход на их USB интерфейс через стандартные выводы контроллера UART1.

но приведёнаая программа на странице pycom разве умеет в SVD?

 

 

Edited by Kopa

Share this post


Link to post
Share on other sites

Как интересно. А я на F100С4 решил целенаправленно просканить память. Ну то-есть фактически записать и прочитать и посмотреть что из этого получится. И что вы думаете? У него формально 16К флеша и 4К оперативы. Но я уверен что вижу как минимум 128К флеша и 8К оперативы (а может и 16, не сканил). Я не знаю насколько стабильно они работают - но чисто технически оно там есть. Что интересно, все это можно прописывать даже через бутлоадер, он не возражает.

Share this post


Link to post
Share on other sites

Я думаю, все эти градации для одного семейства - маркетинговые уловки.
Продавать МК со 100% памяти дёшево - не выгодно.
Продавать МК со 100% памяти дорого - с меньшей памятью могут купить что-нибудь другое, подешевле - потеряешь покупателя.
Продавать МК с разным % памяти по разным ценам - охватить всех покупателей одним и тем же продуктом.

Как память МК тестируется при производстве, не знаю. Допустим, партия выборочно тестируется, и если тест не проходит - понижается градация? А как же остальная часть МК - периферия, АЛУ, шины? Они с гарантией всегда рабочие? А если все партии проходят тесты, а на малые градации уже заказов набрано? В общем, проще маркировать по разному одно и то же, и продавать по разному. ИМХО.

Share this post


Link to post
Share on other sites

Очень похоже на что-то такое. У меня возникло ощущение что физически это то же самое что и старшая модель семейства. Может быть действительно, память не проходит какие-то тесты в верхних регионах и дескать использование - на свой страх и риск? А если ALU не пройдет тест - тогда чип по любому в утиль пойдет. Куда они денутся :)

 

А так как минимум энный набор тестов ST на фабрике делает, если верить даташиту. Что они с памятью делают я не знаю - но они явно вливают ему boot ROM в system memory и прописывают всякие там калибровки и уникальный серийник (где-то там же, может быть в этом же процессе). Наверное и тестируют что-то заодно.

Share this post


Link to post
Share on other sites

(Выпытано у представителей ST на семинаре лет 8 назад). Тестируется не полностью. Например, только начальные области памяти до нужного адреса, периферия - выборочно в зависимости от того, что надо выпустить, подешевле или подороже. Экономия - за счёт сокращения времени тестирования, оно тоже деньги, хоть и небольшие.

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.