Доброго времени суток!!!
Вчера попробовал сместить адреса в Кейле. Делается это, как описывает уважаемый 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 работает не по прерываниям? Думаю, что в моем случае не получится реализовать Ваше решение из-за страничной организации памяти.
|