PDA

Просмотр полной версии : Что такое тип флеши?



Матроскин
27.07.2005, 22:36
Не глядите на мой титул "Супермембера" и количество постов. Эти титулы не я себе привинтил. Я стопудовый чайник и не собираюсь стесняться этого обстоятельства. Это всё к тому, что давно не дают мне покоя многие "глупые вопросы", на которые, по крайней мере, в данном форуме я не сыскал вразумительного ответа.
Вот, к примеру один такой : Что такое тип флеши? Это что, просто тот, или иной тип микрухи? Тогда почему для разных типов нужны разные прошивки? Не один ли хрен, в какой кристалл уложить байт за байтом некий массив данных? Лишь бы для процессора они лежали в тех адресах, в которых он их будет искать. По моему скромному разумению, этот тип может иметь значение только для флешера, а не для содержимого прошивки. Тем не менее, для Семёнов, например почему-то надо искать не просто фул данной версии, но именно тот фул, который для данного типа флеши.

sed_alex
27.07.2005, 22:55
На первый вопрос - сам ответил :).
У разных флешек разные протоколы и время записи-чтения, разные режимы стирания и т.д.

Матроскин
27.07.2005, 23:11
Ответ человека, не любящего думать и не умеющего читать. Разные протоколы и время записи-чтения, разные режимы стирания и т.д. - всё это существенно для флешера. Пожалуйста, лей в соответствии с протоколом один и тот же фул в разные флеши!!! Дык ведь хрен попал!!! Сам ведь, небось знаешь. Так что, ответ, как это чаще всего бывает типично про другое.

Botya666
27.07.2005, 23:11
У семенов достаточно часто проверяется соответствие программы во флэшке окружающему аппаратному обеспечению

Матроскин
27.07.2005, 23:17
Если я в то же смое " окружение" ставлю другую флешку, я всё равно ищу фул под тип флешки, а не под окружение.

Botya666
27.07.2005, 23:20
При старте фирмварь телефона берет из епрома данные об ожидаемом аппаратном обеспечении и при несоответствии, в том числе и типа флэши отключается по ошибке. Но на самом деле это было критично только на 35-45 серии и лечилось банальным винсвапом - он исправлял эти данные

Матроскин
28.07.2005, 00:08
Попутно вопрос.
фирмварь телефона берет из епрома данные об ожидаемом аппаратном обеспеченииЗначит ли это, что ещё до заливки чего-то в тело, во влешке уже должно что-то быть? То есть те процедуры, которые должны поддерживать процесс заливки со стороны телефона. Как же тогда можно прошить новую, из магазина флешку?

Botya666
28.07.2005, 00:12
Нет, это было чем то вроде защиты или не знаю чего еще
Сейчас это встречается на семенах в немного другой форме(т.е. проверка не по типу флэхи). Например на 3310 не имеет значения какой фулл ты льешь, так что тип флэши все таки номинальная вещь, за редкими исключениями

Viktor0001
28.07.2005, 03:19
А ещё, адресное пространство флешки поделено на сектора.
Необязательно, что все сектора одинакового размера. И, к тому же, они могут по разному чередоваться.

aspir
28.07.2005, 03:38
разные адреса и строение самой м/схемы. то есть при прошивке чужого фулла в определённом моменте при использовании телефона информация может прописаться не в тот кластер или рам область, которая соответствует данной м/схеме.

короче - даже программная распиновка бывает другая в самой м/схеме

barabaka
28.07.2005, 04:41
Чё-то совершенно забыли, что в фулл флэше есть такое понятие, как лоадер. Т.е. набор процедур позволяющих (кроме всего прочего) ОС телефона общаться с микросхемой памяти на низком уровне. Вот он-то и выполняет роль того "програматора", для которого важен тип микрухи, а точнее её тех. данные.
Скорость как раз и не учитывается, а вот распределение флэшек на секторы и протокол работы с ней, это да.
Не факт, что один лоадер понимает только один тип флэшки. Просто фирма изготовитель может поменять комплектуху на телефон и старый лоадер её просто не поймет. И наоборот. (что случается реже) Он убирает из лоадера поддержку какого-то типа микрух. Вот и возникают непонятки.

Матроскин
28.07.2005, 12:05
адресное пространство флешки поделено на сектораКак бы ни было что там поделено внутри флешки, снаружи, то есть, со стороны процессора (с его точки зрения) любой байт будет лежать именно там, куда он сам его положил. Таким образом, какой бы бардак ни царил внутри кристалла, проц всё равно об этом никогда сам не догадается. И всё будет лежать на своих местах. Например - берёт проц 0-й байт, ставит на шину адреса 000000000, кладёт во флешку. Пофигу, как там внутри оно ляжет. Когда этот байт процу понадобится, он опять поставит на адрес 00000000 и возьмёт именно то, что туда положил. Таким образом, как бы ни была флешка внутри себя заморочена, содержимое файла, который в неё льют от этого никак не должно зависить.

Матроскин
28.07.2005, 12:24
На счёт лоадера - тоже вопросец из серии "дурацких". Где сидит первоначальная процедура, поддерживающая коннекшин телефона с флешером и упомянутую пердыдущим оратором низкоуровневую работу проца с флешкой?
Мои варианты (я чайник, мне можно говорить глупастей):
1. Во флешке. Тогда, взявши девственно чистую флешку (целку, из магазина), попадаем в тупик - тело невменяемо.
2. В ОЗУ (в сраме). Тогда обратно снова облом. Как она туда попадает?
3. Пожалуй, последнее, что приходит в голову. В самом процессоре зарыто что-то вроде ПЗУхи, или прошитой на заводе флехи, где и сидит этот первобытный биос. При нажатии на ОН/ОФФ проц кидается в свой чулан, запускает этот биос, тот, в свою очередь, смотрит в порт, нет ли там попыток законнектиться со стороны флешера, и в зависимости от результата, отвечает флешеру - "чево изволите?", или запускает софт из флешки (фирмварю).

Жду убедительных опровержений моих глупастей.

SERRGE
28.07.2005, 12:43
3 вариант.... во всяком случае так у симена и у самцов... наверно и у других процов... Если ты знаком с PIC то там есть такое понятие Pre boot
По простому: это микропрограмма которая ждет от шины данных определнное последовательность байтов и нормального кода бута, после чего preboot копирует ее в рам и запускает... дальше залитый бут начинает шить флешку и отвечать на те данные которые тебе или производителю надо для своего флешера... У арм процессоров такая же штука)

SERRGE
28.07.2005, 12:46
кстати насчет сименса.... как раз чтобы телефон разлочить надо резать тп, это в свою очередь переводит процессор из режима загрузки данных из флешки.... на внутрикресстальный бут
После этого проц воспренимает внешний бут... и все происходит как написано выше

D53002
28.07.2005, 12:53
Автор оригинала Матроскин
Как бы ни было что там поделено внутри флешки, снаружи, то есть, со стороны процессора (с его точки зрения) любой байт будет лежать именно там, куда он сам его положил. Таким образом, какой бы бардак ни царил внутри кристалла, проц всё равно об этом никогда сам не догадается. И всё будет лежать на своих местах. Например - берёт проц 0-й байт, ставит на шину адреса 000000000, кладёт во флешку. Пофигу, как там внутри оно ляжет. Когда этот байт процу понадобится, он опять поставит на адрес 00000000 и возьмёт именно то, что туда положил. Таким образом, как бы ни была флешка внутри себя заморочена, содержимое файла, который в неё льют от этого никак не должно зависить.

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

И вообще ты хочеш чтобы тебе на всё сразу на пальцах обьяснили?

Встречный вопрос,чему людей 5 лет в инстиутах учат.

service
28.07.2005, 13:23
Я то же такого типа когдато задавал вопрос ответа не было....

Так теперь почитва я зааю свой вопрос

и так имеем

Не один ли хрен, в какой кристалл уложить байт за байтом некий массив данных? Лишь бы для процессора они лежали в тех адресах, в которых он их будет искать.
Я так понимаю что тип флэши важен для проца, получается для каждого типа флэши несколько отличаются дырки куда проц сует данные либо метод либо еще что то отличается (я не знаю что).
идем дальше

У разных флешек разные протоколы и время записи-чтения, разные режимы стирания и т.д.
наверное у разных <b>типов</b> флешек разные протоколы там и так далее, все равно не понятно почему скажем для тойже нокии 3310 пихай какую-угодно флэху шей и все ок, а для симанса под конкрентый тип флэхи коонкретную прошивку....да и еще и есть проблемные типы флэхи (ВА20 и так далее). Получается что симансы привязывают прошивку к типу флэшки и все это проверятеся в проце где то же зашит этот тип флэхи, на подобие лохотеля с тьех зоной.
ТО есть мне хотелось бы узнать что такое тип флеши и нафиг он нужен, почему для симансов он нужен а для других он нафиг не нужен...

ПыЗы присоединяюсь к матроскину в части не судит строго ибо....

Матроскин
28.07.2005, 14:37
SERRGE
Если ты знаком с PIC то там есть такое понятие Pre boot Вот наконец-то человек отвечает чётко именно на поставленый вопрос. Теперь мне немного полегчало. Ато как будто муравей под черепом возится : "как же это оно так могет быть?!". Остаётся всёж-таки открытым первоначальный вопрос. Что за тип флешей такой у семёнычей?!

irmis
28.07.2005, 18:26
Всё понятно, если влить флеш чужого типа, тело невключится, значит чтото там неподходит. Но если влить флеш чужого типа в такой порследовательности: full, boot, eeprom тело включается. В чём разница, данные ведь теже?

Viktor0001
29.07.2005, 04:24
Например - берёт проц 0-й байт, ставит на шину адреса 000000000, кладёт во флешку. Пофигу, как там внутри оно ляжет. Когда этот байт процу понадобится, он опять поставит на адрес 00000000 и возьмёт именно то, что туда положил.
Алгоритм записи-чтения флешки намного сложнее.
Взять для примера Нокию 3310, у флешки всего лишь 20 разрядная шина адреса. Значит, напрямую можно было бы адресовать всего лишь 20 ячеек памяти.
Если объединить их в матрицу 20 х 20., то уже 400 ячеек. Но и выборка нужного адреса, будет уже происходить сложнее, в два цикла.
В первом высталялся бы адрес столбца, во втором - адрес строки матрицы, и уже только после этого, чтение или запись выбранной ячейки.
При такой организации, чтобы увеличить число адресуемых ячеек, пришлось бы пропорционально увеличивать разрядность шины адреса., тоесть количество выводов на микросхеме. И двухмегабайтная флешка имела бы такие габариты, что её пришлось бы носить в чемодане. Было бы крайне неудобно пользоваться таким телефоном, и уже трудно былоб назвать его мобильным.
Поэтому, для увеличения объёма доступной памяти, увеличивают не количество ног на флешке, а усложняют алгоритм адресации ячеек.
Процессор и флешер должны знать этот алгоритм, иначе не смогут ничего записать или прочитать.

barabaka
29.07.2005, 04:25
Блин. Ну флэшка этож не ОЗУ. У неё нет понятия записать или стереть байт по адресу просто поставив адрес на шину адреса и поменяв значение с 55h на AAh. Для этого существует команда "sector erase", которая восстановит ВСЕ биты в секторе до уровня лог "1". (ну-ка почитайте про плавающие затворы). После этого можно один раз менять "1"->"0", те производить запись.
А теперь, например, телефон работает с епром и хочет его (епром) записать из своего ОЗУ во флэшь по адресам 1FA000–1FBFFF. Допустим это AMD Am29LV160DT Для этого надо подать команду стереть сектор SA33 и затем произвести побайтово запись (запись, к сведенью, осуществляется тоже при помощи команды.) Сектор SA33, как раз и занимает область 1FA000–1FBFFF. Т.е. всё ок!
Теперь поменяем микросхему на Am29LV160DB. Производим стирание сектора SA33 и затем запись. У нас стирается сектор 1F0000–1FFFFF, а записываем мы тока 1FA000–1FBFFF. Данные 1F0000-1F9FFF и 1FC000-1FFFFF безвозвратно теряются. Я думаю с такой работой не то что телефон, вообще ни одно МП устройство работать не будет.
Если мы поставим SHARP LH28F160BJHG-BTLZ3, то столкнёмся с целым букетом веселух. Во-первых она не байтовая. (Шина данных 16 бит). Во-вторых она не поймёт ни команды "sector erase" ни записать, так как у неё другой протокол этих команд. И в третьих опять же секторность у неё отличается.

Viktor0001
29.07.2005, 04:29
cocos1

Устроим соревнование - кто первый разберётся в этом, тот молодец
А зачем нужно в этом разбираться? Это для тех, кто пишет флешеры, но для этого сначала нужно научиться программы писать..

barabaka
29.07.2005, 04:30
Мультипликсирование отсутствует, несмотря на заявления предидущего оратора. Могут разделить только на банки. Обычно не более 8.

barabaka
29.07.2005, 04:37
Что касаемо зацепки с компом, то сюда точно лезть не имеет смысла. Извините, но не ваше это дело. Могу только сказать, что preloader может находиться как во флешке, так и в самом проце. Так что поменяв флэшку на чистую, можно оказаться у разбитого корыта. (Для экспериментов попробуйте Motorola T191 или Sony J series)

Botya666
29.07.2005, 09:53
Практика показывает, что это все таки исключения, а не правила.
Похоже самим мануфактерам проще ставить флэхи с одинаковым "поведением".

