|
|
  |
LPC23xx - записать во флеш "из программы" |
|
|
|
Nov 25 2009, 09:54
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(zltigo @ Nov 25 2009, 12:38)  Поскольку Вы документацию НЕ читаете, то сообщаю - снести штатный загрузчик Вам не удастся - для этого надо знать, как это сделать  Отвечаю как пользователю: Мой опыт говорит об обратном. Чтобы что-то сломать - не обязательно знать, как это работает. И очень часто, даже слишком часто, приходилось слышать: "этого не может быть, потому что не может быть никогда", причем применительно к тематике этого форума, а не "вообще". А что касается документации - раз уж вы документацию читаете - ткните носом, где в документации описан алгоритм определения сектора для записи своих данных. Цитата(KRS @ Nov 25 2009, 12:35)  Вам надо только константы заменить, номера страниц и т.п. Так вот это-то как раз и непонятно - вот у меня есть список секторов. Где-то в них записана программа с данными, которая грузится при включении питания. Как мне определить - что занято, что свободно ?
|
|
|
|
|
Nov 25 2009, 09:59
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dr.Alexey @ Nov 25 2009, 12:41)  В большинстве кристаллов (особенно более поздних) загрузчик прошит в ROM памяти, и не может быть стерт/заменен пользователем. Может. И совсем не через JTAG. У производителя лежат прошивки ВООТ в комплекте с загрузчиком, который снимает дополнительную защиту с сектора. Для овладения сокровенными знаниями, можете дизассемблировать либо этот загрузчик, либо официальную библиотеку для управления дополнительной защитой. Цитата(evgen2 @ Nov 25 2009, 12:54)  А что касается документации - раз уж вы документацию читаете - ткните носом, где в документации описан алгоритм определения сектора для записи своих данных. Вы хоть сами поняли, что спросить хотите? Цитата Так вот это-то как раз и непонятно - вот у меня есть список секторов. Где-то в них записана программа с данными, которая грузится при включении питания. Как мне определить - что занято, что свободно ? Все свободны, ибо боотсектор Вам не доступен.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 25 2009, 10:11
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(zltigo @ Nov 25 2009, 12:59)  Вы хоть сами поняли, что спросить хотите?
Все свободны, ибо боотсектор Вам не доступен. Если все свободны, то куда девается программа, которую я прошиваю ?
|
|
|
|
|
Nov 25 2009, 10:31
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(KRS @ Nov 25 2009, 13:22)  А вы код свой выложите, записи во флеш. Да я еще ничего не писал, я просто спрашиваю, у меня в голове никак не уложится. Я пишу на писюке программу, заливаю ее во флеш, она во флеше занимает какие-то сектора. Теперь я изнутри хочу записать во флеш какие-то параметры. Мне предлагают писать в один из 11 для 128К или 28 для 512К секторов. Как мне не убить свою программу ?
|
|
|
|
|
Nov 25 2009, 10:43
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(evgen2 @ Nov 25 2009, 12:31)  Теперь я изнутри хочу записать во флеш какие-то параметры. Мне предлагают писать в один из 11 для 128К или 28 для 512К секторов. Как мне не убить свою программу ?  И этот человек, который не знает, в какие адреса попала его программа, возмущается, что вопрос перенесли в ветку для начинающих. Позабавило. 1)Прочитайте документацию на ваш линкер. От корки до корки. 2)Попросите линкер сгенерировать вам карту памяти (.map). Медитируйте над ней. 3)Попросите линкер зарезервировать какой-то из сегментов для ваших данных. Он будет следить за тем, чтобы в этот сегмент не попал никакой код или другие даные.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 25 2009, 11:21
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(zltigo @ Nov 25 2009, 13:47)  Про "Вашу" спрашиваете у своей программы, где она кончается. И не пеняйте на Фирму NXP - она о Вашем творчестве не знает ничего. Общий подход к делу - заводите некий сегмент с лежащей в нем переменой и линкуете его последним. По адресу этой переменной и узнаете где кончается Ваша программа. Вопрос обсуждался многократно, особенно когда начинают писать свои загрузчики. У некоторых компиляторов-линкеров такого типа механизм встроен на халяву. В поиск. Ну значит - таки не все свободны. И на NXP я не пеняю. Хотя вот...вроде бы число циклов записи во флеш ограничено. Где это в доке написано - не вижу в упор... Цитата(Сергей Борщ @ Nov 25 2009, 13:43)   И этот человек, который не знает, в какие адреса попала его программа, возмущается, что вопрос перенесли в ветку для начинающих. Позабавило. ну так ежели не<s>трахаться</s> иметь дела с ассемблером и не пытаться ужаться в 512 байт RAM с 8-битным кодом, то про это знать вовсе не обязательно во всяком случае - пока не припрет.
|
|
|
|
|
Nov 25 2009, 11:25
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(evgen2 @ Nov 25 2009, 14:17)  И на NXP я не пеняю. А это кто писал Цитата где в документации описан алгоритм определения сектора для записи своих данных. Цитата Где это в доке написано - не вижу в упор... Тяжелый случай  . А поиск в PDF не по плечу? Запустите в Data Sheet поиск "erase cycles".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 25 2009, 15:23
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(zltigo @ Nov 25 2009, 14:25)  А это кто писал Ну так не написано ж. Цитата(zltigo @ Nov 25 2009, 14:25)  Тяжелый случай  . А поиск в PDF не по плечу? Запустите в Data Sheet поиск "erase cycles". Вы не поверите. Нет такой буквы. Ни в UM10211 (дока на LPC2364-78), ни в UM10360 (дока на 17xx)
|
|
|
|
|
Nov 25 2009, 15:42
|

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Цитата(evgen2 @ Nov 25 2009, 18:23)  Ну так не написано ж. Вы не поверите. Нет такой буквы. Ни в UM10211 (дока на LPC2364-78), ни в UM10360 (дока на 17xx) Зато написано "endurance"... И "retention time" заодно.
|
|
|
|
|
Nov 25 2009, 15:59
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(zltigo @ Nov 25 2009, 18:32)  Поверю  . Читаем еще раз я писал "Data Sheet" а не "User Manual". Все параметры на чипы указываются в Data Sheet-ах. тьфу ты...виноват. Во многих других местах даташиты=узермануалу. Хотя чего бы не написать эту цифру в мануале - что, жаба душит лишнюю строчку написать ? Или в даташит отправить.. Цитата(zltigo @ Nov 25 2009, 18:32)  Так и НЕ ДОЛЖНО ничего быть написано про Вашу программу - нечего на зеркало пенять. Раз это мануал для юзера - должно быть написано. Хотя бы - "смотрите в инструкцию для вашего линкера/компилера куда он чего складывает"
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|