|
LPC 2366 проблема в ISP, Не получается перезаписать начальные адреса Flash |
|
|
|
Mar 25 2015, 12:38
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 16-01-15
Пользователь №: 84 635

|
Здравствуйте форумчане! Прошу помочь, т.к. уже не знаю что делать... Пишу внутрисистемный (ISP) программатор для LPC 2366, и столкнулся с тем, что в процессе прошивки не получается стереть полностью весь флэш, адреса с 0x00 по 0x40 зарезервированы под вектора прерываний. При форматировании всего флэша посредством ISP-команды "E 0 14\r\n" в этом диапазоне остается что-то, все остальное как и положено - FF. Согласно hex-файлу прошивки, которую я пытаюсь туда записать, в этом диапазоне должны находиться определённые данные, которые туда не записываются. Вот то что надо записать в формате Intel HEX, адрес предшествует данным.
Вот как выглядит флэш после полного форматирования:
Вот что я пытаюсь записать из оперативной памяти во флэш по адресу 0x0:
Во флэше по указанному адресу это появляется в следующем искаженном виде:
Что скажете?
|
|
|
|
|
 |
Ответов
|
Apr 10 2015, 01:51
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Сергей Борщ @ Apr 9 2015, 17:02)  А на ARM7 вообще не вижу проблемы - там области векторов всегда лежит один и тот же кусок кода, его контрольная сумма - константа, которую можно посчитать вручную и прибить в соответствующее место гвоздями. Чаще всего, но не всегда. Чаще всего там конечно набор из LDR PC, [PC, #24], но никто не мешает сделать переход на один адрес из 2-х и более векторов или расположить код сразу за таблицей ISR, сделав переход обычным B.
|
|
|
|
|
Apr 10 2015, 05:09
|

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

|
Цитата(jcxz @ Apr 10 2015, 03:51)  но никто не мешает сделать переход на один адрес из 2-х и более векторов Вы хотели сказать - использовать одну и ту же константу адреса для всех команд перехода из векторов? Экономия на спичках. выиграть максимум четыре слова программного кода, которые гораздо проще отыграть где-то в остальной программе. Цитата(jcxz @ Apr 10 2015, 03:51)  или расположить код сразу за таблицей ISR, сделав переход обычным B. Каждый сам себе злобный Буратина. Или приведенный простой кусочек кода, который решает проблему контрольной суммы и делает программу чуть короче и быстрее, либо выдумываем себе трудность и героически ее преодолеваем. Имея на выходе результат заведомо худший, потому что добавляется один лишний переход здесь и какое-то дополнительное количество кода на чтение VIC_ADDRESS и дальнейшее ветвление по нему. Я не вижу абсолютно никакого смысла в этих лишних движениях в программе, кроме как сделать из маленькой быстрой программы большую медленную. В общем, обсуждавшуюся три страницы задачу я для себе решил минимальными усилиями. Кому не нравится - пусть делает лучше.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 10 2015, 06:23
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 16-01-15
Пользователь №: 84 635

|
Цитата(Сергей Борщ @ Apr 10 2015, 08:09)  Вы хотели сказать - использовать одну и ту же константу адреса для всех команд перехода из векторов? Экономия на спичках. выиграть максимум четыре слова программного кода, которые гораздо проще отыграть где-то в остальной программе. Каждый сам себе злобный Буратина. Или приведенный простой кусочек кода, который решает проблему контрольной суммы и делает программу чуть короче и быстрее, либо выдумываем себе трудность и героически ее преодолеваем. Имея на выходе результат заведомо худший, потому что добавляется один лишний переход здесь и какое-то дополнительное количество кода на чтение VIC_ADDRESS и дальнейшее ветвление по нему. Я не вижу абсолютно никакого смысла в этих лишних движениях в программе, кроме как сделать из маленькой быстрой программы большую медленную.
В общем, обсуждавшуюся три страницы задачу я для себе решил минимальными усилиями. Кому не нравится - пусть делает лучше. Этот процесс (подсчета и перезаписи контрольной суммы векторов прерываний) будет автоматизирован при помощи софта, который будет подготавливать прошивку, переводя её из традиционного HEX-вида в необходимый и удобный для записи + ещё будет шифроваться ключом AES (пока не решили какой битности). Дешифровка прошивки будет производиться в программаторе, который будет знать ключ шифрования, программатор будет защищён от чтения. Такие пироги
|
|
|
|
Сообщений в этой теме
lavrik LPC 2366 проблема в ISP Mar 25 2015, 12:38 Golikov A. Уже было тут недавно про не стираемое начало флеши... Mar 25 2015, 13:57 KRS Цитата(lavrik @ Mar 25 2015, 15:38) Пишу ... Mar 25 2015, 16:03 Golikov A. ну я так понимаю что он мапит бут ром в начало фле... Mar 25 2015, 17:02 KRS Цитата(Golikov A. @ Mar 25 2015, 20:02) н... Mar 25 2015, 18:13  jcxz Цитата(KRS @ Mar 26 2015, 00:13) Но это в... Mar 26 2015, 05:44   KRS Цитата(jcxz @ Mar 26 2015, 08:44) Что-то ... Mar 26 2015, 18:57   KRS Цитата(jcxz @ Mar 26 2015, 08:44) Это-же ... Mar 26 2015, 20:10    jcxz Цитата(KRS @ Mar 27 2015, 02:10) Все прог... Mar 26 2015, 20:17     lavrik Цитата(jcxz @ Mar 26 2015, 23:17) Ну что-... Mar 26 2015, 23:16 Golikov A. ну не знаю...
мне казалось бут пин зажал, там и ре... Mar 25 2015, 19:24 Golikov A. Вот и мне так кажется...
Единственное что я сейча... Mar 26 2015, 05:56 Сергей Борщ Цитата(Golikov A. @ Mar 26 2015, 07:56) Е... Mar 26 2015, 07:42 Палыч ТС знает ли о существовании CRP (Code Read Protect... Mar 26 2015, 07:54  lavrik Цитата(Палыч @ Mar 26 2015, 10:54) ТС зна... Mar 26 2015, 11:06 Golikov A. ЦитатаBlank check
Не что-то вы обманываете
UM1060... Mar 26 2015, 09:51 Сергей Борщ Цитата(Golikov A. @ Mar 26 2015, 11:51) Н... Mar 26 2015, 10:46 Golikov A. чудно однако....
ведь FlashMagic реально сначала ... Mar 26 2015, 11:07 KRS Кроме того если нужно ускорить прошивку. можно заг... Mar 26 2015, 20:32 KRS загрузить в ОЗУ, например по адресу
0x40000200
24... Mar 27 2015, 00:20 jcxz Цитата(KRS @ Mar 27 2015, 06:20) но тут о... Mar 28 2015, 04:34  KRS Цитата(jcxz @ Mar 28 2015, 07:34) На всех... Mar 29 2015, 20:54 lavrik Спасибо всем огромное! В очередной раз форумча... Apr 2 2015, 12:13 lavrik Думал что на этом эпопея закончится, ан нет...
Но... Apr 8 2015, 07:41 KRS Цитата(lavrik @ Apr 8 2015, 10:41) и посл... Apr 8 2015, 07:45  lavrik Цитата(KRS @ Apr 8 2015, 10:45) Именно пе... Apr 8 2015, 08:12   KRS При записи по 0 адресу:
Код uint32_t s;
s=... Apr 8 2015, 08:32    lavrik Цитата(KRS @ Apr 8 2015, 11:32) При запис... Apr 8 2015, 08:49     KRS Цитата(lavrik @ Apr 8 2015, 11:49) пока ч... Apr 8 2015, 08:58 Golikov A. Надо отпустить ногу бута. Apr 8 2015, 08:02 lavrik Цитата(Golikov A. @ Apr 8 2015, 11:02) На... Apr 8 2015, 08:04 KRS Если контрольная сумма векторов прерываний не посч... Apr 8 2015, 08:11 Golikov A. а записать ее надо в серединку таблицы прерываний ... Apr 8 2015, 08:35 lavrik Там же возможна запись из ОЗУ во Flash только блок... Apr 8 2015, 09:04 KRS Цитата(lavrik @ Apr 8 2015, 12:04) Там же... Apr 8 2015, 09:11 jcxz Цитата(lavrik @ Apr 8 2015, 15:04) Там же... Apr 8 2015, 09:38  KRS Цитата(jcxz @ Apr 8 2015, 12:38) В LPC17x... Apr 8 2015, 09:41   jcxz Цитата(KRS @ Apr 8 2015, 15:41) Но это то... Apr 8 2015, 09:51    den_po Цитата(jcxz @ Apr 8 2015, 14:51) Можно. Е... Apr 8 2015, 12:35     jcxz Цитата(den_po @ Apr 8 2015, 18:35) Одно в... Apr 8 2015, 16:30      den_po Цитата(jcxz @ Apr 8 2015, 21:30) Писали н... Apr 9 2015, 03:38       jcxz Цитата(den_po @ Apr 9 2015, 09:38) Нет, т... Apr 9 2015, 09:42    KRS Цитата(jcxz @ Apr 8 2015, 12:51) Можно. Е... Apr 8 2015, 19:41     jcxz Цитата(KRS @ Apr 9 2015, 01:41) Только во... Apr 9 2015, 02:26 Golikov A. В вашей прошивке в начале лежит таблица прерываний... Apr 8 2015, 09:37 lavrik Цитата(Golikov A. @ Apr 8 2015, 12:37) В ... Apr 9 2015, 10:35  KRS Цитата(lavrik @ Apr 9 2015, 13:35) То ест... Apr 9 2015, 10:49   lavrik Цитата(KRS @ Apr 9 2015, 13:49) там выдел... Apr 9 2015, 11:09    KRS Цитата(lavrik @ Apr 9 2015, 14:09) В моем... Apr 9 2015, 13:42 Golikov A. да не в размере дело, а в том что надо поправить 4... Apr 8 2015, 09:41 Golikov A. так же как нельзя писать в не стертую флэшь (если ... Apr 8 2015, 09:43 Golikov A. на то место куда уже писали нельзя, хоть как кратн... Apr 8 2015, 10:36   Сергей Борщ Цитата(Сергей Борщ @ Apr 9 2015, 13:02) к... Apr 9 2015, 11:19    lavrik Цитата(Сергей Борщ @ Apr 9 2015, 14:19) ... Apr 9 2015, 11:37     jcxz Цитата(Сергей Борщ @ Apr 10 2015, 11:09) ... Apr 10 2015, 09:00      Сергей Борщ Цитата(jcxz @ Apr 10 2015, 11:00) Использ... Apr 10 2015, 09:16 lavrik Появился сдвиг! Я сделал следующее: прошил чер... Apr 9 2015, 12:52 Obam Так как написано в User Manual:
"…Criterion ... Apr 9 2015, 13:20 Golikov A. надо сложить не 5 значений!
а всю таблицу вект... Apr 9 2015, 16:09 lavrik Цитата(Golikov A. @ Apr 9 2015, 19:09) на... Apr 9 2015, 20:25 KRS Цитата(Golikov A. @ Apr 9 2015, 19:09) а ... Apr 10 2015, 13:01 Golikov A. Цитатаоткуда ж я знал что там Little Endian... sad... Apr 10 2015, 04:59 IgorKossak Когда я слышу фразу: "... каждый такт на счет... Apr 10 2015, 09:30 jcxz Цитата(IgorKossak @ Apr 10 2015, 15:30) К... Apr 10 2015, 09:38 Golikov A. под инвертировать имел ввиду, конечно, инверсию зн... Apr 10 2015, 15:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|