DKoj
29.07.2005, 12:15
Ё-мае и это форум для начинающих:lol: Буду чаще сюда заходить.

barabaka
29.07.2005, 14:55
Автор оригинала cocos1
Ты-бы сразу объяснил - чем отличается T от B. Забыл, где находишся?
Практически ничем, за исключением разбивки на секторы. У одной "отличия от нормы" в начале адресного пространства, у другой в конце.


Автор оригинала botya666
Практика показывает, что это все таки исключения, а не правила.
Похоже самим мануфактерам проще ставить флэхи с одинаковым "поведением".

Не факт. Экономические соображения зачастую побеждают технические.

service
29.07.2005, 16:51
И все равно я нифига не понимаю (да я ламмоо и что теперь).

Автор оригинала barabaka Могу только сказать, что preloader может находиться как во флешке, так и в самом проце. Так что поменяв флэшку на чистую, можно оказаться у разбитого корыта. (Для экспериментов попробуйте Motorola T191 или Sony J series)
ну так ставим флэшку от мотра в 6210 нокию и шьем фулом от мотра получаем рабочий мотор, я делаю вывод что этого прелоадер в 191 вобще нету (либо он в само прошивки ) ибо ее можно было бы и без перепаивания поднять??? Либо в нокии при прошивки идет опрос флешик (попутно вопрос кто и чем опрашивает флэшку) на предмет того кто ты есть , и на ответ грузится лоадер (под данную микруху) в ту саму облатьс прелоадера. который потом и шьет саму прошивку???? просветите

madhar
29.07.2005, 16:53
Автор оригинала barabaka
Автор оригинала cocos1 Ты-бы сразу объяснил - чем отличается T от B. Забыл, где находишся?

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


Top и Bottom boot block, соответственно.

Тут еще одна засада есть: фул можно добыть разными путями, либо слить флешером из тела, либо перекинуть флешку на другое тело и слить там (как например t191 - и на С35, и на нокии можно) Но например фулл слитый на сименсе будет иметь стандартный (intel) byte order, а на нокии - мотороловский. Соответственно, залив фулл, слитый на нокии, используя в качестве программатора сименс - получим труп.

А есть еще вариант слить фулл на программаторе - тоже может быть не все так просто. Например фулл, считанный с панасоника 87 будет иметь начало (таблицу векторов прерываний) в середине файла. То ли программатор (up48) так читает (cs1 и cs0 путает), то ли в панасонике оно так разведено..

Матроскин
29.07.2005, 18:52
Для флешки, как физической железяки все разряды как на адресе, так и на данных совершенно равноправны. То есть в готовой схеме можно их путать как угодно. Например, пустить задом-наперёд, или поменять местами 2, 3, 5, 10 разрядов - сколько угодно. Если при чтении и записи разряды используются в одном порядке - всё будет путём. Но, ели программатор, например, использует разряды адреса строго в соответствии с даташитом, данным производителем, а разработчики телефонного железа - как бог на душу положит, то вот вам и результат. Прочитанное программатором оказывается абра-кадаброй с точки зрения телефона.

Gurman
29.07.2005, 19:30
при разводке плат так и делается, а еще некоторые программаторы по разному читают байт,старший младший отсюда вся неразбериха, при обмене бинарниками считанными разными программаторами от самодельных до фирменных,

Матроскин
29.07.2005, 20:56
.... у флешки всего лишь 20 разрядная шина адреса. Значит, напрямую можно было бы адресовать всего лишь 20 ячеек памяти....
Я плАчу!!!:visit:

Botya666
29.07.2005, 21:03
да уж, человек явно не писал программ
@service
ну так если на семене бут стереть, а тп не резать ты его тоже только перепайкой поднимешь, на 191 наверное просто не нашли этот самый тп, либо софт влом писать стало

madhar
29.07.2005, 21:32
Автор оригинала botya666
да уж, человек явно не писал программ
@service
ну так если на семене бут стереть, а тп не резать ты его тоже только перепайкой поднимешь, на 191 наверное просто не нашли этот самый тп, либо софт влом писать стало
Не, тут немного по другому: у сименса в самом процессоре есть начальный бут-блок (уж не знаю, как оно там правильно называется, это у сименсоведов спрашивать надо). Т.е. если даже полностью затереть всю флеш (или вообще снять ее), то все равно есть возможность зацепиться к тому, внутреннему лоадеру и далее залить в тело все, что требуется. Резка/замыкание тп, собственно, и подразумевает такой вариант.
А вот 191 (как и всё множество аппаратов, построенных на чипсетах от TI (DBB - ulysse/ABB - Nausica, проще - hercrom20/ twl3012) не имеет такого pre-boot внутри процессора, отсюда все проблемы. Для того, чтобы загрузиться, необходимо иметь рабочий бутлоадер в начальном секторе флешки. В Calypso (hercrom400) такой pre-boot в самом процессоре, по всей видимости, уже имеется.

service
30.07.2005, 13:50
botya666
да я не писал программ (чукча не писатель :) )
ну так правлино значит этот прелоадер (или как его там) находиться у семена в проце, как и писалось рантше при резке ТП активируется внутренный загрузчик в проце, а в мотре иго нету. Ну примрено как madhar говрит я себе и представлял.
Но тема сисек то есть типа флэши не раскрыта... И еще вопрос скажем при прошивки нокии выскакивает Ид флэшки, так вот если этот ИД у нокии, типом флэшки у симансов. Как себе понимаю это я.
НОкия идет туда тычок, на этот тычок выскакивает ответ что Ид флэшки такое грузить знаичит это бутт, который процу разняснетк как в эту ИД првильно шить мцу ????
Симанс
свап та же петрушка, он орпедляет тип флэшик и в соответсиви типу грузит то что нужно и обяснет процу куда что пихать и затачивает прошивку под тип флэши???
фулл прошивка заточена под тип флэши при прошивки тупа идет запихивание фулла без разбирательств, после чего и собтвенно пронблемы.
При чем мне так кажицца что свап все таки спршивает тип флэши так сказать у самой флэши (сорри за каламбур), а вот фрея спрашивает это у прошивки???
я прав или я прав??????????????????

Матроскин
30.07.2005, 15:12
service, на счёт "не писал программ" - это не про тебя было.
А по сути вопроса - ты пытаешься изложить то, о чём сам ещё не сформировал собственное представление. Поэтому - один "сумбур вместо музыки". Сказано некое количество слов, а сути никакой не изложено.
фулл прошивка заточена под тип флэши при прошивки тупа идет запихивание фулла без разбирательствБез разбирательств чего?. Типа флеши, адресов? Если типа - то какая разница, ведь запись-то происходит. В этом можно убедиться, если залить фул, а потом слить и сравнить файлов. Всё копейка в копейку. Следовательно дело не в протоколах и алгоритмах прошивки, а в содержимом фула. Это с самого начала темы и было предметом обсуждения - почему разное содержимое для разных флешек? Не один ли процессору хрен, из какой микрухи он вынимает данные? Лишь бы они лежали в нужном порядке. Я уже начинаю думать, что хитро>!<опые разработчики специяльно в софте заложили проверку типа флеши, чтобы нам с вами жизень мёдом не казалась. Как, например, проверяется серийный номер процессора (необходимость анлочить после замены проца). То есть, по-русски выражаясь мелко нагадили тем, кто будет ломиться нестандартными средствами. Но что-то уж больно это бездарно и неэффективно. Однако, другого объяснения я на данном этапе не вижу.

madhar
30.07.2005, 17:00
Автор оригинала Матроскин
Без разбирательств чего?. Типа флеши, адресов?
Для определенности, что такое тип (идентификатор) флеш.
У каждой флешки внутри зашит manufacturer ID и Product ID. Есть у каждой флешки и команды, коими можно все это прочитать. Например
флеш ST M28W320CT
manufacturer ID = 0020 (ST)
ProductID = 88BA
Да, это та самая BA20 :)


Если типа - то какая разница, ведь запись-то происходит. В этом можно убедиться, если залить фул, а потом слить и сравнить файлов. Всё копейка в копейку. Следовательно дело не в протоколах и алгоритмах прошивки, а в содержимом фула.
Я может быть ошибаюсь (более опытные поправят), но например в сименсе в EEPROM где-то есть софт-ID флеш, соответственно при несовпадении прочитанного из самой флеши hardID и softID из епрома телефон не должен запускаться. (Если не так - ногами не бейте :), а поправьте ). По крайней мере мне встречалось такое в других железках.
И если пролить сверху родной епром после заливки фуллфлеша, то информация о типе флешки реально стоящем на плате совпадет, телефон включится (что реально и происходит)

Может кто-нибудь из прошивкокопателей сименса прокомментировать, так ли это ?

barabaka
30.07.2005, 20:15
Хочу прояснить некоторые вопросы, чтобы не возникало кривотолков.
Итак микросхемы Flash Memory. Имеют массив ячеек с характерными для всех ЗУ шинами адеса, данных и управления. В режиме чтения они ничем не отличаются от других ЗУ. Подали адрес, cs, r/w и пр. и читаем байт или слово с шины адреса. Для записи, в силу специфики самих ячеек им надо высокое напряжение (обычно 12В). Этот режим программирования называют High Voltage Programing. Он применяется в програматорах для повышения скорости записи и полного доступа ко всем возможным режимам работы. (Вспоминаем PIC16F84 c 13.5V ) Так как городить преобразоаватель или питать микро-устройстройсва от 12В никому не выгодно, производители Flash Memory расстарались и засунули преобразователь внутрь самих флэшек. Т.е. Напряжение питания одно: 1.8-5В. Для того чтобы реализовать все режими работы, кроме чтения, используют команды. Это договорённый набор последовательностей состояний всех шин микросхемы. Например, команда Sector Erase: "записываем" по адресу 00555h данные ААh, потом по 00АААh данные 55h, потом по адресу 00555h 80h, затем по адресу 00555h данные ААh, потом по 00АААh данные 55h и наконец по любому адресу внутри стираемого сектора "пишем" 30h. После стирания сектора вывод данных DQ7 поменяет свое логическое состояние. Erase coplete.
"записью" я назвал подачу на шину данных байта (или слова), при выставленном на шине адреса адресе и соответствующей комбинации шины управления (как запись в ОЗУ).

Поэтому говорить о перепутанных рангах шин не стоит. Я не видел ни одного мобильника у которого бы были перепутаны шина данных или адреса (как кажется проще при трассировке). Сущесвуют сдвиги, это понятно. Скажем A9 памяти идёт на А10 шини адреса. (те все А0-А20 идут СООТВЕТСТВЕННО на A1-A21).

barabaka
30.07.2005, 20:47
Теперь о процах. Проц (CPU Core) это всё-таки конечный автомат действующий исключительно по последовательности инструкций, называемых программой. Сам по себе он не станет опрашивать UART (Rx, Tx) с целью выяснить а не хотим ли мы чего нить в (через) него залить. Это делет программа, где либо расположенная, к которой проц имеет доступ.
Естесственно она расположена в ПЗУ (не в ОЗУ). И назовём её pre-loader. Она настраивает железо проца и пытается взаимодействовать с "внешним миром". Внешний мир - это мы с компьютерами, flasher-ами, шнурами и прочей фигнёй. Если мы никак не провоцируем налаживание связи, то обычно pre-loader передает управление основной программе, и телефон включается (ну или не включается :-))). В случае попыток наладить контакт, проги (на компьютере и pre-loader) начинают снюхиваться. Далее идут загрузки, криптования, шифрования, и пр. лабуда, с которой и борятся (или мирятся) разработчики софта.
Pre-loader в ROM проца: siemens, alcatel, lg, SE, motorola, nokia, samsung.
Pre-loader - часть ПО телефона (фо флэшке): sagem, acer, sony, sendo, panasonic.
Список не полный и с возможными исключениями.

sed_alex
30.07.2005, 23:37
madhar
Ti контроллеры пример Hercrom 200 - имеют внутри себя 2 или 3 устройства и самое главное у них на борту есть JTAG.

Чтоб зашить чистую флешку в моторе T191 нужно зацепить тело JTAGом, выставить тип устройство с которым будем работать (по шине будет доступно 3 устройства, нам нужен ARM7TDMI), далее запускаем в него подпрограмму записи данных с шины в флеш.

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

P\S я ленивый мне проще перепаять готовую болванку в тело чем сидеть разбиратся с алгоритмами работы (для 191 и 190 моторов имею несколько зашитых готовых флешек в коробочке с запчастями)

madhar
31.07.2005, 01:24
Например, команда Sector Erase: "записываем" по адресу 00555h данные ААh,

Если не ошибаюсь, это верно для флешек Atmel. Для остальных производителей команды будут другими.
Есть две "базовые" системы команд - Intel и AMD. Остальное - "вариации на тему". Команды будут отличаться не только в зависимости от производителя, но и от конкретного типа флеш.



Поэтому говорить о перепутанных рангах шин не стоит. Я не видел ни одного мобильника у которого бы были перепутаны шина данных или адреса (как кажется проще при трассировке). Сущесвуют сдвиги, это понятно. Скажем A9 памяти идёт на А10 шини адреса. (те все А0-А20 идут СООТВЕТСТВЕННО на A1-A21).
О, а где ты видел такое чудо ? И как оно работать будет тогда ?
Я, когда говорил о странном фуллфлеше с панасоника, имел в виду cs0 и cs1 (выводы chip select).
Там флешка физически устроена так, что в ней есть как бы 2 независимые части, которые и выбираются соответствующим CS.



