реальный объем памяти в stm32

Где то с месяц назад заметил интересный момент на stm32, на разных камнях, дело в объеме флеша. На новизну не претендую, просто нигде на глаза не попадалась информация об этом.

Начну издалека, в STM32 ST-LINK utility, есть два окошечка над отображением содержания прошивки: Address и Size. Собственно при чтении камня он читает начиная с Address размер Size (в байтах), если указать размер больше, чем есть в камне, то он в процессе чтения сругается, мол не могу прочитать такой то адрес, тоесть он не проверяет размер для читаемого камня (который пишет в окне логов при подключении к камню), а читает сколько сможет. Поскольку подключаю разные камни, размер указываю на 1 мегабайт, пусть читает все а я уже найду что мне надо. Где то месяц назад обратил внимание что на stm32f103C8 он читает не 64 килобайта а 128 килобайт (хотя по даташиту там 64), провел эксперимент, записал в эту область свои данные, переподключил, данные на месте о_О К сожалению нет свободного времени нормально проверить эту «дополнительную» память на камнях из кода, думал проверю да поделюсь, да вот месяц прошел, а найти на это время я не смог, поэтому выкладываю свои наблюдения в «сыром» виде. Сразу оговорюсь, не стоит на эту память надеяться в серийном производстве и не факт что эту «дополнительную» память вы найдете у себя, возможно мне такая партия досталась, на это можно рассчитывать в собственных поделках или там где вы можете все камни проверить и если «не повезло», заменить без ущерба для себя. Но мне кажется все дело в тех процессах, им дешевле сделать не серии 16/32/64/128/256/512/1024… а обойтись 32/128/256/1024, как то так. Мои наблюдения между делом показали что у sm32f030f4 вместо 16 килобайт в наличии 32 килобайта, у stm32f103c8 вместо 64 килобайт — 128, у stm32f407ve вместо 512 — 1024, хотя в области размера флеша находится значение 512. Насчет наличия бОльшего SRAM вообще никак не проверял, хотя тоже возможно…
Дак вот, к чему я об этом пишу, у кого есть время и возможность проверьте пожалуйста «доступность» этой «дополнительной» памяти для прошивки МК, если она конечно вообще существует в реальности, а не в моей фантазии… и отпишитесь, думаю тем, кто собирает что то для себя будет полезно. И еще уже многие видели st-link на stm32f101, есть мысль что серия 101,102,103 на самом деле имеет одну и ту же начинку, а их разделение на серии происходит на этапе тестирования образцов перед маркировкой (лучшее в 103, похуже 102, слабые 101)… но и это лишь мои мысли…
  • +1
  • 22 сентября 2014, 18:54
  • pteriks

Комментарии (54)

RSS свернуть / развернуть
Это, в общем, не новость. На казусе уже обсуждалось. STM производит не так много кристаллов и, по видимому, сортирует их по соответствию параметрам.
Алсо я слышал, что камни рапортуют программатору реальный размер флеша, а не тот, что должен быть по маркировке.
Использовать «бонусный контент» можно, но без каких-либо гарантий.
Ну и да, судя по всему, 101-я серия — отбраковка из 103-й, насчет 102 — не знаю.
0
  • avatar
  • Vga
  • 22 сентября 2014, 21:20
напишите, пожалуйста, ссылку где это обсуждалось, почитаю на досуге =)
0
Боюсь, что ссылку точнее чем www.kazus.ru я дать не могу.
0
  • avatar
  • Vga
  • 23 сентября 2014, 04:23
ну вот как всегда :D
-1
С 102 та же ситуация. Лично игрался с партией 102(по маркировке), а на самом деле определялись отладчиком как 103. И RAM было действительно больше и она работала.
0
Никогда не используйте недокументированные возможности, чтобы не чесать потом репу типа «почему на одном камне работает, а на другом не робит». Прога Stlink написана криво- читает те адреса, которые забиваешь ручками. 21 век, а автоопределение размера флеша сделать не могут… Хотя в окошечке «Flash Size» размер памяти определяется верно.
0
В STM32F100C4 реально 32к флеша. Сильно подозреваю, что реальный ассортимент кристаллов соответсвует набору дефайнов в CMSIS — т.е где-то 4 штуки, LD, MD, HD и XD. Серий тоже меньше, чем кажется — 101 по начинке соответствует 103.
Вероятно, типичная отбраковка — примерно как младшие серии CPU/GPU для компов.
В одном ты прав — использовать это не следует. Впрочем, в чисто любительских целях можно при желании потратить время на тестирование и заюзать недокументированные бонусы.
0
  • avatar
  • Vga
  • 23 сентября 2014, 14:19
