реклама на сайте
подробности

 
 
> ПО для перепрошивки 8051, Дайте мудрый совет
Jevys
сообщение Sep 23 2009, 10:40
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 26-04-06
Пользователь №: 16 503



Встала задача по созданию программного обеспечения для обновления ПО 8051. Особенностью создаваемого устройства является то, что в процессе эксплуатации может потребоваться неоднократное обновление программного обеспечение. В связи с этим хочу спросить две вещи:
1. Можно ли вообще написать модуль ПО перепрошивки на Си? В проекте стоит опция максимальной оптимизации по размеру кода, при которой Кеil по идее может сам находить похожие куски кода и выделять их в подпрограммы. И тогда код, расположенный в ПО перепрошивки, будет вызывать код, который лежит за пределами области памяти программ перепрошивщика, что недопустимо. Остается только ассемблер?
2. Если все же писать на Си, то как жестко разместить программу перепрошивки с заданного адреса? Например 0xF800. И как это сделать в варианте на ассемблере.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Goodvin
сообщение Oct 22 2009, 20:44
Сообщение #2





Группа: Участник
Сообщений: 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 работает не по прерываниям?
Думаю, что в моем случае не получится реализовать Ваше решение из-за страничной организации памяти.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - Палыч   Цитата(Goodvin @ Oct 22 2009, 23:44) Уваж...   Oct 23 2009, 05:39
- - редактор   Сместить вектора прерывания в программе не проблем...   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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 03:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01944 секунд с 7
ELECTRONIX ©2004-2016