Теперь о процах. ...
Это делет программа ...
назовём её pre-loader. Она настраивает железо проца и пытается взаимодействовать с "внешним миром".

Давай тоже определимся: в некоторых процессорах есть немножко своей внутренней памяти, ROM и RAM (как пример EGOLD в сименсах)
Места в этой памяти совсем мало, так что железо там никто не настраивает - соответствующие процедуры туда просто не поместятся, да это и не нужно. Единственная задача такого внутреннего лоадера - стартануть бутлоадер с флешки (с 0х00000000, или какого там надо адреса), либо получить внешний загрузчик с serial интерфейса.

Далее, уже бутлоадер во флешке настраивает всю переферию, опрашивает серийный порт (а вдруг мы коротко жмакнули powerup и пытаемся обновить прошивку стандартным флешером), проверяет наличие самой прошивки (как правило, по какой нибудь сигнатуре) и передает управление собственно на main code unit.
Все шифрования/криптования и прочее - задача именно бутлоадера.



Pre-loader в ROM проца: siemens, alcatel, lg, SE, motorola, nokia, samsung.
Pre-loader - часть ПО телефона (фо флэшке): sagem, acer, sony, sendo, panasonic.
Список не полный и с возможными исключениями.

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

Например те же LG:
c1400 - AD6525 (Hercules)
b1200 - Hercrom200 (Ulysse)
F1200 - Hercrom400 (Calypso)

Насчет 6525 ничего толкового не скажу, а вот у Hercrom200 pre-boot нет, при старте процессор пытается запустить
программу, находящуюся во flash с адреса 0x00000000. Если там нормальный бут, то тело загрузится, если мы его испортили - то все. Уже никак, только чем-то внешним можно прописать нормальный бут обратно на его место.

madhar
31.07.2005, 01:35
Автор оригинала sed_alex
Ti контроллеры пример Hercrom 200 - имеют внутри себя 2 или 3 устройства и самое главное у них на борту есть JTAG.
2 устройства, ARM7 cpu core и DSP. Третье устройство - это иногда зацепленная в jtag-цепочку Nausica (TWL3012)
Посмотри сам по схемам, например в панасониках так.


Чтоб зашить чистую флешку в моторе T191 нужно зацепить тело JTAGом, выставить тип устройство с которым будем работать (по шине будет доступно 3 устройства, нам нужен ARM7TDMI), далее запускаем в него подпрограмму записи данных с шины в флеш.
Все бы так просто :)
Есть как бы два варианта: трапнуть процессор, перевести его в debug, залить ему в память лоадер и стартануть его. И далее можно с последовательного интерфейса как обычно слать данные, а лоадер этот будет писать эти данные во флеш.
Второй вариант - Boundary scan, "вручную" шевелить ногами процессора, выставляя на них нужные 1 и 0, тем самым эмулируя процесс записи. Меедленно, поэтому обычно зашивают бутлоадер, а потом уже работают стандартными средствами.



P\S я ленивый мне проще перепаять готовую болванку в тело чем сидеть разбиратся с алгоритмами работы (для 191 и 190 моторов имею несколько зашитых готовых флешек в коробочке с запчастями)
Ну, на hercrome200 не только моторолы сделаны, а еще великое множество моделей...
Так что может имеет смысл
покопаться (http://darkfader.net/arm/) ? :)

Viktor0001
31.07.2005, 02:38
Цитата:
.... у флешки всего лишь 20 разрядная шина адреса. Значит, напрямую можно было бы адресовать всего лишь 20 ячеек памяти....

Я плАчу!!!
Я вам про что толкую.
Что при прямой адресации, 20 линиями на шине адреса, можно выбирать, независимо, только 20 ячеек. Ведь нам не нужна каша, из содержимого нескольких одновременно выбранных ячеек.
Используя мультиплексирование, можно увеличивать число адресуемых ячеек, но за счёт пропорционального уменьшения скорости чтиения-записи.
Чтобы увеличить число независимо адресуемых ячеек, и в тоже время сохранять достаточную скорость доступа к ним, применяют сложные схемы декодирования. Которые встроены в самой флешке.
Адресное пространство флешки поделено на секторы, сравнительно небольшого размера, до 64 килобайт.
Для адресации такого блока памяти, с использованием дешифратора, достаточно 16 линий шины адреса. свободные линии используют для дешифрации номера сектора.
Но здесь ещё такая тонкость. Если все секторы будут по 64 килобайта, то на дешифрацию номера сектора, остаётся всего 4 линии, а этого конечно мало. Поэтому часть секторов делают меньшего размера, к примеру по 8 килобайт. За счёт этого можно "схитрить", и высвободить дополнительные линии, для дешифрации номера сектора.
Скажем, если сделать первые 8 секторов по 8 килобайт, а все последующие по 64, то высвобождаются уже 8 линий шины адреса, которые можно использовать для дешифрации номера сектора. Тоесть, за счёт уменьшения размера нескольких секторов, получить гораздо больший общий размер.
Ну в общем это долго объёснять, да и нужно ли. Если ктото всерьёз этим интересуется, смотрите даташиты на микросхемы, там всё расписано.
Ну а вкратце, процесс чтения-записи выглядит так:
Процессор выставляет на шине адреса двоичный код. При этом часть линий шины адреса используются для выбора сектора, а другая часть - для выбора ячейки в этом секторе. И кроме того, каждый сектор состоит из нескольких параллельных страниц. Таким образом, можно получать на шине данных не по одному биту, а сразу несколько, в зависимости от количества параллельных страниц. Обычнго их число 8 или 16.
Тоесть, за один цикл, на шину данных, считывается сразу 1 или 2 байта. И процесс получается довольно производительный.
Тип флеши, и другие служебные данные, записывается производителем, в процессе изготовления, тоесть в самой флешке. По этим даанным, процессор и определяет для себя, как работать с данной микросхемой.
И флешер также, сначала считывает из микросхемы эти данные, и выбирает подходящий лоадер.. если конечно такой найдётся в его арсенале. А если нет - значит нет. Шить не будет, а напишет, что "неизвестный тип флеши". Как например случилось, когда в Нокии 3310 стали ставить флешки, которые определялись как Flash ID: 002088CE, и флешеры отказывались их шить, так как не знали, какой выбирать лоадер.
Потом выяснилось, что внутреннее усройство флешки не претерпело особых изменений, и подходит уже имеющийся лоадер I28F160.TIA .
Но сейчас конечно уже все покупными боксами обзавелись, и написание новых лоадеров - уже головная боль создателей бокса.
Народ же только кнопки тычет. Как написали - зачем думать, если можно купить.

Viktor0001
31.07.2005, 03:50
В Сименсах, в частности в А35, тип флеши прописан и в самой прошивке.
Наверное есть проверка типа записаннного в самой флешке и записанного в прошивке, при несовпадении тел пишет Wrong Software.
Ради интереса можно подредактировать и посмотреть, примет ли тел такую прошивку.
Вот эти ячейки, напоминаю, что байты нужно переставлять, тоесть последовательность "20 A2" это будет A220, а "20 00 A2 00" - соответственно 002000A2

flash ids are: 002000A2 [00000000] - A220
07FE10h 88 A8 C0 00 FF FF FF FF 20 A2 00 00 00 00 00 00
07FE20h 00 00 FF FF 10 00 20 00 A2 00 FF FF FF FF FF FF
07FE30h FF FF 20 00 A2 00 FF FF FF FF FF FF FF FF FF FF

flash ids are 000122F2 [00000000] - F201
07FE10h 88 A8 C0 00 FF FF FF FF 01 F2 00 00 00 00 00 00
07FE20h 00 00 FF FF 10 00 01 00 F2 22 FF FF FF FF FF FF
07FE30h FF FF 01 00 F2 22 FF FF FF FF FF FF FF FF FF FF

layder
31.07.2005, 04:52
о б#я демагогия на 2 сообщения. типа о том, как бабу тра$$ть.
дешифратор стоит не для удобства во флеши, а для работы по существу. ржу-нимагу.

aspir
31.07.2005, 05:01
ээээээээээээээээээээээээээээээээээээээ

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

Viktor0001
31.07.2005, 14:42
Матроскин спрашивал, что такое тип флеши, и влияет ли он на чтение-запись прошивки. Исписали 4 страницы, но толком ничего не объяснили.
Я вкратце, и насколько смог доступно, обрисовал ему взаимодействие процессора и флеши на уровне железа.
Подумалось, что так будет нагляднее показано, что процессор сможет работать отнюдь не с любой флешкой. И поэтому, прежде чем с ней работать, он должен узнать её тип, и выбрать подходящий алгоритм.
И вообще, я отвечал на вопрос Матроскина.
Если layder такой умный, лучшеб не ржал, а сам объяснил.

layder
31.07.2005, 15:44
:)
просто можно было объяснить проще и точнее. Viktor0001
меня это добило:
Что при прямой адресации, 20 линиями на шине адреса, можно выбирать, независимо, только 20 ячеек. Ведь нам не нужна каша, из содержимого нескольких одновременно выбранных ячеек.

Viktor0001
31.07.2005, 15:57
layder
Проще я написал в своём посте на 3 странице, но почему то никто не понял, и только посмеялись.

Viktor0001
01.08.2005, 03:19
Прошивка залитая и прошивка слитая после первого-же включения уже РАЗЛИЧНЫ. По крайней мере с этим я столкнулся на Legacy Motorola.
А поскольку программа (или протокол) общения с флэшкой находится в самой флэшке, при несоответствии протоколов, на выходе имеем труп.
Flash id залитый на заводе, не стирается. Может только сам, от старости рассосаться.
А после включения, конечно, чтонибуть в прошивке изменяется. В любом телефоне так будет.
Процессор запишет чего нибуть в ЕЕПРОМ, дату например поменяет, или время. Но само тело программы и тем более буткор он не модифицирует.

Viktor0001
01.08.2005, 15:55
В принципе, мобильник - тот же компьютер.
Сам по себе Процессор не обладает какими то интелектуальными способностями. Он может только выполнять программу, записанную на внешнем носителе ( жёсткий диск или флеш память ). И то, самостоятельно он не сможет ничего с них прочитать.
Еинственно, что он может - при поступлении сигнала RESET выставить все нули на шине адреса, и выполнить команду, записанную в этой нулевой ячейке.
Поэтому, в компьютере установлена микросхема ПЗУ. Она подключена так, что нулевая ячейка, как раз и будет первой ячейкой этой микросхемы.
В самой микросхеме записана программа (BIOS). В ней содержатся инструкции и драйвера, чтобы найти и работать с основными устройствами. В первую очередь конечно с жёстким диском. Получив доступ к жёсткому диску, процессор находит на нём операционную систему, и дальше работает уже по командам этой операционной системы.
В мобильнике, роль жёсткого диска выполняет микросхема флеш памяти.
Программа BIOS - буткор. В ней содержатся инструкции по работе с флеш памятью, и так же программа для коннекта с компьютером.
Физически, буткор может быть записан либо в самом процессоре, либо в микросхеме флеш памяти.
Если в процессоре - то телефон будет неубиваемый по софту. Всегда можно законнектить его с компом, и перешить. А если во флешке - то при повреждении буткора придётся её выпаивать и шить на программаторе. Либо прошивать с использованием специальных программ по интерфейсу JTAG.
В Сименсах буткор есть и в ПЗУ процессора и на флешке. В нормальных условиях процессор начинает читать буткор с флешки. Но если он повреждён, то можно с использованием Тест Поинта заставить процессор стартовать с внутреннего буткора, и перешить телефон.
Надо полагать, что буткор на флешке записывают не просто ради прикола.
Тот, что записан в ПЗУ процессора - уже не изменишь. Но если в телефон поставить новый тип микросхем, который не описан в этом буткоре, то телефон наверное работать не сможет.
А буткор во флешке всегда можно обновить, добавить новые типы микросхем, или оптимизировать работу со старыми .
Так же как в компьютере - BIOS на старых материнках не поддерживает жёсткие диски более 32 ГБт. Но перешив его, можно разрешить эту проблему.
Ну в общем у меня такое предположение.

forum
01.08.2005, 16:24
Viktor0001
Очень популярно и развёрнуто.

D53002
01.08.2005, 16:54
Viktor0001
МАЛАДЦА!

Матроскин
01.08.2005, 21:15
Viktor0001
Матроскин спрашивал, что такое тип флеши, и влияет ли он на чтение-запись прошивкиНу дык нет же!!! Матроскин не это спрашивал. Почему никто в России-матушке не отвечает на поставленный вопрос, а обязательно выдумает свой и на него уже и товечает?!!!

Вопрос: Почему СОДЕРЖИМОЕ флеши зависит от типа микрухи?

Что тип флеши влияет на чтение-запись - это и пьяному ёжику понятно. Тут и вопроса-то никакого нету. А вот с какого перепугу вдруг (скажем так) две флешки, одинаково прописанные (да, разными протоколами, но одними и теми же данными) по-разному понимаются процессором. Конечнй результат записи - с адреса 00000000 по фдрес FFFFFFFF процессор видит оно и то же, то есть байт за байтом влитый в него фул. Ведь переставиться местами, или исказиться эти данные не могли же!!!! Почему же токда действия он выполняет разные? Вот в чём ребус.

