2

Я думал о том, как при программировании моей целевой платы PROGRAMMER программирует целевую плату на основе информации, присутствующей в исполняемом исполняемом файле, что, по моему мнению, выполняется с помощью сценария компоновщика, связывая различные файлы и создавая информацию .init, .text, .data, .fini и т. д.Каковы изменения, внесенные в сегмент кода, когда компании развертывают обновления программного обеспечения?

Мне было интересно, когда, например, Apple выпускает обновление iOS, которое составляет, например, 100 МБ, это обновление имеет свой собственный набор переменных - глобальный статический const, инициализированный, неинициализированный и т. д. Это приведет к новой карте памяти. Итак, теперь, когда это обновление устанавливается на процессоре, рассматривают iPhone, то как это работает? Есть ли дополнительная память в разделе .init, .text, .data и т. Д. Кода ОС для таких будущих обновлений?

PS: Я мог бы сделать некоторые технические ошибки в моем описании выше, я буду признателен за любые изменения к нему

+0

Ум, обычно это просто заменяет старые вещи. Нет причин держать его вокруг, не так ли? Поэтому нет оснований хранить «пространство» для будущих вещей, потому что это будет просто написано в любом случае. – AbstractDissonance

+0

Что вы подразумеваете под заменой старого? новое обновление, определенно, не такое же, как у более старого, а затем как? Я не думаю, что все программное обеспечение ОС переустановлено – Anurag

+0

Вы когда-нибудь задумывались, почему вам обычно нужно перезагружаться после такого обновления? Нет необходимости обновлять текущую ОС в памяти, так как вы можете обновлять файлы на диске и перезагружаться, чтобы загружать новые файлы. – Macmade

ответ

0

Ответ на ваш вопрос очень прост, чтобы быть честным. Ваш основной вопрос: «Где вы получаете память для будущих обновлений программного обеспечения». Ответ - DRAM системы. В первой части вашего вопроса, вы говорите о голом программировании. Ваша вторая часть вопроса касается программирования уровня ОС. Для первой части вы в основном ставите процессор в режим isp и программируете флэш-память или другую nv-память. Во второй части, как он работает, совершенно иная.

В принципе, (снятый механизм) ваше обновление разделено на части: загрузчик, ядро, initramfs, прошивка, приложение. Сначала вы передаете код (упакованный пакет) на устройство, используя какой-либо протокол, например say ftp. Эта передача действительно помещает код в DRAM системы. Затем на вашей системе (например, под управлением Linux) у вас есть код (логика), чтобы разжать этот код и выполнить проверки целостности (контрольная сумма файлов). Затем система имеет дополнительный код для анализа всех этих компонентов и определения необходимости обновления любого из его существующих компонентов (проверьте сумму md5 входящего компонента и сравните с существующей). Например, если вы внесли изменения в сценарии инициализации ядра или хотите создать новый скрипт в init.d, вы в основном изменили initramfs. Таким образом, код в системе видит это и определяет, что мне нужно обновление на initramfs.

Также конечным пунктом назначения нового кода является вспышка. Поскольку у вспышки есть определенные правила, вам необходимо следовать, чтобы делать записи и стирать их, вы в основном монтируете флэш-файловую систему на вспышке. Но вы не можете использовать это для записи кода, поскольку файловые системы, такие как jffs2, используют механизмы выравнивания износа, и, следовательно, данные разбросаны в физической вспышке (с установленным на ней jffs2). Это неприемлемо, потому что вы хотите, чтобы ваш полный загрузчик, ядро, initramfs и т. Д. Находились в смежных местах во флэш-памяти. Итак, в нашем примере с системой под управлением Linux у вас есть что-то, называемое mtd driver. Вы можете использовать этот драйвер для программирования вспышки со всеми компонентами. Короче говоря, DRAM является промежуточным местом для обновлений программного обеспечения. Таким образом, вы должны убедиться, что один из двух 1. У вас достаточно памяти 2. Комплект обновления программного обеспечения подходит для DRAM.

+0

Я куплю абзац за $ 10;) –

+0

Вместо этого я мог бы сделать взнос: P –

+0

Серьезно, разбить это на параграфы очень поможет. На данный момент это гигантская стена текста. Просто вставьте пустую строку в уценку, чтобы начать новый абзац. –

Смежные вопросы