Перейти к содержанию
    

Но я бы попробовал подрезать app_flash в пользу rom, уговорив разработчиков.

Ekka так и не показала образ памяти в 'app_flash'. У меня есть стойкое подозрение, что бОльшая часть того региона заполнена FF и проблема выеденного яйца не стОит.

Не представляю - чего такого можно написать на 1МБ на МК? Разве что картинок понасовать.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня есть стойкое подозрение, что бОльшая часть того региона заполнена FF и проблема выеденного яйца не стОит.

Возможно. Но у меня, к примеру, корректность прошивки контролируется путем подсчета CRC32 по всей отведенной для нее памяти.

Т.е. вполне могут быть FF, а в конце 4 байта CRC32.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно. Но у меня, к примеру, корректность прошивки контролируется путем подсчета CRC32 по всей отведенной для нее памяти.

Т.е. вполне могут быть FF, а в конце 4 байта CRC32.

Глупо считать CRC для мегабайта байтов заполнения. Умные люди CRC располагают в пределах образа прошивки или сразу за его концом. Хотя чудаки всякие бывают....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Глупо считать CRC для мегабайта байтов заполнения. Умные люди CRC располагают в пределах образа прошивки или сразу за его концом. Хотя чудаки всякие бывают....

Для приложения я выделил 64кБ памяти. В самом конце 4 байта - это CRC32 всех 64кБ без 4 байт.

Сейчас прошивка весит 12кБ. Через месяц будет 56кБ. Где и как по вашему умный человек должен хранить CRC32,

чтобы загрузчик без проблем обновил приложение и проверил корректность прошивки?

Кста, файл с обновлением шифрованный вместе со всеми FF и имеет фиксированный размер и структуру.

 

На самом деле это не имеет никакого значения, т.к. нет никаких гарантий что сейчас образ имеет в конце FF,

и в будущем там ничего не появиться. Кста, ТС давно уже мог бы и прояснить что там в этом мегабайте?

FF-ы, CRC32 или данные? А то некоторые, вместо того, чтобы задать правильный вопрос, уже в какой раз включают

режим телепата и оскорбляют пользователей почем зря.

 

jcxz что-то вы в последнее время ведете себя как не профессионал. Опыт и знания чувствуются есть, но манера общения недружелюбная.

Люди на форум приходят за помощью, а не для того, чтобы их унижали, оскорбляли или воспитывали. Имхо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для приложения я выделил 64кБ памяти. В самом конце 4 байта - это CRC32 всех 64кБ без 4 байт.

Сейчас прошивка весит 12кБ. Через месяц будет 56кБ. Где и как по вашему умный человек должен хранить CRC32,

чтобы загрузчик без проблем обновил приложение и проверил корректность прошивки?

У меня CRC хранится внутри образа прошивки (вместе с контролируемым ей размером образа) без всяких FF в конце. И загрузчик нормально её проверяет и расшифровывает и обновляет. Не вижу проблем.

И размер прошивки - переменный. У нас планируется в будущем добавить содержимое HTTP-сервера в образ прошивки, а это - до 2МБ. И что-ж мне и сейчас 2МБ файлы прошивок таскать? :smile3009:

А если завтра Вам потребуется добавить какой-нить массив в прошивку на пару сотен КБ, а Вы уже себе все ходы обрезали - что будете делать?

А в некоторых проектах мне приходилось обновлять прошивки удалённо через GSM/спутник/ZigBee/PLC для пары сотен устройств в сети. Если-б я туда заложил образы прошивок на весь доступный объём флеша, то и счета за GSM/спутниковый_инет были бы хорошие такие у заказчиков и само обновление весь обмен по ZigBee/PLC вешало бы на день если не больше.

 

Люди на форум приходят за помощью, а не для того, чтобы их унижали, оскорбляли или воспитывали. Имхо.

Где я Вас оскорбил??? :wacko:

Конечно - желающий оскорбиться, всегда найдёт повод, раз он того желает. Так что-ль?

И тут вроде форум электронщиков, а не кисейных барышень.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . .Не представляю - чего такого можно написать на 1МБ на МК? Разве что картинок понасовать.....
При наличии TFT + тачскрина грузят .NET

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вижу проблем.

А у меня образ под всю зарезервированную память. И тоже нет никаких проблем с расшифровкой и обновлением.

 

У нас планируется в будущем добавить содержимое HTTP-сервера в образ прошивки, а это - до 2МБ. И что-ж мне и сейчас 2МБ файлы прошивок таскать?

А в чем проблема? В медленном и дорогом канале связи?

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

Можно и 2МБ залить по Ethernet за несколько секунд.

Если бы обновлялся с перфокарт, то подумал бы о каждом байте, но к великой радости - такое время давно прошло.

 