madhar
01.08.2005, 22:01
Автор оригинала Матроскин
Конечнй результат записи - с адреса 00000000 по фдрес FFFFFFFF процессор видит оно и то же, то есть байт за байтом влитый в него фул. Ведь переставиться местами, или исказиться эти данные не могли же!!!! Почему же токда действия он выполняет разные? Вот в чём ребус.
Еще раз для ясности. Может быть такой вариант:
1) сливаем фулл с нормально работающего телефона, имеющего hardware id флешки 0xCAFEBABE
Где-то в области пользовательской памяти (ясно что не в буткоре и не в основной программе) - в епром - есть данные о этом hardware id, т.е. в фулле по какому-то адресу есть упоминание о CAFE BABE.
2) Заливаем этот фулл в аппарат, имеющий на борту другую флешку, с hardwID 0xDEADBEEF
3) телефон при старте читает железный айди из самой флешки, сравнивает его с записанным в епроме, обламывается, начинает делать то, что прописано у него в алгортме - отключается например, кричит о tamper alert или выкидывает еще какую бяку.
По крайней мере мне точно встречалось такое на другом, не телефонном железе.
дальнейшее развитие этого - применение serial number флешки (процессора, что_там_еще) в качестве привязки.

Продолжать наверное надо на конкретных примерах, а то вариантов может быть множество.

Viktor0001
02.08.2005, 00:27
Матроскин

Ну дык нет же!!! Матроскин не это спрашивал.
И что же этот Матроскин до сих пор молчал.
Вопрос был как поставлен:

Что такое тип флеши? Это что, просто тот, или иной тип микрухи?
Вот и рассуждали об отличиях в устройстве самих микросхем.
А отличия в прошгивках смотри на предыдущей страничке.
Я сравнивал фуллы одной и той же версии прошивки.
У всех прошивок flash ids - A220 , различия начинаются с адреса 0F8020. Тоесть, сама программа во всех одинакова, различия начинаются с области ЕЕПРОМ.
Далее сравниваю прошивки flash ids - A220 и flash ids - F201.

flash ids are: 002000A2 [00000000] - A220
07FE10h 88 A8 C0 00 FF FF FF FF 20 A2 00 00 00 00 00 00
07FE20h 00 00 FF FF 10 00 20 00 A2 00 FF FF FF FF FF FF
07FE30h FF FF 20 00 A2 00 FF FF FF FF FF FF FF FF FF FF

flash ids are 000122F2 [00000000] - F201
07FE10h 88 A8 C0 00 FF FF FF FF 01 F2 00 00 00 00 00 00
07FE20h 00 00 FF FF 10 00 01 00 F2 22 FF FF FF FF FF FF
07FE30h FF FF 01 00 F2 22 FF FF FF FF FF FF FF FF FF FF

В теле самой программы, различие только в этих строках, далее опять всё одинаково, следующие отличия снова начинаются уже с области ЕЕПРОМ.
Значит, можно сделать вывод, что если поменятьь в прошивке эти три строки, то тел должен с нею включиться. Тоесть, загвоздка только в том, что проц сверяет ИД самой флешки с ИД, записанным в прошивке.

layder
02.08.2005, 00:34
Матроскин, не слушай дядю Viktor0001. Он хоть и написать хочет хорошее, но многое путает. просто суть в том, что в прошивке храинтся информация о типе флеша. а т.к. тип флешки - это отражение производителя и типа микросхемы, то сообтветсвенно прошивка должна знать, по какому алгоритму производится запись в данную микросхему. и если реальный тип флеши не воспадает с прописаным в прошивке, программа не может нормально изменять параметры в "eeprom" области и соответственно корректно продалжать работать

Tevel
02.08.2005, 00:54
браво,layder, хотя всё ещё немного проще-в прошивке есть функция, которая является заглушкой для записи/чтения. и вот эта сама функция и должна знать как писать в старшие адреса.

Viktor0001
02.08.2005, 03:32
Провёл такой эксперимент.
Беру Siemens A35, сливаю с него фулл, и смотрю, что скажет про него Фрея:

COMM_LoadBoots : EEPROM IMEI is 35002138099999
COMM_LoadBoots : original IMEI is empty (not locked)
COMM_LoadBoots : found SIEMENS A3x lg2 v25 (1)
COMM_LoadBoots : flash ids are 002000A2 [00000000] - A220
COMM_LoadBoots : phone ids are 0DFC1EDB [0DFC1EDB]
COMM_Read : reading from 00F00000 1048576 bytes

Запоминаем, что flash ids - A220.
Заливаем другой фулл с flash ids are - F201
Разлачиваем, Фрея теперь показывает следующее:

COMM_LoadBoots : EEPROM IMEI is 35001974481218
COMM_LoadBoots : original IMEI is empty (not locked)
COMM_LoadBoots : found SIEMENS A3x lg2 v25 (1)
COMM_LoadBoots : flash ids are 002000A2 [00000000] - F201
COMM_LoadBoots : phone ids are 0DFC1EDB [FFFF0610]

IMEI изменился, потому что в OTP он был затёрт,
и поэтому при разлочке Фрея взяла тот что был в ЕЕПРОМЕ. Но это не важно.
Главное - видим, изменения flash ids - F201
И телефон перестал включаться.

Берём из родного фулла - A220 эти три строки:
07FE10h 88A8C000FFFFFFFF20A2010000000000
07FE20h 0000FFFF10002000A200FFFFFFFF8403
07FE30h 0100FFFFFFFFFFFFFFFFFFFFFFFFFFFF

И вставляем их в фулл - F201, который только что заливали.
Заливаем этот подправленный фулл. После заливки и разлочки получаем следующее:

COMM_LoadBoots : EEPROM IMEI is 35001974481218
COMM_LoadBoots : original IMEI is empty (not locked)
COMM_LoadBoots : found SIEMENS A3x lg2 v25 (1)
COMM_LoadBoots : flash ids are 002000A2 [00000000] - A220
COMM_LoadBoots : phone ids are 0DFC1EDB [0DFC1EDB]

Видим, что flash ids стал - A220, и телефон теперь включается и нормально работает.
В обоих случаях, заливалось одинаково. Первые блоки шли по 64 кБ, последние восемь блоков - по 8 кБ. Значит и сами микросхемы с flash id - A220 и -F201, внутри устроены одинаково.
Выходит что, по крайней мере в А35, невключение с чужим фуллом - из-за того, что процессор заметил несовпадение ИДов микросхемы и залитой в неё прошивки:
Получилось 002000A2 [00000000] - F201
А в телефоне, откуда был слит фулл было так: 000122F2 [00000000] - F201

Mishael
02.08.2005, 08:38
я так думаю что флеш ИД содержит информацию не только о алгоритме работы флешки но и номер партии и ,как сказал Layder, производителя и т.д. так вот, изменяем номер партии и получаем новый флеш ИД микрухи с тем же алгоритмом работы. А то, что Viktor0001 провел эксперимент как раз это и доказывает.

Остаётся открытым вопрос о том нафига этот ИД поместили в тело прошивки если можно было просто делать чистую(голую) прошиву а в еепроме распределять данные и работать с самой микрухой на основании вычитанного ИД на уровне железа из самой м\с , и проц может работать с флешем на основании того же ИД, зачем так усложнили? Кто в курсе?

Матроскин
02.08.2005, 09:02
Viktor0001, таким образом, можно теперь не заморачиваться поиском фула под данный тип флеши, а просто брать любой фул и править эти строки? Интересненько, будем попробовать.

Резюмируя всё вышесказанное - тип флеши отражён в софте алгоритмом записи, который необходим для работы софта с ЕЕПРОМом. Вот этого обстоятельства я и не учёл, когда ломал голову - почему уже записанный фул не может работать на неродной флешке. Недостаточно только лишь правильно записать программу во флешку, надо ещё, чтобы сама уже записанная программа умела писать в ЕЕПРОМ.

Вот теперь, кажется всё (или почти всё) в голове устаканилось. Большое всем спасибо за участие в обсуждении такой вроде бы отвлечённой теоретической темы. Надеюсь, что не зря отнял у почтенной публики столько драгоценного времени. Может быть кому-то ещё это будет полезно.
cocos1
Устроим соревнование - кто первый разберётся в этом, тот молодец, думаю тысогласишься, что победил layder. Именно он сформулировал правильный ответ наиболее коротко и ясно. Хотя и у других ораторов эта мысель проскакивала (теперь припоминаю, но почему-то всё никак не мог взять этого в толк).

Viktor0001, твои рассуждения мне теперь кажутся вполне убедительными, однако твоей мысли по поводу 20 ячеек, доступных напрямую, я, честно говоря, так и не смог уловить. Возможно, я просто тормоз, но чевота не докатывает. А все рассуждения по поводу внутреней организации - блоков, адресов и т.д. - это всё мимо темы. Как она внутри себя поступает со своим адресным пространством - снаружи просто незаметно, а потому и несущественно.

От меня всем учаснтикам по голосу за интерес, проявленный к чисто теоретическому вопросу. Хотя такой интерес и не даёт никаких материальных барышей и в повседневной работе вроде бы и бесполезен - однако "не хлебом единым...".
Ещё раз всем спасибо и думаю на этом вопрос можно считать исчерпанным. :hello:

layder
02.08.2005, 12:13
просто программы различных телефонов по разному реагируют на FlashID или мягко говторя та тип флешки. один производитель делает прошиву, которая знает все и работает со всеми, выпускаемыми на заводе телфонами, нормально. другие производители, в часности сименс указывает в прошивке flashid, а не сама прошивка его детектитю. соответственно при такой системе, получаются флеше-зависимые прошивки.
но прошу заметить 1 ньюанс. независимо от того, какой тип флеша указывается в EEPROM обмасти прошивки, если сименст просвапить, то телефон включится. грубо говоря WinSwup детектит несоответствия в "EEPROM" области и привит все, чтобы залитая прошива заработала.

Viktor0001
02.08.2005, 15:37
Матроскин

Viktor0001, таким образом, можно теперь не заморачиваться поиском фула под данный тип флеши, а просто брать любой фул и править эти строки? Интересненько, будем попробовать.
Ну вообщето, до сего момента, я сам над этим особо и не задумывался. Просто есть коллекция фуллов, слитых с разных моделей и версий прошивок.
Перед тем как лить фулл, сливаю бекап аккумулятора, Фрея показывает версию прошивки и флеш ид. Но честно говоря на флеш ид я и не обращал внимания, выбирал фулл исходя только из версии прлошивки. И всегда прокатывало.
Но наверное просто так попадало, что совпадала и версия прошивки и флеш ид. Городок у нас маленький, и зачастую, телефоны одной модели и одной версии прошивки - из одного привоза. Поэтому и флеш ид совпадал.
Только с одним А35 как то пришлось подбирать фулл по флешь ид, и пришлось качать его с иннета, потому что в моей коллекции такого не обнаружилось. Видать этот телефон откудато издалека привезли. И то, я тогда над этим особо не задумался, подумал, что просто флешка с другой конфигурацией и поэтому неправильно залилось.
Ну а впредь, чтобы не искать фуллы с нужным флеш ид, и не скачивать лишние мегабайты, можно попробовать самому их править. Но наверное, для других моделей телефонов, нужно будет уже в других адресах править.
Или , как написал layder, после фулла прошивать ещё WinSwup , может быть действительно, он сам подправит.

dervish
03.08.2005, 00:19
Viktor0001
Действительно,
сам подправит.

@all
Небольшое лирическое :) отступление:
http://www.mobile-files.ru/forum/showthread.php?s=&threadid=50597&perpage=40&pagenumber=6#post352678

те, кто серьезно занимается ремонтом - у них есть кое что другое и другие базы, которые раз в 5 быстрее заливаються в телы, чем Ваши кривые Фуллы...
Да и тема то проливки фуллов - это для дуриков, у которых понятия нет, как работает телефон...
От этого и лениво делать такие функции полной проверки и пересчета фуллов под конкретный ESN.
PS: Думаем головой: Тему фуллов придумали дети, для того чтобы ставить любимые патчи. При чем тут ремонт?.
и ещё:
http://www.mobile-files.ru/forum/showthread.php?s=&threadid=50597&perpage=40&pagenumber=6#post353008

XBB, XBZ, XFS, MAP файлы - это не фулл!
PS: И льет их не Флэшер, и тип флеш по барабану, и качество у них 100% - их Сименс делает, а не дети с патчами...
Это я к тому, что есть разные пути для решения проблем. Разговор начинался именно поэтому, думаю. Только издалека...

Viktor0001
03.08.2005, 00:49
dervish
Посмотрел по записям, Сименсов у меня прошло 36 моделей.
28 моделей Моторолов, Алкатели, Лыжики, СониЕрики ...
В принципе, почти все существующие на свете, марки телефонов.
Ну нету времени, чтобы досконально разбираться с каждой маркой телефона и тем более, с каждой моделью.
Еслиб я работал в АСЦ, только с какой нибуть одной моделью телефонов, то можно былоб вникать, исследовать поглубже.
Но когда огромное разнообразие, приходится делать так, как проще и быстрее.

dervish
03.08.2005, 01:09
приходится делать так, как проще и быстрее
и, по возможности, без больщих затрат. А потом понимаешь, что самое дорогое - время, и начинаешь тратить его на самообразование...
WinSwap (про Siemens)тестирует железо, а не считывает ID флешки из Flash, как, например, это делает FREIA и поэтому можно использовать любой FULL, затем пройтись WinSwap'ом. Пока осечек не было, но долго.
P.S. Хочу добавить, - долго и неправильно.