Потом эти бонусы обернутся геморроем на *опу
0
Если потащишь недокументированные возможности в серию — разумеется. Для себя — отбираешь камень, где все работает (пятая приемка, хех) и никаких проблем.
Хотя у китайцев и в серии работает. Возможно 101-я отбраковывается по максимальной рабочей частоте, а STLINK не на 72МГц пашет, а может и еще какие причины.
0
  • avatar
  • Vga
  • 23 сентября 2014, 14:37
я же не китаец :) всякими разгонами и подобной лабудой тож не занимаюсь
0
Представители ST по поводу отбраковки сказали, что это было бы очень затратно по времени и ресурсам. На самом деле просто при тестировании они не проверяют лишнюю флеш.
0
Зачем им тогда вообще такая сегментация по объему памяти, интересно…
0
По этому поводу мне ответили, что это маркетинг + экономия времени на тестировании в производстве младших мк в серии.
0
Привели пример, когда выпускают одинаковые устройства по начинке, но разные по цене и по характеристикам. Когда искусственно занижают мощность, скорость, блокируют функции и т.п. Хочешь — большее заплати денег.
0
Ну, если говорить о процессорах и GPU, то там обычно лишнее лочат плюс в младшие серии идет в основном отбраковка.
0
Видимо у них производство так построено и им так проще. Мне сказали, что им приходится лочить Crypto/hash processor, т.к. ввоз МК с ним на борту в некоторые странны запрещен.
0
Сейчас на макетке STM32F050K6 (он же STM32F031K6). По паспорту Flash 32k, Ram 4k, реально 64k и 8k.
0
Проверял из кода.
0
спасибо =)
я на stm32f030f4 проверил из кода флеш (32кБ, вместо заявленных 16, а вот ram там как и заявлено 4кБ)
0
В этой линейке официально вообще нет камней с таким объемом, 32к макс. Похоже они кристаллы общие с x051 серией использовали. Возможно это касается только старых камней (х050), логичнее объеденить x030 и x031, но когда я их покупал x030 еще не было.
0
=D точно, посмотрел даташит, я думал у них серии идут до 32 кБ заявленных в 32 реальных, от 64 до 128 заявленных в 128 реальных, но похоже от семейства к семейству есть разница, но это лишь приятный бонус для тестирования и отладки, может еще некритичных к работоспособности поделок для себя, в других условиях не стоит на этот бонус рассчитывать =)
0
STM32F105V8T6 — 256k Flash, т.е. максимум для этой линейки. RAM не проверял.
0
STM32F100C4T6 — пишется/читается 128К (максимум для Medium-density VL).
0
Приезжали недавно к нам Александр Квашнин (инженер по применению микроконтроллеров ST) и Роман Лудин (технический менеджер по маркетингу компании STMicroelectronics). Задал им вопрос по поводу «лишней» флеш памяти. Нам объяснили следующее. Для каждой линейке для каждого корпуса МК при производстве используют одну маску, заряженную по максимуму, т.к. не выгодно иметь для каждой серии свою маску. Т.е. в принципе во всех мк заряжена максимально возможная память. Разница лишь в тестировании мк при их производстве (сколько памяти положено — столько и тестят). Так же пояснили по поводу наличия «несуществующей периферии» — так как маска одна, то и периферия должна быть тоже максимальная. В некоторых случаях ее такой и оставляют (она просто не проходит тесты и никто гарантии на ее работоспособность не дает), а в некоторых случаях при производстве пережигают перемычку и отключают ее (например Crypto/hash processor).
+1
по поводу наличия «несуществующей периферии» — так как маска одна, то и периферия должна быть тоже максимальная
Встречал кое-что похожее.
18.2.1. Configuring Ports which are not Pinned Out
Although P3, P4, P5, P6, and P7 are not brought out to pins on the C8051F061/3/5/7 devices, the Port Data registers are still present and can be used by software. Because the digital input paths also remain active, it is recommended that these pins not be left in a floating state in order to avoid unnecessary power dissipation arising from the inputs floating to non-valid logic levels.
C8051F06x.pdf, с. 219.
0
Ну да они так и сказали, что они не первые, многие так делают.
0
память тестируют при какой температуре? вполне возможно что при комнатной будет работать, а при 85 давать сбои.
0
Я не в курсе, как проходят тесты, но я думаю тестят на всех рабочих диапазонах температур и напряжений иначе это будет лажа.
0
просто непонятно по какому принципу проходит сортировка по памяти — в результате реальных тестов, или чистый маркетинг. Например в STM32F100C4T6 без сбоев пишется 128К, при нормальной температуре.
0
Кристалл делают в максимальной комплектации — т.е. для F100 в 48-ногом корпусе максимум памяти — это 128К. А дальше чистой воды маркетинг — проверяем работоспособность 32К и продаем её как с памятью 32К, проверяем 128К — продаем как имеющую на борту 128К (индекс CB).
Схожая политика применяется в игровой индустрии, когда зачастую в исходниках все есть, но продается игра в кастрированном виде, а за денюжку ты расширяешь её функционал — покупаешь DLC.
0
Ради прикола решил проверить на STM8L101F2P6 (4кб Flash-памяти). В STVP выбрал кристалл STM8L101x3. Считалось 8кб без ошибок… Записал в конец 16 байт. Передернул питание, считал — записанные байты читаются без ошибок.
Интересно как можно проверить качество «дополнительной» Flash-памяти?
0
Все что не упомянуто производителем в официальной документации — на твой страх и риск. Поэтому проверка качества тебе ничего не даст.
+1
Cube при выборе stm32f103c8 (64kb) подкладывает файл от stm32f103*b(128kb). Удобно однако.
0
stlink тоже легко читает до 128 Кбайт, дальше фэйлится
0
Так же поступают в интел и нвидиа. У интела, например, кристалы, располагающиеся в центре шаблона имеют на выходе максимальную частоту. Те, что скраю — с пониженной. Плюс в режиме тестов если обнаруживаются ошибки в кешах или еще где — отрезаются перемычки, отключая эти модули. И обычные процы становятся celeron. В нвидиа путем подмены дров можно получить видеокарту, стоимстью за 30000, изначально потратив 5-6. Кристал один и тот же, разница только в прошитом ID. Как в анекдоте: «Чем отличается у вас пиво то, что подороже от того, что подешевле? — Сам не знаю, с одной бочки наливаю.»))
0
В нвидиа путем подмены дров можно получить видеокарту, стоимостью за 30000, изначально потратив 5-6
Уже несколько лет как «нельзя».
-1
возможно, тему углубили, и теперь придется править тело самих драйверов, что в принципе, некоторые уже делают. Однако сам принцип остался тот же самый. Нет смысла делать несколько оснасток для двух — трех — пяти вариаций чипов. Дешевле — использовать одну, а потом разными способами даунгрейдить. Самый верный но самый дорогой — пережигать перемычки. Подешевле — программно. Думаю, второй вариант гораздо чаще используется, в том числе и в ST
0
Здесь есть пример того, как прошивается драйвер, чтобы разрешить карте выдавать разрешение для 4К монитора на частоте 60Гц, хотя изначально такая фича не допускается дровами.
0
Я говорил про некогда популярные превращения NV GeForce <--> NV Quadro. Не Макинтошем единым, опять же…
0
Вероятно, память не дополнительная, а «аварийная». И при не очень хорошем качестве заданной партии кристаллов из живых блоков всегда можно насобирать нужный объем для МК
0
  • avatar
  • igorp
  • 17 сентября 2015, 11:53