Где я Вас оскорбил??? :wacko:

Умные люди CRC располагают в пределах образа прошивки или сразу за его концом. Хотя чудаки всякие бывают....

Меня - нигде. Но ходите по грани. Объясню импликацию "умные люди" "располагают за концом".

Но "располагают в конце 2МБ" не означает что "человек не умный". Вам это понятно.

Типа как "незнание закона" "не освобождает от ответственности". А "знание" что? "Освобождает" что ли?

Согласен. Можно под прошивку использовать только часть доступной памяти с резервом на будущее. И такой подход

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

доказывает отсутствие ума. В рамках логики это утверждение не может быть ни истинным, ни ложным.

Но вы решили, что это признак чудака.

 

Теперь по сути. Какой смысл ТСу вместо этих FF записывать туда свой код? Никакого.

Сегодня там FF, а завтра какой-нить HTTP-сервер. Т.е. вы с позиций умного человека советуете

эту область использовать по своему усмотрению? И всякий раз когда FF сместятся при каком-нить обновлении

заново собирать свое приложение с плясками по свободным местам?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Согласен. Можно под прошивку использовать только часть доступной памяти с резервом на будущее. И такой подход

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

доказывает отсутствие ума.

Не согласен совершенно.

Если некто сделал что-то ногодрыгом, типа "и так сойдёт", "ведь работает". Хотя рядом был периферийный блок, на котором нормально можно было сделать.

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

Я не буду считать такого человека профессионалом, пускай даже этот девайс и как-то работает.

Сделанное на "отвали" - это признак непрофессионала, а значит глупого человека.

То что "оно" сейчас как то работает, не означает ничего. Потому что завтра потребуется что-то добавить и будет облом. Или использовать в последующих разработках.

А пример почему большой образ прошивки плохо - я Вам привёл. И примеры эти - из реальной жизни, из моей практики.

 

Т.е. вы с позиций умного человека советуете

эту область использовать по своему усмотрению? И всякий раз когда FF сместятся при каком-нить обновлении

заново собирать свое приложение с плясками по свободным местам?

Вы похоже чего-то не поняли в моём сообщении.... :wacko:

ТСу нужна память. Я написал что она может посмотреть в конец области add_flash, и если там FF, то скорей всего эту область можно урезать и использовать для себя.

И вот если написатели её ПО поступили как я, а не как Вы, и не считают CRC по всем этим FF, то никаких проблем урезать сегмент app_flash не будет. Вот Вам и ещё один аргумент в пользу моего подхода.

А если они поступили как Вы и даже не подумали, то теперь эта область как балласт - и сами не юзают и другие не могут. Вот это и есть глупый подход.

И куда там FF сместятся? Подходите, пожалуйста, опять с позиций умного человека: естественно надо урезать с конца регион app_flash и ничего никуда не сместится.

Если то чужое приложение может само обновляться (чего не следует из сообщений ТС), то отрезаемый регион стоит подровнять по границам блоков стирания флешь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И вот если написатели её ПО поступили как я, а не как Вы, и не считают CRC по всем этим FF, то никаких проблем урезать сегмент app_flash не будет.

Сегодня не будет, а завтра будет.

Допустим половина области сплошные FF. ТС взял их под свои нужны. Завтра новая прошивка, но уже FF больше половины,

и все это налезает на прошивку ТСа. Ваше "скорей всего" и есть дилетантский подход к разработке.

У меня есть ТЗ, я по этому ТЗ все реализовал и выбрал соответствующие ресурсы. Разумеется профи не будет

ставить 2МБ чип, когда проша со всем ТЗ умещается в 64кБ.

 

И про ногодрыг непонятно. Это светодиодом по DMA управлять? Или UART ногодрыгом при свободных аппаратных UART?

Конечно, для светодиодов индикации я использую ногодрыг и софтовые таймеры, если нужно мигание (1Гц и т.п.).

Периферию гружу по максимуму, но только там где это надо.

 

Тут вопрос другой. Что делать с недостатком памяти? Либо ставить чип объемнее, либо согласовывать и утверждать новую карту памяти.

Можно навесить внешней памяти, но это затратнее толстого чипа. Все! Никаких других профессиональных, гарантированных,

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

свете себя выставляете.

 

Лирика: более 10 лет назад я работал в одной компании. Там был свой софт и своя база данных. Дык, никакого способа добраться

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

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

ну уж очень плотно на эту утилитку подсели, ибо исполнительную документацию можно было сделать гораздо точнее и быстрее.

Свою работу я закончил, про утилитку забыл, а проектировщики продолжали ее использовать.