Viktor0001
04.08.2005, 03:33
А потом понимаешь, что самое дорогое - время, и начинаешь тратить его на самообразование...
LG 5200, Nokia 7260, Motorola v600, Sony Ericsson k500, Siemens A57, Alkatel BF3, Siemens CX65, Samsung D500, Siemens C35, Sony Ericsson T230.
Это список того, что сделал за вчерашний день. Часть софтовые, часть с железом, часть смешанные, тоесть и железо и софт.
Какое уж тут самообразование если покурить - и то на ходу. :(

pl
17.08.2005, 14:20
спасибо всем участникам за полезный топик.... Тоже нашел несколько ответов на вопросы которые интересовали, но оставались неотвеченными...

Gennadiy-P
11.08.2006, 12:58
В принципе, мобильник - тот же компьютер.
Сам по себе Процессор не обладает какими то интелектуальными способностями. Он может только выполнять программу, записанную на внешнем носителе ( жёсткий диск или флеш память ). И то, самостоятельно он не сможет ничего с них прочитать.
Еинственно, что он может - при поступлении сигнала RESET выставить все нули на шине адреса, и выполнить команду, записанную в этой нулевой ячейке.
Поэтому, в компьютере установлена микросхема ПЗУ. Она подключена так, что нулевая ячейка, как раз и будет первой ячейкой этой микросхемы.
В самой микросхеме записана программа (BIOS). В ней содержатся инструкции и драйвера, чтобы найти и работать с основными устройствами. В первую очередь конечно с жёстким диском. Получив доступ к жёсткому диску, процессор находит на нём операционную систему, и дальше работает уже по командам этой операционной системы.
В мобильнике, роль жёсткого диска выполняет микросхема флеш памяти.
Программа BIOS - буткор. В ней содержатся инструкции по работе с флеш памятью, и так же программа для коннекта с компьютером.
Физически, буткор может быть записан либо в самом процессоре, либо в микросхеме флеш памяти.
Если в процессоре - то телефон будет неубиваемый по софту. Всегда можно законнектить его с компом, и перешить. А если во флешке - то при повреждении буткора придётся её выпаивать и шить на программаторе. Либо прошивать с использованием специальных программ по интерфейсу JTAG.
В Сименсах буткор есть и в ПЗУ процессора и на флешке. В нормальных условиях процессор начинает читать буткор с флешки. Но если он повреждён, то можно с использованием Тест Поинта заставить процессор стартовать с внутреннего буткора, и перешить телефон.
Надо полагать, что буткор на флешке записывают не просто ради прикола.
Тот, что записан в ПЗУ процессора - уже не изменишь. Но если в телефон поставить новый тип микросхем, который не описан в этом буткоре, то телефон наверное работать не сможет.
А буткор во флешке всегда можно обновить, добавить новые типы микросхем, или оптимизировать работу со старыми .
Так же как в компьютере - BIOS на старых материнках не поддерживает жёсткие диски более 32 ГБт. Но перешив его, можно разрешить эту проблему.
Ну в общем у меня такое предположение.

Да... как все запущено!!! Жаль что нет рядом DJ_TONа, он бы апццался вместе со мной! Viktor0001, ты уж извини, что я твое сообщение взял в качестве примера глупости(хотя оно не самое глупое и даже самое неглупое, правда красным цветом я выделил то, с чем категорически не согласен), просто хотел прочитать сначала до конца, но сил не хватило и на этой странице решил, что пора остановиться, а то обезвоживание наступит. Судя по всему здесь только один Матроскин соображающий участник. Аргументы у него правильные. Всех остальных прошу не расслабляться, так как все наворочали, но и не обижаться тоже, все-таки форум по обмену опытом. Ну если не знаете, чего ж тут поделать.

Теперь по замечаниям. Блин, уже забыл, что с первых страниц хотел написать... Итак! Насчет флешки. Вы бы еще, вдогонку к кластерам, вспомнили бы и сектора, и дорожки, и стороны, и даже цилиндры! Что это за бред! Вы представляете о чем говорите! Или для вас совершенно все-равно, что флеш накопителя (USB устройство для хранения информации), что флеш в телефоне (м/схема памяти с электрическим стиранием, хотя еще есть и с УФ, но это рассматривать не будем), главное ФЛЕШ? Так что-ли? Кластеризация тут не нужна - здесь прямая адресация.
Кластеры создаются на диске накопителя с целью облегчения поиска информации (разбивка диска). Потому что накопитель это самостоятельное устройство, у которого запрашивают информацию другие устройства (скажем компьютер у жесткого диска). Сама мамашка РС не может найти файл на поверхности диска, т.к. не имеет возможности адресовать все пространство самостоятельно (прикиньте какой интерфейс должен быть для адресации одно Гига, а 120-ти), да и на вращающихся частях это сделать проблематично. Вот и существует микроконтроллер работающий с поверхностью через сектора, дорожки и цилиндры. Так вот изначально кластер это был сектор диска по всем поверхностям, т.к. винчестеры содержали до нескольких вращающихся дисков одновременно, объединеных на одной оси. Флешка USB-накопителя тоже содержит чип контроллера (потому что по последовательному интерфейсу прямой адресации не сделать), который в свою очередь организует доступ к м/схемам памяти. А так как микроконтроллеры просто достают и кладут на хранение информацию в управляемые ими массивы состоящие из м/схем памяти, то что конкретно доставать говорит ЦП, взяв информацию скажем из таблицы FAT этого носителя. Так как стандарты работы с накопителями были разработаны еще задолго до появления Флеш-накопителей, то работа с последними была просто организована под существующий ранее стандарт, чтобы не переписывать все БИОСы и ОС. Это маленький ликбез по слову "флеш".

Теперь о флеш телефонов. Это обычная м/схема памяти с организацией линейной адресации и параллельной записью и чтения данных и НИКАКИХ кластеров в данной м/схеме нет, а есть прямая адесация к ячейкам памяти, для чего у нее и существует такое количество линий адреса (скажем в A50 - 21 линия, значит количество ячеек равно 2 в 21-й степени = 2097152 умноженное на 2, потому что шина данных 16-ти разрядная, а байт это 8 разрядов, итого 4194304 байт), а не как говорит Viktor0001. Но главное ее преимущество - умение хранить информацию без питания. ЭТО ПРОСТО ЭЛЕКТРИЧЕСКИ СТИРАЕМОЕ ПЗУ. Мультиплексирование адресов в ней не используется. Во первых линий и так хватает, во вторых тормоза были бы в 2 раза, т.к. для считывания одного адреса нужно было бы 2 такта фиксации адреса вместо одного.

Далее по процессору. Проц это всего-лишь АЛУ (арифметико-логическое устройство), которое может складывать, вычитать, умножать, делить и т.д. с возможностью записи и чтения результатов и работой с портами. Большим интеллектом прошу его не наделять. Все остальное делает ОС, в нашем случае прошивка. Все микропроцессоры имеют несколько аппаратных прерываний, проиходящих по определенным событиям. Про программные говорить не будем. Причем точки входа в обработку этих аппаратных прерываний неизменны (это константы), но по ним находится лишь инструкция перехода на адрес входа в ту или иную подпрограмму, которая в свою очередь и выполняется. Насчет расположения адресов во флешке. Да будь оно хоть через ж.пу перепутано, как и данные. Но если проц в данную ячейку положил байт, он его оттуда и возьмет. И как бы не располагалось все адресное пространство внутри флешки подряд или же вразнобой, для процессора все пофиг. Ведь выводы после прошивки никто менять местами не будет. Тем более что прошивку сам проц укладывает и если проц ее сам считал(или такой же), тогда все-равно как по порядку или нет(потому что он также ее и положит, а считывать будет так, как надо). А вот если шить на программаторе или в другой модели телефона, тогда да, результат может быть плачевным.

Почему все-таки ID разные? Сам удивляюсь. Скорее это нужно для флешера, чем для самого телефона. Или же есть такие мысли!!! Скорее всего при производстве телефонов флешки ставят уже прошитыми на программаторах, а доводят уже в сборе. Тогда становится понятным, отличие в цоколевке выводов (скажем последовательность адресов или старшинство разрядов данных, что вполне допустимо у разных производителей), тут прошивание на внешнем программаторе конечно же должно строго соответствовать типу флеш, иначе задница получится, а не работа.
Прошу прощения за такие объемы. Все равно все не распишешь.

Uriman
11.08.2006, 14:18
Теперь о флеш телефонов. Это обычная м/схема памяти с организацией линейной адресации и параллельной записью и чтения данных и НИКАКИХ кластеров в данной м/схеме нет, а есть прямая адесация к ячейкам памяти, для чего у нее и существует такое количество линий адреса (скажем в A50 - 21 линия, значит количество ячеек равно 2 в 21-й степени = 2097152 умноженное на 2, потому что шина данных 16-ти разрядная, а байт это 8 разрядов, итого 4194304 байт), а не как говорит Viktor0001. Но главное ее преимущество - умение хранить информацию без питания. ЭТО ПРОСТО ЭЛЕКТРИЧЕСКИ СТИРАЕМОЕ ПЗУ.
А почему, если флеш - это обычная память, то в эту память тогда нельзя записать в отдельную ячейку какую-нибудь бяку, а только в группу ячеек именуемых блоком?

Gennadiy-P
11.08.2006, 15:06
А скорее всего потому, что алгоритм во всех прошивальщиках организован по принципу организации промежуточного буфера памяти определенного объема который выделяется в области данных RAM, куда сначала записывается блок (где возможно и происходит его криптование или должно было происходить, по организации защиты от взлома ПО), где подсчитывается контрольная сумма и если она правильная - переписывается во флеш "на постоянное место жительства". Это не особенности работы самой микрухи флеш, это стандарт обмена данными между МП-устройствами. Все и везде передается не побайтно, а поблочно с подсчетом контрольной суммы блока. Прикиньте сколько нужно подтверждений, если подтверждать прием каждого байта. А без контрольной суммы, как проверить, что нет ошибок передачи. Вспомните лог Фреи "стирание - очистка блока, посылка - загрузка блока в ОЗУ, запись - пересылка во флеш".

Uriman
11.08.2006, 16:42
Всё, понял. Был неправ.

Gennadiy-P
11.08.2006, 17:13
Принимается.:hello:

Gennadiy-P
11.08.2006, 17:58
На первый вопрос - сам ответил :).
У разных флешек разные протоколы и время записи-чтения, разные режимы стирания и т.д.

Хотелось бы опровергнуть это заблуждение. Протоколы работы у всех флешек одинаковые. В режиме записи - это установка адреса, затем установка данных (без сигнала CS_FLASH выходы DQ0-DQ15 находятся в высокоимпендансном состоянии и работают в это время как входы), затем сигнал WR (write) фиксирует данные с DQ0-DQ15 в ячейки памяти (сама запись). В режиме чтения - установка адреса, затем сигнал RD(read), потом CS_FLASH (подключение выходного буфера м/с к шине данных). Насчет время записи-чтения. Никогда и нигде это время не устанавливалось программно (а если переменные временных интервалов собьются, во хаос в системе наступит), потому что это ЖЕЛЕЗНЫЙ интерфейс и организуется он аппаратно. Все в нем управляется от одного тактового генератора и даже задерки между фронтами четко фиксированные (это все формируется внутри проца и изменению не подлежит категорически, тем более что тактируется от кварцевого генератора). Сами флешки имеют запас по быстродействию, иначе надежность системы будет никудышной. Поэтому какую флешку в телефон не поставь, они все будут работать сразу же (при условии, что они исправны), не будет только само ПО.

Mobilguru
11.08.2006, 20:46
Хотелось бы опровергнуть это заблуждение. Протоколы работы у всех флешек одинаковые. В режиме записи - это установка адреса, затем установка данных (без сигнала CS_FLASH выходы DQ0-DQ15 находятся в высокоимпендансном состоянии и работают в это время как входы), затем сигнал WR (write) фиксирует данные с DQ0-DQ15 в ячейки памяти (сама запись). В режиме чтения - установка адреса, затем сигнал RD(read), потом CS_FLASH (подключение выходного буфера м/с к шине данных). Насчет время записи-чтения. Никогда и нигде это время не устанавливалось программно (а если переменные временных интервалов собьются, во хаос в системе наступит), потому что это ЖЕЛЕЗНЫЙ интерфейс и организуется он аппаратно. Все в нем управляется от одного тактового генератора и даже задерки между фронтами четко фиксированные (это все формируется внутри проца и изменению не подлежит категорически, тем более что тактируется от кварцевого генератора). Сами флешки имеют запас по быстродействию, иначе надежность системы будет никудышной. Поэтому какую флешку в телефон не поставь, они все будут работать сразу же (при условии, что они исправны), не будет только само ПО.



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

Вам же люди грамотные написали:

Для того чтобы реализовать все режими работы, кроме чтения, используют команды. Это договорённый набор последовательностей состояний всех шин микросхемы. Например, команда Sector Erase: "записываем" по адресу 00555h данные ААh, потом по 00АААh данные 55h, потом по адресу 00555h 80h, затем по адресу 00555h данные ААh, потом по 00АААh данные 55h и наконец по любому адресу внутри стираемого сектора "пишем" 30h. После стирания сектора вывод данных DQ7 поменяет свое логическое состояние. Erase coplete.
"записью" я назвал подачу на шину данных байта (или слова), при выставленном на шине адреса адресе и соответствующей комбинации шины управления (как запись в ОЗУ).


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