Выше уже описали как это получается.
Приезжали недавно к нам Александр Квашнин (инженер по применению микроконтроллеров ST) и Роман Лудин (технический менеджер по маркетингу компании STMicroelectronics). Задал им вопрос по поводу «лишней» флеш памяти. Нам объяснили следующее. Для каждой линейке для каждого корпуса МК при производстве используют одну маску, заряженную по максимуму, т.к. не выгодно иметь для каждой серии свою маску. Т.е. в принципе во всех мк заряжена максимально возможная память. Разница лишь в тестировании мк при их производстве (сколько памяти положено — столько и тестят). Так же пояснили по поводу наличия «несуществующей периферии» — так как маска одна, то и периферия должна быть тоже максимальная. В некоторых случаях ее такой и оставляют (она просто не проходит тесты и никто гарантии на ее работоспособность не дает), а в некоторых случаях при производстве пережигают перемычку и отключают ее (например Crypto/hash processor).
«Exeland»
0
То что вы описываете — не технологично. Учитывая, что при налаженном производстве % отбраковки мал, то проще выкинуть кристалл. Надо понимать, что чтобы «насобирать живых» блоков адресация каждого блока должна быть прожигаемой, чтоб можно было пережечь ее адрес на новый, это отдельная область OTP, это дополнительный процесс в производстве, это дополнительное время.
Даже в NAND при тестировании на производстве BAD-блоки просто помечают, а не сортируют. А в МК адресация последовательная, там нельзя просто пометить BAD-блок и потом его игнорить.
0
Только недавно изучал документацию на IP флэшки одного завода, и насколько я понял, там флешка укомплектована запасными несколькими секторами, которыми можно подменить основные запоротые. И вроде даже подмена производится простой записью в соответсвующие служебные регистры.
0
Скиньте ссылку на документацию. Если это NAND флеш, то вы не правильно поняли принцип подмены. Подмена происходит на программном уровне, на уровне файловой системы. Файловая система (например yafs) пропускает помеченные сектора (у файловой системы свое адресное пространство), физическая адресация блоков остается.
0
Документацию скинуть не могу, к сожалению, большие красные надписи CONFEDENTIAL не дают этого сделать) Какие еще файловые системы оО? Речь о памяти, которая интегрируется в микроконтроллер и, соответственно, о подменах внутри самого IP-блока флэшки. С началом рабочей недели смогу поглядеть механизм внимательнее и дать некоторую информацию.
0
к сожалению, большие красные надписи CONFEDENTIAL не дают этого сделать)
весь тырнет завален «CONFIDENTIAL»...CONFEDENTIAL реально высший секретный уровень :)
Сделал копию экрана — лишнее затёр

