|
ПО для перепрошивки 8051, Дайте мудрый совет |
|
|
|
Sep 23 2009, 10:40
|
Группа: Участник
Сообщений: 6
Регистрация: 26-04-06
Пользователь №: 16 503

|
Встала задача по созданию программного обеспечения для обновления ПО 8051. Особенностью создаваемого устройства является то, что в процессе эксплуатации может потребоваться неоднократное обновление программного обеспечение. В связи с этим хочу спросить две вещи: 1. Можно ли вообще написать модуль ПО перепрошивки на Си? В проекте стоит опция максимальной оптимизации по размеру кода, при которой Кеil по идее может сам находить похожие куски кода и выделять их в подпрограммы. И тогда код, расположенный в ПО перепрошивки, будет вызывать код, который лежит за пределами области памяти программ перепрошивщика, что недопустимо. Остается только ассемблер? 2. Если все же писать на Си, то как жестко разместить программу перепрошивки с заданного адреса? Например 0xF800. И как это сделать в варианте на ассемблере.
|
|
|
|
|
 |
Ответов
|
Oct 22 2009, 20:44
|
Группа: Участник
Сообщений: 12
Регистрация: 8-10-09
Из: СПб
Пользователь №: 52 817

|
Доброго времени суток!!!
Вчера попробовал сместить адреса в Кейле. Делается это, как описывает уважаемый barabek: project->options for target->bl51 locate снимаем галачку "Use Memory Layuot..." в поле "Code Range" изменяем первый адрес на тот, который нужно. В моем случае, для CC1010, адрес можно менять на число байт, кратное 128, это следует из страничной организации памяти программ этого контроллера (256 страниц по 128 байт в каждой). Hex генерируется что надо, но таблица векторов прерывания все равно идет с нулегого адреса, что не удивительно:
БЫЛО:
:020000020000FC :100000000211E1000000000000000002114E4B2F21 :100010000E58000041FC9C0280604844810AFFC0E9 :10002000000000020FB2EF4E70038D9922AF058FD2 :10003000C12200000000000000000002108000004B :10004000000000020EDEBB010689828A83E0225096 :1000500002E722BBFE02E32289828A83E49322BB69 :10006000010CE58229F582E5833AF583E02250060A :10007000E92582F8E622BBFE06E92582F8E222E5C0 :100080008229F582E5833AF583E49322BB01068950 :10009000828A83F0225002F722BBFE01F322F8BBD2 :1000A000010DE58229F582E5833AF583E8F02250D7 :1000B00006E92582C8F622BBFE05E92582C8F222A0
СТАЛО:
:020000020000FC :1000000002121B0000000000000000021188000026 :1000100000000000000000000000000000000000E0 :10002000000000020FEC00000000000000000000D3 :1000300000000000000000000000000210BA0000F4 :10004000000000020F180000000000000000000087 :1000500000000000000000000000000000000000A0 :100060000000000000000000000000000000000090 :100070000000000000000000000000000000000080 :10008000BB010689828A83E0225002E722BBFE027E :10009000E32289828A83E49322BB010CE58229F55D :1000A00082E5833AF583E0225006E92582F8E622CC :1000B000BBFE06E92582F8E222E58229F582E58386
Правда в hex'нике изначальном в начале, где вектора прерывания, еще что-то есть, но я не знаю что это (например адрес 0x000E)
Щас думаю как в сложившейся ситуации разместить bootloader и как что будет работать.
Уважаемый Палыч, не понял фразу "загрузчик работает исключительно по готовности" это как, нельзя ли описать по подробнее? И еще, как вы принемаете прошивку, если bootloader работает не по прерываниям? Думаю, что в моем случае не получится реализовать Ваше решение из-за страничной организации памяти.
|
|
|
|
Сообщений в этой теме
Jevys ПО для перепрошивки 8051 Sep 23 2009, 10:40 barabek Цитата(Jevys @ Sep 23 2009, 20:40) Встала... Sep 23 2009, 23:59 62256 Цитата(barabek @ Sep 24 2009, 02:59) Можн... Oct 5 2009, 22:04  barabek Цитата(62256 @ Oct 6 2009, 08:04) не можн... Oct 15 2009, 12:39 Jevys Обновление ПО представляю так: От компьютера по ст... Sep 24 2009, 06:04 редактор Я размещаю загрузчик с 0 адреса, тогда он гарантир... Oct 15 2009, 05:49 Goodvin Доброго времени суток!!!
Столкнулся с... Oct 21 2009, 16:33 Палыч Цитата(Goodvin @ Oct 21 2009, 19:33) Если... Oct 22 2009, 09:55 редактор Сместить вектора прерывания в программе не проблем... Oct 23 2009, 04:49 Goodvin Доброго времени суток!!!
А может быть... Oct 23 2009, 16:16 barabek Цитата(Goodvin @ Oct 24 2009, 03:16) Добр... Oct 24 2009, 00:27 Goodvin Доброго времени суток!!!
Думаю поступ... Oct 26 2009, 15:24 Палыч Цитата(Goodvin @ Oct 26 2009, 18:24) Но п... Oct 26 2009, 16:20 редактор Цитата(Goodvin @ Oct 26 2009, 19:24) Еще ... Oct 27 2009, 07:09 Goodvin Доброго времени суток!!!
Цитата... Oct 26 2009, 18:49 barabek Цитата(Goodvin @ Oct 27 2009, 05:49) Добр... Oct 27 2009, 03:38 Палыч Цитата(Goodvin @ Oct 26 2009, 21:49) В об... Oct 27 2009, 06:37 62256 Цитата(редактор @ Oct 27 2009, 09:09) Заг... Nov 6 2009, 19:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|