Gennadiy-P
11.08.2006, 22:55
Я вообщето говорил про низкоуровневые протоколы работы интерфейсов, если это непонятно. Но если в чем-то окажусь неправ, от объяснения не откажусь. Только в споре рождается ИСТИНА. Мануал в студию, попробуем разобраться. Тем более что вопрос задан и решение надо найти.

Способ стирания флеш который вы описали, к интерфейсу работы флеш никак не относится, а тем более к моим объяснениям (я описывал работу немного ниже уровнем, а точнее самым низким, на уровне отдельных сигналов). И если это общепринятое правило, то и к ID flash тоже не имеет никакого отношения, т.к. у всех флешек это общепринятое правило, а мы ищем различия. А вообще то вы сами поняли для чего это делается? Ну скажем чем отличается 55h от AAh? Попробуйте написать это в бинарном коде, может тогда станет понятней. Это всего лишь запись инвертированного кода, с последующей проверкой на ошибку. Я же вам обьясня как эти самые 55h и AAh прописываются во флеш, а не зачем это делается. Прошу не путать.Но если вы продолжаете настаивать на том, что флеш содержит внутренний контроллер кластеризации и для того чтобы ее прописаить, в нее нужно послать управляющие коды, то флаг вам в руки. Дальнейшую дискуссию проводить бесполезно.

Gennadiy-P
12.08.2006, 16:52
хорошо считать себя умным ни разу ни прочитав мануал к флеши.
(иначе небыло бы столько неверных высказываний, взятых скорее всего, из собственных догадок).

Вам же люди грамотные написали:

Для того чтобы реализовать все режими работы, кроме чтения, используют команды. Это договорённый набор последовательностей состояний для проверки всех шин микросхемы. Например, команда Sector Erase: "записываем" по адресу 00555h данные ААh, потом по 00АААh данные 55h, потом по адресу 00555h 80h, затем по адресу 00555h данные ААh, потом по 00АААh данные 55h и наконец по любому адресу внутри стираемого сектора "пишем" 30h. После стирания сектора вывод данных DQ7 поменяет свое логическое состояние. Erase coplete.
"записью" я назвал подачу на шину данных байта (или слова), при выставленном на шине адреса адресе и соответствующей комбинации шины управления (как запись в ОЗУ).


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

Опровергаю! Вы сами написали что такое запись. Все-таки можно записать одно слово по одному адресу! И ни каких блоков и кластеров!!!

И если вы считаете себя гуру в работе памяти, объясните всем, что такое ERASE и для чего оно нужно в данных типах м/с памяти. А еще лучше, как его осуществить и по подробней если можно. Вот тогда и посмотрим, как вы читали мануал к флеши на английском языке - сами или с помощью переводчика (XTranslator или подобного). Если у вас компьтерный перевод, тогда все становится ясно.

Mobilguru
14.08.2006, 13:23
читал сам :)
мануал в студию? что мешает скачать его с сайта производителя?
(начните хотя бы с 320с3т интеловской).
низкоуровневый протокол? - это всего лишь обмен с контроллером,
который находится в самой флеши.
насчет команды erase - вобще суть записи во флеш состоит в том, чтобы сбросить единичные биты в нули.. обратный процесс (нули в единицы) невозможен. процесс erase - это процесс стирания, то есть процесс устаноки битов ячейки памяти в единичное состояние. И возможен этот процесс только в объеме блока (сектора), то есть стереть отдельно взятый байт нельзя, только вместе со всем блоком.
вот тут и проявляет свою сущность отличие разных типов флеш.
разная структура (разбивка по блокам), разная система команд конроллера.. если загрузчик не поддерживает данный тип флеши - он просто не сможет подготовить место под запись.
есть еще множество разных команд в работе с флешью: доступ к идентификатору, к отп-зоне и т.д.

Mobilguru
14.08.2006, 13:41
вот, собственно, сам даташит

Gennadiy-P
14.08.2006, 15:15
Упс-с!!! Мы про разные флешки говорим.

Да, действительно есть такой режим. Разобрался.:pomidor: Это я про себя.

Но действительно ли верно утверждение, что вместо нуля единичку, без стирания блока, в отдельно взятый бит(байт) записать нельзя? А как работает изменеие контрастности? Неужели EepromTool считывает целый блок (скажем 4КБ или 32КБ), сохраняет он всего-лишь несколько байт, да и перед записью обратно ему тогда потребуется провести стирание (а если этот блок из чужого епрома, в файле всего 12-14 байт). И прописывает эти же байты, даже из сохраненного блока. И если вышесказанное утверждение действительно единственно правильное, то для сохранения переменных контрасности, надо пересчитать весь блок, применить изменения, стереть блок во флеш, а потом записать новые значения, которые гораздо меньше размеров самого блока флешь. А как работает Joker? Он ведь позволяет менять контраст в режиме OnLine (хотя здесь возможна работа с RAM).

Или вот тут.
Для того чтобы реализовать все режими работы, кроме чтения, используют команды. Это договорённый набор последовательностей состояний всех шин микросхемы. Например, команда Sector Erase: "записываем" по адресу 00555h данные ААh, потом по 00АААh данные 55h, потом по адресу 00555h 80h, затем по адресу 00555h данные ААh, потом по 00АААh данные 55h и наконец по любому адресу внутри стираемого сектора "пишем" 30h. После стирания сектора вывод данных DQ7 поменяет свое логическое состояние. Erase coplete.

Сначала AAh, потом 80h, затем опять AAh. Это все делается последовательно или же каждый раз перед записью по одному и тому же адресу нужно стирать целый блок. А как же тогда запись по адресу, это что же целый блок надо в AAh загнать?

Gennadiy-P
14.08.2006, 15:27
Да, еще вопрос. Если мне захочется загрузить в телефон рисунок или мелодию, скажем в 1КБ, флеш будет прописана на весь блок в 32Кб или нет? И во время записи будет ли выполняться Erase Block?

Gennadiy-P
14.08.2006, 16:17
Пошукал. Этих флешек на сайте производителя, как грязи. Но у большинства из них есть несколько режимов: Burst Mode и Page Mode, есть еще режимы работы с массивом и одиночным адресом. А вариант записи блоком называется Bufferd Enhanced Factory Programming, это всего лишь буферизированный расширенный метод программирования задуманный Intel, он то и разжеван в мануале, как диковинная новинка, но не единственный вариант, т.к. кроме расширенного есть и стандартный.

Да, еще. Посмотрите в WinHexe разницу между фулами Intel и AMD. В буте мне попалась цепочка из 16-ти байт не более. Все остальное один в один. В самом фуле разница была существенней, но обнаружилась лишь где-то с середины файла (до середины все шло копейка в копейку). Вряд ли разница в организации флешек стала бы сказываться не с самого начала прошивки. Для примера я использовал фулы A65_V15_S910 для AMD и Intel.

Mobilguru
14.08.2006, 19:48
burst mode и тп - режим работы с буфером контроллера - к вопросу отношения не имеет.
ответы на все вопросы есть в приаттаченом даташите.
читайте, вникайте..

Mobilguru
14.08.2006, 19:56
по ходу (из вопроса о контрасте) почему в сименсе не сохраняются последние изменения, если выдернуть батарею? ;-)

Gennadiy-P
15.08.2006, 10:58
Потому, что переменные "крутятся" в области RAM и должны "примениться" во флеш для постоянного использования, это делается с помощью сервисной программы или же перед выключением телефона.

Кстати режимы называются Burst READ Mode и т.д., а в буфер контроллера правильнее было бы - WRITE, но не в этом дело, спорить можно до бесконечности. Тем более что аргументированных ответов нет. Кстати пример про запись значений по адресам (все же побайтно), не совсем корректный, т.к. применен к 8-ми разрядной шине данных, а в нашем случае она 16-ти разрядная, да и адрес коротковат (тоже ведь из догадок взят). Да и в мануале ничего про это не сказано.

А вот у A55-го младший адрес вообще не используется (посажен на землю) и как ни странно на поблочную работу не влияет. И запись через адрес, и считывание.

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

Пора завязывать про работу флеш, тем более что главный вопрос про ID Flash это не решает. Все же процы это ЖЕЛЕЗНЫЕ парни и алгоритмы у них ЖЕЛЕЗНЫЕ, а значит им нужна периферия (флеш, рам) тоже с ЖЕЛЕЗНЫМИ параметрами. Да и фулы имеют отличия далеко не математическую, основанную на разности блоков в м/с, того или иного производителя.

Uriman
15.08.2006, 13:03
Вот в этом и разница между флеш и еепром: флеш стирается блоком, еепром побайтно.

Mobilguru
15.08.2006, 14:54
спорить можно до бесконечности. Тем более что аргументированных ответов нет.

ну ты и упертый.. у тебя же мануал на руках.
Если проблемaтично разобраться с помощью мануала,
то:
http://ru.wikipedia.org/wiki/Флэш-память

http://www.terralab.ru/storage/263596/

да и действительно, все есть в мануале..
если лень кому-то лень вникать, то мне лень
спорить и что-то доказывать..

Gennadiy-P
16.08.2006, 14:36
Это ты о чем? О накопителях или о чипах?

Твои ссылки справедливы к Флеш-памяти выполненной в виде законченного устройства накопителя, на базе флеш-чипов. Организация таких устройств более высокоуровневая. Правда во второй статье автор объединил все в кучу и размыл так, что ничего конкретного и не сказал. Правда в его статье упоминались(вскользь) мобильные телефоны, но в основном он говорил про мобильные системы, т.е. переносные (мобильный не значит что только "мобильник", а "мобильник" сойдет за мобильный).

Mobilguru
16.08.2006, 16:03
хорошо
мануал читал?

Gennadiy-P
16.08.2006, 18:04
Все успокаиваемся. Флеш разбита на блоки (мануалы читать я умею). Но для чего это сделано? Наверное не для того, чтобы прошивка с другим ID не подходила. В данных м/с организовано поблочное СТИРАНИЕ, посредством внутреннего контроллера. А запись и чтение возможно и побайтное.

Кроме написанного в мануале еще есть и осцилограммы работы в режиме чтения и записи. Рис.9 и рис.10 соответственно. Еще там есть описание этих процедур на стр.39. А на стр.56 алгоритмы выполнения процедур. Где ничего не сказано, что при записи и чтении нужно работать с целым блоком, но зато везде (в режиме чтения и записи) требуется указать адрес слова. А вот в алгоритме стирания, как раз, указывается адрес блока, т.к. стирание производится самой флеш с подтверждением о выполненной процедуре, вот ей то и надо указать блок который необходимо стереть

Жаль (или наоборот хорошо) что PMB6850 или ему подобные не могут читать мануалы от Интел. А то сколько бы избыточной информации им пришлось перерабатывать. Например вместо 4-х байт, которые небходимо считать, придется считывать целых 4Кбайта, а 4092 байта выкинуть.

Все-таки, как мне кажется, мы ходим рядом, но говорим о разном. Да и не в этом суть. ID flash для прошивки чем грозит?

Mobilguru
17.08.2006, 16:13
Все успокаиваемся. Флеш разбита на блоки (мануалы читать я умею). Но для чего это сделано? Наверное не для того, чтобы прошивка с другим ID не подходила. В данных м/с организовано поблочное СТИРАНИЕ, посредством внутреннего контроллера. А запись и чтение возможно и побайтное.

Уже лучше. Флеш разбита на блоки потому что физическое строение NAND-памити таково само по себе. Стереть можно только блок во всем объеме. Для удобства адресное пространство разбили на независимые блоки, чтобы при стирании не приходилось стирать всю область памяти. Сответственно, под разные типы задач различная структура разбивки (top и bottom соответственно - блоки маленьких размеров с большим количеством циклов стирания (ресурсом) находятся в начале или в конце адресного пространства, вы лишь выбираете, какой тип флеши вам использовать в зависимости от ваших задач). В сименсе (С35 к примеру) неспроста используется именно f320c3(T). Ведь область епрома находится в конце адресного пространства. Эта область, в которую очень часто производится запись данных и оперировать с маленькими блоками намного удобне + ресурс у этих блоков больше).