У Сименса карты ММС для ПЛК на 16 мбайт форматируют и продают как на 64 КБайта по цене как за 128 ГБ… :)
SMC на 4 мбайта на самом деле на 8 мбайт.
0
весь тырнет завален «CONFIDENTIAL»...CONFEDENTIAL реально высший секретный уровень :)
Ну опечатка вылезла, с кем не бывает.

Сделал копию экрана — лишнее затёр
Примерно это и преполагалось под «смогу поглядеть механизм внимательнее и дать некоторую информацию»
0
NVR — Non Volatile Register сектора.
Двенадцатый NVR заполняется адресами плохих основных секторов производителем при проведении тестов (wafer test).

Так что подмену вполне можно организовать аппаратно. Но наверное проще выкидывать кристаллы с плохой памятью, чем внедрять логику подмены.
0
Ну примерно так же, как в NAND FLASH… Ввели дополнительный регистр, куда завод или пользователь может поставить метку, что блок имеет ошибки. Физическая адресация не меняется. Аппаратную подмену в этом случае сделать нельзя, можно только программно реализовать подмену, ядру приходилось бы каждый раз обращаться в этот регистр и проверять можно ли с этим блоком работать или нет. Да и программатор, которому пофиг на все и выполняет то, что ему сказано сверху будет писать в блоки последовательно, согласно тому как скомпилирован код. Под аппаратной подменой я подразумеваю, когда меняется сама матрица адресации блоков, а она обычно дубовая не перестраиваемая. И вообще эти области в которую записываются метки сами являются такими же блоками и на производстве пришлось бы их тоже проверять и отбраковывать чипы.
0
Пользователь не имеет права доступа для записи этого блока. Под аппаратной подменой подразумеваю дополнительную оболочку над verilog модулем флэшки, такую, чтобы когда по амбе шине приходит адрес, оболочка давала данные из основного массива или из резервного, в зависимости от адреса. В данном, случае я говорю о микроконтроллере с cortex ядром с точки зрения разработчика и о реализации подмены на этапе разработки.
0
Я рассуждаю о МК от ST. Что можно было бы сделать и что сделано. Считаю что их подход правильным и оптимальным.
0
Считаю их подход правильным и оптимальным.
р.s. Где кнопка «редактировать»?
0
Редактировать коменты? Пфф, забудь, ты же на we.ee )
0
Не спорю, мне тоже во многом нравятся их инженерные решения.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.