Потом поменялась версия софта и чуть-чуть это затронуло базу. Я чуть-чуть поправил утилитку (по просьбе трудящихся),

но разбираться пришлось практически заново (реверс новой базы). После третьего по счету реверса пришлось объяснять,

проектировщикам про боль тленного мира, про варианты прямые и совсем неправильные.

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

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

рассказываю эту историю и предупреждаю, что сегодня может работать, а завтра нет. Кто хочет - тот рискует,

но я пути, не позволяющие гарантировать результат, стараюсь не выбирать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваше "скорей всего" и есть дилетантский подход к разработке.

У меня есть ТЗ, я по этому ТЗ все реализовал и выбрал соответствующие ресурсы. Разумеется профи не будет

ставить 2МБ чип, когда проша со всем ТЗ умещается в 64кБ.

Вы вообще исходное сообщение ТС читали? Про какой "выбор чипа" вообще говорите, какой "выбор ресурсов"??? У ТС - есть конкретная прошивка под конкретный чип, и она хочет кроме неё записать ещё что-нить.

"скорей всего" - потому что ни я ни Вы (думаю) не знаем от чего зависит работа той готовой прошивки у ТС. И от чего она перестанет работать. И потому что если бы эта задача стояла передо мной, то давно бы уже решилась за несколько минут. Но я не могу видеть что там у автора топика.

Да и каково ваше то предложение, "не дилетантское"? :rolleyes:

Вы то что посоветуете в этой ситуации? Флешь трогать нельзя, а что тогда можно трогать?

 

Тут вопрос другой. Что делать с недостатком памяти? Либо ставить чип объемнее, либо согласовывать и утверждать новую карту памяти.

Можно навесить внешней памяти, но это затратнее толстого чипа. Все!

Ещё раз перечитайте исходное сообщение. Прошивка есть под конкретный МК и с большей памятью его видимо нет (иначе вопрос вообще не должен стоять). А может вообще - есть готовое устройство, в которое нужно что-то добавить?

Внешняя память? А грузить куда? Есть внешняя ОЗУ? А пины для подключения внешней памяти есть? А как подключение внешней памяти повлияет на существующую готовую прошивку? Не станет ли она глючить после этого? А если текущая версия не глючит, то не станут ли глючить последующие обновления? ...которые не знают как ТС подключил свои external RAM and FLASH.

Так что получается и ваше решение как Вы выразились - "хайли лайкли", а по-русски - как фишка ляжет. Только с гораздо большими сложностями и расходами :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У ТС - есть конкретная прошивка под конкретный чип, и она хочет кроме неё записать ещё что-нить.

Получается, что ТСу нужно 40кБ прошивки превратить в 32кБ. Удачи.

Можно константные массивы (звуки, картинки, таблицы) вынести по внешнюю последовательную EEPROM,

если это сэкономит 10кБ памяти.

 

Ещё раз перечитайте исходное сообщение

Вот вы и почитайте. Узнаете, что у ТС сначала 429, потом 407, какие-то discovery... но толком в первом посте ничего не объясняется.

Он попросил объяснить как SDRAM ему может помочь - ему объяснили.

Но если SDRAM подойдет, то и МК придется какой-нить STM32F427V использовать с FMC (но есть у меня подозрения, что SDRAM в V-корпусе не получится).

Дык, если уж докатились до смены МК, то проще взять STM32F427VI с 2МБ памяти и забыть про SDRAM и т.п.

 

jcxz, я, пожалуй, общение с вами прекращу, т.к. создается впечатление, что какой-нить Николай Семенович

взломал вашу учетку и публикует неадекватные сообщения на форуме с очевидным нарушением логики и базовых принципов.

Как отвоюете учетку назад - буду рад продолжить общение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет, спасибо за ваши советы.

Я сейчас действительно роюсь в файлах разработчика и пытаюсь "оторвать" от приложения и добавить к своему проекту хотя бы еще 16К

 

Что делаю:

Перераспределяю память в обоих файлах линковщика (у моего проекта с дровами на все, и в файле на приложение разработчика - по совету самого разработчика)

Также по его совету меняю команды вызова загрузчика stm32flash, который вызывается из приложения разработчика YAPLC-IDE и пилит код по адресу,

0х08008000. Сколько я не меняю настройки в файлах разработчика...нифига, загрузчик упорно пишет в этот адрес.

 

Как распределить память для моего проекта и приложения разработчика - вродь разобралсЁ.

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

этого несчастного загрузчика достучаться не могу.

 

Вообще, что у меня происходит :

У меня есть некий проект (инит всего МК, к чему может обращаться YAPLC-IDE, некий проект yaplc-runtime для stm32f4disco)

В нем успешно настроены - модбас, входы/выходы, ацп, цап, canFestival - подгрузка которого много весит)

 