Далее, что касается диаграмм..
Это действительно циклы чтения и записи. Но..
Процессор общается с флеш как с любой другой перефирией.. он железный и ему все равно с каким именно устройствои идет обмен -
процессы сходны.
В обычном порядке, когда флеш работает в режиме по умолчанию,
она является не чем иным как обычным ПЗУ.. данные с нее считываются
как с любой другой микросхемы памяти.. причем побайтно или пословно (никто и не говорил что обмен происходит блоками, исключение составляют режимы обмена массивами данных используемые в новых флешах, когда читается массив целиком - это необходимо для ускорения считывания большого объема данных - в этом режиме исключаются промежуточные циклы обмена.. но процессор должен поддерживать технологию на железном уровне (как справедливо замечено - процессоры не читают мануалов, но их читают разработчики процессоров)).
Со стиранием и чтением разобрались, теперь запись.
Напооминаю что для сохранения своих данных (будь то стек или переменные) у процессора есть RAM, и там действительно все просто.
С флешью гораздо сложнее. Когда процессор осуществляет цикл записи во флеш - запись не происходит в адрессное пространство памяти.. зачастую даже значение сигналов на адрессной шине не имеет значения.
В данном случае запись осуществляется в буфер контроллера. Причем все операции помимо стандартного прямого чтения из памяти начинаются с этого просесса (см. таблицу 22). Например, для записи слова по определенному адрессу процессор должен записать в флеш по совершенно любому адрессу слово 0х40 (или 0х10), после этого флеш перейдет в режим записи слова, следующий шаг - процессор пишет нужное нам слово по нужному нам адрессу. После этого контроллер во флеши начнет писать наше слово по нашему адрессу. Далее, если в этот момент осуществить запись по любому адрессу значения 0х70, то адресное пространство флеши станет недоступным для чтения. Вместо этого по любому адрессу мы прочитаем значение регистра статуса и сможем проконтролировать, завершилась ли запись успешно. Осуществив запись по любому адрессу значения 0х20 мы переводим
контроллер флеши в режим стирания блока. В следующем цикле мы должны на шине адресса выставить номер стираемого блока, а на шине данных - значение D0h, то есть осуществить запись по адрессу <номер блока> значения D0h. И в зависимости от того, какая флеш у нас (к примеру 320с3т или 320с3б) - у нас сотрется разная область пространства.

Так вот: таблица 22 является системой команд данной флеши. В разных флешах разных производителей эта система команд своя, ровно как и разбивка адрессного пространства на блоки.
Всем процессом записи и стирания управляет программа, находящаяся
в самой флеш (то бишь в прошивке), процессор выступает лишь исполнителем. И если эта программа не предназначена для работы с именно той флеш, в которой она находится -
она с ней ПРОСТО НЕ СМОЖЕТ РАБОТАТЬ.

Вот, собственно, и все.



Извините, если слишком запутанно написал.

Mobilguru
17.08.2006, 16:18
Кроме написанного в мануале еще есть и осцилограммы работы в режиме чтения и записи. Рис.9 и рис.10 соответственно. Еще там есть описание этих процедур на стр.39.


Страница 39 - режимы работы шины. это процесс обмена информации - не режимы записи слова в адрессное пространство флеш.

Mobilguru
17.08.2006, 16:26
А на стр.56 алгоритмы выполнения процедур. Где ничего не сказано, что при записи и чтении нужно работать с целым блоком, но зато везде (в режиме чтения и записи) требуется указать адрес слова. А вот в алгоритме стирания, как раз, указывается адрес блока, т.к. стирание производится самой флеш с подтверждением о выполненной процедуре, вот ей то и надо указать блок который необходимо стереть.


Страница 56 - word programm procedure (алгоритм слева и таблица справа)


Состоит из 4-х этапов:
1- запись команды 0х40 (правда адресс, по которому будет производиться запись выставляют сразу, но это значения не имеет)
2 - непосредственно запись слова по нужному адрессу.
3 - контроль записи по состоянию регистра статуса
4 - конроль общего статуса (по желанию)

то есть то, что я описал выше.



З.Ы. напоминаю - процесс записи во флеш - это сброс единичных битов в нулевое состояние (обратный процесс возможен только стиранием (установкой в 1) всего блока) - такова NAND память по своей архитектуре.

Gennadiy-P
17.08.2006, 18:25
Надо признаться, я ждал ответа. Приятно побеседовать с умным человеком!

Уже лучше. Флеш разбита на блоки потому что физическое строение NAND-памити таково само по себе. Стереть можно только блок во всем объеме. Для удобства адресное пространство разбили на независимые блоки, чтобы при стирании не приходилось стирать всю область памяти. Сответственно, под разные типы задач различная структура разбивки (top и bottom соответственно - блоки маленьких размеров с большим количеством циклов стирания (ресурсом) находятся в начале или в конце адресного пространства, вы лишь выбираете, какой тип флеши вам использовать в зависимости от ваших задач).

Надо признаться, я сам хотел написать то же самое, но в последний момент стер.

Далее, что касается диаграмм..
Это действительно циклы чтения и записи. Но..
Процессор общается с флеш как с любой другой перефирией.. он железный и ему все равно с каким именно устройствои идет обмен -
процессы сходны.
В обычном порядке, когда флеш работает в режиме по умолчанию,
она является не чем иным как обычным ПЗУ.. данные с нее считываются
как с любой другой микросхемы памяти.. причем побайтно или пословно.

Вот именно это я и сказал в самом начале.

никто и не говорил что обмен происходит блоками,

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

Если обмен происходит не блоками, то как может влиять распределение флешек на секторы?

Post 18
Вот именно поэтому содержимао файла должно быть разным,проц сам догадается куда что класть и сколько и модернизирует фаил под размер секторов?чтобы взять без проблем,надо положить.


Зачем тогда должно быть разное содержимое, если при записи и чтении блоки не играют роли?

Post 19 (Да простит меня Service!)
Я так понимаю что тип флэши важен для проца, получается для каждого типа флэши несколько отличаются дырки куда проц сует данные либо метод либо еще что то отличается (я не знаю что).

Разве важны дырки в побайтном протоколе?

Там есть еще, но перечитывать с выборкой времени нет.

Со стиранием и чтением разобрались, теперь запись.
Напооминаю что для сохранения своих данных (будь то стек или переменные) у процессора есть RAM, и там действительно все просто.
С флешью гораздо сложнее. Когда процессор осуществляет цикл записи во флеш - запись не происходит в адрессное пространство памяти.. зачастую даже значение сигналов на адрессной шине не имеет значения.
В данном случае запись осуществляется в буфер контроллера. Причем все операции помимо стандартного прямого чтения из памяти начинаются с этого просесса (см. таблицу 22). Например, для записи слова по определенному адрессу процессор должен записать в флеш по совершенно любому адрессу слово 0х40 (или 0х10), после этого флеш перейдет в режим записи слова, следующий шаг - процессор пишет нужное нам слово по нужному нам адрессу. После этого контроллер во флеши начнет писать наше слово по нашему адрессу. Далее, если в этот момент осуществить запись по любому адрессу значения 0х70, то адресное пространство флеши станет недоступным для чтения. Вместо этого по любому адрессу мы прочитаем значение регистра статуса и сможем проконтролировать, завершилась ли запись успешно. Осуществив запись по любому адрессу значения 0х20 мы переводим
контроллер флеши в режим стирания блока. В следующем цикле мы должны на шине адресса выставить номер стираемого блока, а на шине данных - значение D0h, то есть осуществить запись по адрессу <номер блока> значения D0h.

Вот эта шелуха как раз важна для разработчиков процессоров. Потому что это составляющие "железного" алгоритма, которым пользуется проц, а не программа-прошивальщик и нас это не касается, потому что главная задача "положить" и считать. Еще прошу учесть тот факт, что слово "буфер" в архитектуре м/с означает регистр-защелку необходимую для согласования уровней внутренней архитектуры с внешним миром, а также для синхронизации данных и адресов по алгоритмам управления. Но это не буфер памяти какого то размера.


И в зависимости от того, какая флеш у нас (к примеру 320с3т или 320с3б) - у нас сотрется разная область пространства.

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

Так вот: таблица 22 является системой команд данной флеши. В разных флешах разных производителей эта система команд своя, ровно как и разбивка адрессного пространства на блоки.

Вот это, возможно и есть суть. Только как процессор об этом понимает?
Буты в прошивках для разных типов флеш одинаковые. 16 байт разницы вряд ли смогут описать всю разницу типов. А там еще и ключи уникальные должны быть (я считаю, что эта разница они и есть). Во всем остальном буты равны. Так говорит WinHex. А как объяснить такой вариант? Я думаю многим приходилось ставить флешку объемом в два раза большим, чем используется в данной модели телефона (скажем из А57 в А52). Мне приходилось. И все работало, не смотря на разницу в блоках и их размерах.

И все-таки хочется сказать на тему разниц. Не забывайте! Все стремятся наоборот к совместимости. Особенно AMD к Intel. А вы все о разности. Внутри само-собой, иначе плагиат, но по системе команд. Какой же здравомыслящий производитель будет выпускать несовместимые вещи?

Всем процессом записи и стирания управляет программа, находящаяся
в самой флеш (то бишь в прошивке), процессор выступает лишь исполнителем. И если эта программа не предназначена для работы с именно той флеш, в которой она находится -
она с ней ПРОСТО НЕ СМОЖЕТ РАБОТАТЬ.


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

Есть еще несколько аргументов, что истина где-то рядом и гораздо проще, чем мы думаем. Но на сегодня хватит. До свидания.

Mobilguru
18.08.2006, 13:55
Post 13
Скорость как раз и не учитывается, а вот распределение флэшек на секторы и протокол работы с ней, это да.

Если обмен происходит не блоками, то как может влиять распределение флешек на секторы?


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

Post 18
Вот именно поэтому содержимао файла должно быть разным,проц сам догадается куда что класть и сколько и модернизирует фаил под размер секторов?чтобы взять без проблем,надо положить.


Зачем тогда должно быть разное содержимое, если при записи и чтении блоки не играют роли?

18 пост без комментариев - я с ним не согласен в принципе


Post 19 (Да простит меня Service!)
Я так понимаю что тип флэши важен для проца, получается для каждого типа флэши несколько отличаются дырки куда проц сует данные либо метод либо еще что то отличается (я не знаю что).

Разве важны дырки в побайтном протоколе?


тут вобще трудно понять о чем идет речь


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


ошибочка. процессор не разрабатывается под какой-то определенный тип флеши. в этом нет никакого смысла потому как процессор - устройство универсальное, оно не разрабатывается под какую-то определенную модель телефона и никто на перед не может сказать, с каким именно типом флеши ему предстои работать. На момент разработки cpu такой флеши может вобще не существовать. Это потом уже при разработке конечного устройства производители подбирают компоненты, которые бы удовлетворяли их требованиям. Да и реализовывать стирание и запись во флеш на аппаратном уроне при всей сложности данного процесса - нонсенс! Сложно (программа в несколько сотен байт справится с этим намного лучше) и абсолютно бессмысленно (зачем привязывать CPU к какому-то определенному типу памяти, начисто лишая его универсальности? Процессор снабжен стандартным интерфейсом работы с памятью, может приниать из нее данные (читать) и передавать данные в нее (в случае с RAM - записывать, в случае с флеш - всего лишь передавать команды и данные).


Еще прошу учесть тот факт, что слово "буфер" в архитектуре м/с означает регистр-защелку необходимую для согласования уровней внутренней архитектуры с внешним миром, а также для синхронизации данных и адресов по алгоритмам управления. Но это не буфер памяти какого то размера.


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


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

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


Вот это, возможно и есть суть. Только как процессор об этом понимает?
Буты в прошивках для разных типов флеш одинаковые. 16 байт разницы вряд ли смогут описать всю разницу типов. А там еще и ключи уникальные должны быть (я считаю, что эта разница они и есть). Во всем остальном буты равны. Так говорит WinHex. А как объяснить такой вариант? Я думаю многим приходилось ставить флешку объемом в два раза большим, чем используется в данной модели телефона (скажем из А57 в А52). Мне приходилось. И все работало, не смотря на разницу в блоках и их размерах.


ПРоцессору не нужно что-то понимать. он всего лишь средство, которое исполняет НАШУ (или разработчиков) программу. он всего лишь вилка, которой мы берем пищу (тот кусочек, который мы хотим) и перемещает ее нам в рот :-). Если МЫ хотим проверить состояние флеш после отправки команды на запись слова, то в программу МЫ вставим соответствующую процедуру.. и т.д.

Буты не отличаются (16 байт это по всей видимости HASH, тот самый индивидуальный ключ) потому что производитель уже вставил туда поддержку интеловских флешей, причем сделал это в тот момент, как только заключил договор с интел о поставке их микросхем для своих телефонов (насколько я понимаю, речь идет о сименсах А65 и амд и интел флешами?). То есть бут может быть предназначен для работы
с несколькими типами флеш (что имеет место в сименсах - это факт).
Это делает его универсальным и облегчает жизнь производителю.

Насчет флеши объемом в два раза большей.. совершенно верно.
Производитель удваивая (учетверяя, увосмиряя :-))) объем памяти сохраняет соместимось с младшей моделью (речь идет о флеши одного и того же типа, отличающейся объемом в два и более раз).
Постарайтесь вникнуть в таблицу размещения блоков и Вы поймете, каким образом это достигается.


И все-таки хочется сказать на тему разниц. Не забывайте! Все стремятся наоборот к совместимости. Особенно AMD к Intel. А вы все о разности. Внутри само-собой, иначе плагиат, но по системе команд. Какой же здравомыслящий производитель будет выпускать несовместимые вещи?


Вот тут есть много подводных камней.
Каждый из производителей стремится продвинуть на рынок свой продукт и вытеснить конкурента. это закон рынка. И если внешний интерфейс у флеши должен соответствовать стандарту (тот самый железный протокол обммена ЦПУ с памятью), (стандартные устройства просто не смогут работать с нестандартным интерфейсом, значит флешку просто не удастся продать.. какой бы она замечательной не была), то при разработке внутренней структуры каждый производитель идет своим путем, и каждый делает такую систему команд, какая ему удобна (приусловии, конечно, что эта удобность сохранится и для пользователя). вот тут каждый производитель вставляет и продвигает на рынок свои фишки... будь то скорость рабты с памятью (скорость стирания или записи), или дополнительные регистры защиты информации и Т.П. Реализовать же поддрежку десятка команд для работы с флеш на програмном уровне - вобще сущий пустяк.


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

Вот тут не уверен. напомните, работает ли А65 с интеловской флешью и фулом от АМД? А вспомните сколько было положено сименсов фулами, когда появился флеш BA20 (я тогда только начинал работать, потому
в этой информации тоже не совсем уверен). надеюсь что кто-то из участников форума подтвердит или опровергнет эту информацию.
Насколько отличаются типы флеш в С55, я не вникал и не берусь комментировать. видимо не очень отличаются, потому как работают эти тела с разными фулами. Но это скорее частный случай.

Gennadiy-P
18.08.2006, 16:30
Доброго дня!

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

Вообще то я не рассматривал все направления применения флеш-памяти, т.к. форум имеет свою тематику. Давайте поприземленней. Один процессор - разные производители флеш. Все-таки в телефоне проц или ПО затачивает работу флешек под один тип, с каким он работает, верхний или нижний. Ведь они (флешки) позволяют выбрать конкретный режим? Так как фулы под разные типы, но все-таки одной версии.

ошибочка. процессор не разрабатывается под какой-то определенный тип флеши. в этом нет никакого смысла потому как процессор - устройство универсальное, оно не разрабатывается под какую-то определенную модель телефона и никто на перед не может сказать, с каким именно типом флеши ему предстои работать. На момент разработки cpu такой флеши может вобще не существовать. Это потом уже при разработке конечного устройства производители подбирают компоненты, которые бы удовлетворяли их требованиям. Да и реализовывать стирание и запись во флеш на аппаратном уроне при всей сложности данного процесса - нонсенс! Сложно (программа в несколько сотен байт справится с этим намного лучше) и абсолютно бессмысленно (зачем привязывать CPU к какому-то определенному типу памяти, начисто лишая его универсальности? Процессор снабжен стандартным интерфейсом работы с памятью, может приниать из нее данные (читать) и передавать данные в нее (в случае с RAM - записывать, в случае с флеш - всего лишь передавать команды и данные).

Очень сомнительно, что процессоры телефонов Сименс являются универсальными ЦПУ. Мне они в другой аппаратуре не попадались, да и Вам наверное тоже. А так как разработка процессора проводилась для определенной задачи, то я сильно сомневаюсь, что разработчики не знали, какую флеш в телефон поставят производители. И еще интересный факт, что то в С62 не поставили флешку от С60. Наверное потому, что там другой процессор. Не так ли? И еще, если процессор ничего не может сам, а алгоритм, по которому он "учится работать с данной флеш" находится в самой флеш, то как происходит обработка первых байт данных? Не замкнутый ли это круг?

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

Представляю. Но в архитектуре он называется не так. Его можно увидеть названным RAM, Cache и т.д. Это наш русский язык позволяет одним словом называть многие вещи, а у буржуев с этим туговато. Но во всяком случае в мануале должен быть указан его размерчик. Согласитесь это важная деталь. В нашем мануале я этого не нашел (не заметил). Если Вам попадется, укажите, будьте так добры, и я с Вами соглашусь.

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

А почему бы и не заметить? Скажем флешеры типа Фреи, Клеи и т.п. как раз отображают размер блоков загружаемых в телефон (или пытаются это сделать), которые, как мне кажется, соответствуют блокам флешки, а вот WinSwap гонит их абсолютно одинаковыми во всем диапазоне записи. Правда они совсем не кратны размерам блоков флеш. Разница между первыми и вторым заключается в том, что первые посылают-стирают-пишут по каждому посланному блоку (или куску, пакету, если это не показатель блока), а последний сначала все стирает, а потом уже пишет.

ПРоцессору не нужно что-то понимать. он всего лишь средство, которое исполняет НАШУ (или разработчиков) программу. он всего лишь вилка, которой мы берем пищу (тот кусочек, который мы хотим) и перемещает ее нам в рот :-). Если МЫ хотим проверить состояние флеш после отправки команды на запись слова, то в программу МЫ вставим соответствующую процедуру.. и т.д.

Да, но для возможности исполнять НАШУ программу, сам проц должен обладать хоть какими-то зачатками "разума", иначе долго его придется учить, как эту НАШУ программу выполнить. Так же мучаются программисты с бестолковыми юзерами. Насчет примера с вилкой я понял и абсолютно согласен. Да это всего-лишь инструмент, но от себя хочу добавить, что наша вилка должна иметь хоть какую-то твердость и постоянство, а не гнуться и изменять свою форму от малейшего дуновения ветра. Иначе можно вымазать все щеки, а в рот так и не попасть. Хотя у Сименсов, похоже, это и происходит.

Буты не отличаются (16 байт это по всей видимости HASH, тот самый индивидуальный ключ) потому что производитель уже вставил туда поддержку интеловских флешей, причем сделал это в тот момент, как только заключил договор с интел о поставке их микросхем для своих телефонов (насколько я понимаю, речь идет о сименсах А65 и амд и интел флешами?). То есть бут может быть предназначен для работы
с несколькими типами флеш (что имеет место в сименсах - это факт).
Это делает его универсальным и облегчает жизнь производителю.

Что буты не отличаются это понятно, не понятно почему буты Intel и AMD одинаковые, если флешки имеют несовместимость. Как же так, флешки разные, система команд, как Вы утверждаете тоже, а буты, где, якобы, прописаны режимы работы проца с этими флешками однаковые? И почему, если бут поддерживает работу разных типов флеши (я говорю о разных производителях), то он их не поддерживает? Че-то тут неувязка.

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

Вот тут не уверен. напомните, работает ли А65 с интеловской флешью и фулом от АМД? А вспомните сколько было положено сименсов фулами, когда появился флеш BA20 (я тогда только начинал работать, потому
в этой информации тоже не совсем уверен). надеюсь что кто-то из участников форума подтвердит или опровергнет эту информацию.
Насколько отличаются типы флеш в С55, я не вникал и не берусь комментировать. видимо не очень отличаются, потому как работают эти тела с разными фулами. Но это скорее частный случай.

Не надо ничего опровергать! Здесь я говоил не о работе телефона после прошивки чужим фулом, а о самой процедуре флеширования. Максимум, что Joker сделал, это предуредил, что ID не совпадают и тут же предложил мне сделать выбор - шить или не шить. Чтобы проверить, я выбрал шить. Все прошилось очень спокойно, без казусов. Естественно тел не включился. Я этого и не ждал. Просто считал прошивку обратно и сравнил. Разница появилась только с адреса 7C0000, а это начало ЕЕПРОМ. При чем отличия шли не подряд, а выборочно, без закономерности ошибочного смещения адресов (блоков). Отличия составляли, в основном, от 3-х до 16-ти байт. Что дает некоторые права предположить на отсутствие влияния блочной системы флеш на точность выполнения процедуры записи.

Есть предположение (замечу, только предположение, т.к. мануала на проц и желания его читать нет, по мне так все равно, если не подходит один фул - я залью другой), что процедуры работы с флешками прописаны в самом проце, а точнее в какой-нибудь ROM-области ввиде служебных микрокодов. А вот инициализация того или иного режима, возможно, происходит из флешки, откуда точно не могу сказать, вероятно из ЕЕПРОМ области. А вот точки входа в подпрограммы инициализации у разных флешек возможно и разные. После чего работа и сбивается.
Кто-то здесь сказал что, если записать и тут же считать фул, то он совпадает, а после первого включения он изменяется (несовпадает). Я же попробовал его включить, а потом уже считал. Естественно было поздно проверять справедливость этого высказывания, а сделать повторное испытание неполучилось. Завалили работой.

Mobilguru
18.08.2006, 17:04
Увожеаемый Gennadiy-P.

Мне трудно с Вами спорить, процесс этот отнимает много времени,
поэтому я выхожу из спора. Свое мнение я изложил и остаюсь при нем. Все что хотел рассказать - рассказал. Вы же можете остаться при своем - я не против.

Мне интересно, эту ветку покинули все участники форума?
Ведь мне тоже интересно мнение коллег.

Gennadiy-P
18.08.2006, 17:22
Сдается что да. Что ж, до свидания. Удачи Вам на бескрайних просторах электроники. Приятно было "побеседовать". Скажу честно, лично я от этого диспута только выиграл и некоторые вопросы мне стали понятнее. Спасибо!

Mobilguru
18.08.2006, 17:39
Сдается что да. Что ж, до свидания. Удачи Вам на бескрайних просторах электроники. Приятно было "побеседовать". Скажу честно, лично я от этого диспута только выиграл и некоторые вопросы мне стали понятнее. Спасибо!

Взаимно.

Матроскин
09.09.2006, 19:38
Нда... Вот это полемика!!! Прямо битва бессмертных. Говорю без всякой иронии. Впечатляет и кое-что проясняет в мозгах. Правда, в той же степени и затуманивает. И, всё-таки, всё на уровне интуитивных догадок. Может быть, и не имеет смысла докапываться до донышка, но, тем не менее, странно, что данная проблема имеет место только в случае СемёнСемёнычей (хотя, возможно, я и ошибаюсь). Из вышесказанного уважаемыми спецами делаю для себя только один мало полезный вывод - мир катится к глобальной катастрофе несовместимости. Неужели нельзя выработать (ну хотя бы на этом примитивном уровне) единый протокол обмена данными?!!! Или, ещё проще - разработчики флешки, неужели не могли бы вморозить в свой чип такой котроллер, который взял бы на себя весь этот геморрой записи/стирания поблочно/побайтно/пословно и выйти к Его Величеству Процу с чистым умытым личиком, т. е., готовым пиринять/записать данные в указанный конкрентый адрес и так же просто выдать требуемые Величеством данные. Неужели при нынешних технологиях так уж сложно реализовать все эти алгоритмы внутри флеши и выпустить в свет конфетку в виде флеш-памяти, которая пишется/читается так же легко и непринуждённо, как RAM?!!! Ведь спрос на такое изделие будет огромен!!! Но нет!!! В современном мире почему-то никто не стремится облегчить жизень ближнему (и тем самым, в первую голову - самому себе). Во главу угла ставится ставится иная задача - опустить конкурента, сделать ему подлянку, пусть даже ценой собственных потерь. Или это всё спешка? Вперёд на танке, сорее на рынок, а дальше пусть потребитель выкручивается и подлаживается. Дескать, мы тебе сделали, не нравится - не ешь. Но почему же нормальный рынок не поставит всех на всоё место?!

ЗЫ:
Ну и нафлудил же я тут!!! Прошу прощения, наболело.
Даже не ожидал, что на данном форуме ещё кого-то, кроме меня, могут так глубоко задеть такие заоблачные теоретические вопросы, напрямую абсолютно не связанные с заколачиванием бабок. Господа Gennadiy-P и Mobilguru, глубокое вам мерси за столь содержательный диалог!!!:hello:

Gennadiy-P
11.09.2006, 11:11
Видишь ли. Личико у флешки умное и даже слишком умное, наверное много умнее, чем у разработчиков ПО СеменаСеменыча. Отсюда и глюки в телефонах. Главное условие, что "чистой" ячейка считается когда в ней содержится код FF. Записать в нее единички нельзя. Плавающие заряды. Вспомни ПЗУ с УФ стиранием. Процесс стирания проводится во всем банке сразу. То же самое и с электрически стираемыми ПЗУ. А здесь господа от Интел разбили весь диапазон на блоки. Стереть можно только один блок не трогая весь банк. Да и дополнительных функций напехали (защиту, блокировку, начальную разбивку, OTP-зону и т.д.) до дуры. Хотя процедуры записи и чтения стандартны. Блочная разбивка позволяет модифицировать содержимое флеш без полного стирания. Скажем, тебе надо изменить номер в телефонной книге (одну цифру). Хреново было бы если для этого надо было стереть всю прошиву и записать заново. А с одним блоком лепота!!! Считал-модифицировал-стер-записал.

А конкуренция Intel и AMD это куда глобальнее, чем прошивки в Семенах. Другое дело, что разработчикам Семенов надо бы одно место оторвать за то, что они допустили использование флешек от двух производителей. Как политические проститутки - и нашим, и вашим.

Матроскин
11.09.2006, 19:43
Я-то веду к тому, что могли бы разработчики флешки не грузить разработчиков софта всеми этими шаманствами с блоками и прочей необходимой для флеши дребеденью, а оставить всё это ВНУТРИ своего чипа, на совести встроенного контроллера. А снаружи эта чудесная флешка просто читалась/писалась бы процессором как обыкновенная память. То есть для изменения номера в тел. книге проц просто положил бы новый номер по нужному адресу, а флешка (т.е. её контроллер) уже сама там разобралась бы, как физически это выполнить (стиранием блока, записью его в свой буфер (наоборот, конечно), изменением содержимого нужных ячеек, возвратом блока на место). Сколько бы геморрою поубавилось бы в окружающей среде!!! Скольких глюков бы никогда не возникло на пустом месте, да и замена флешки была бы просто заменой на флешку нужного объёма пофигу, какого производителя и каких-то там внутренних только ей известных ритуалов. То есть, скинуть все заморочки на самый низкий уровень. Зачем грузить этим софт кнечного устройства?!!! Почему никто не удосужился выпустить такой чип?!! Ведь такую удобную штуковину с удовольствием все бы стали применять в своей аппаратуре.

Gennadiy-P
12.09.2006, 10:52
Полностью согласен! Но, наверное, это будет дороговато. Что в свою очередь снизит конкурентоспособность на рынке продаж.