Этот рантайм хранится с 0х08000000 по 0х08008000, не включительно, занимает 32К, пару страниц ( это стандартно)

Но мне понадобилась третья страница для моей проги)

 

Приложение разработчика грузится в память из среды YAPLC-IDE через загрузчик stm32flash.

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

нужно сменить с 0x08008000 на 0х0800С000...

 

Что такое...

 

Простите, если я некорректно задаю вопросы.

Если нужны какие-то уточнения - я уточню.

 

 

Вопрос, наверное, так лучше задать...
После поднятия Boot, вызывается загрузчик и появляется его консоль, где я вижу, с какого адреса
этот загрузчик пилит...

Как мне изменить этот адрес, как понять, откуда именно он его берет?

Изменено пользователем Ekka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приложение разработчика грузится в память из среды YAPLC-IDE через загрузчик stm32flash.

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

нужно сменить с 0x08008000 на 0х0800С000...

Утилита управляется из командной строки, если ЭТО, ключами, в том числе адресация что-куда.

Может есть заблокированные самой утилитой "служебные" диапазоны адресов, куда запрещена запись.

Если есть возможность, посмотрите с какими опциями стартуется stm32flash.

Если грузится формат hex, то адресация забита в нем, и изменить это может перекомпиляция на другие адреса.

ps

Вот, вроде этого, в FAQ здесь

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет всем. Как писать с другого адреса от загрузчика - сделано.

 

 

Возникла проблема - может кто-то с таким сталкивался, или проблема типичная для новичком или пробелы в моем знании

 

организации памяти в stm32f4...НО

 

Может, кто-то в курсе, почему при указании адреса начала записи 0х08008000 все пишет, куда и указано

Но стоит указать адрес 0х0800С000, и я получаю код, записанный по адресу на сектор позже, 0х08010000?

опять же, если укажу адрес 0х08020000 (начало 5 сектора), получу код, начиная с адреса 0х08028000

Может быть проблема в разных размерах секторов памяти?

 

Подскажите, что я делаю не так...??? :smile3046:

 

память в моем коде

MEMORY
{
    rom       (rx)  : ORIGIN = 0x08000000, LENGTH = 128K
    app_flash (rx)  : ORIGIN = 0x08020000, LENGTH = 896K
    ram       (rwx) : ORIGIN = 0x20000000, LENGTH = 8K
    appram    (rwx) : ORIGIN = 0x20002000, LENGTH = 120K
}

 

Приложение разработчика

MEMORY
{
  flash (rx)  : ORIGIN = 0x08020000, LENGTH = 896K
  ram (rwx)   : ORIGIN = 0x20002000, LENGTH = 120K
  ccm (rwx)   : ORIGIN = 0x10000000, LENGTH = 64K
}

 

Правда, из каких соображений в ccm 64K, я без понятия...

было вообще так

MEMORY
{
  flash (rx)  : ORIGIN = 0x08008000, LENGTH = 992K
  ram (rwx)   : ORIGIN = 0x20002000, LENGTH = 120K
  ccm (rwx)   : ORIGIN = 0x10000000, LENGTH = 64K
}

Изменено пользователем Ekka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам трудно что-то советовать, так как непонятно ни кто именно "пишет":

почему при указании адреса начала записи 0х08008000 все пишет, куда и указано

про кого разговор?

 

Ни что означает:

память в моем коде

и

Приложение разработчика

У Вас есть некий "разработчик" который совместно с Вами пишет код в этот кристалл? :wacko:

Вы вроде совмещали своё приложение с неким готовым кодом, но из вышеуказанных фраз неясно - где говорится про ваш код, а где - про сторонний?

Понимаете: Вашу задачу знаете только Вы, и только Вы видите ваши исходники. А остальным Вы даже не пытаетесь обрисовать картинку, а ваш вопрос больше похож на причитания, а не на просьбу консультации. :crying:

Или как тут принято говорить: "Телепаты в отпуске!"

 

Правда, из каких соображений в ccm 64K, я без понятия...

Может потому, что в данном МК она имеет размер 64К, кэп? :laughing:

 

PS: При задавании вопроса, перечитайте ваш вопрос ещё раз, с позиции стороннего человека, не знающего что там у вас да как. И подумайте - поняли ли Вы сами о чём вопрос? :smile3046:

А то многие вопросы тут звучат как: "Я что-то делаю (не скажу что) с чем-то (не скажу с чем) с помощью чего-то (не скажу с помощью чего) и у меня что-то получается (не скажу что). Подскажите как мне быть, если я хочу другого (не скажу чего)?"

Этот совет не только к Вам относится, но и ко многим другим вопрошающим......

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...