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

 
 
> Прошивки AT89S8252, как получить общий исполняемый файл прошивки?
Kofey Nik
сообщение Apr 6 2011, 09:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-07-05
Из: Нижний Новгород
Пользователь №: 6 540



У AT89S8252 имеется прошивка внутренней флэш программ (8к) плюс внешняя ПЗУ (64к). Как получить целиковый файл исполняемой программы? По-идее, поскольку в таких случаях вначале исполняется внутренняя прошивка а потом вшнешняя, то надо наложить эти 8к на начало ПЗУ, но тогда исчезнут масса служебных строк, необходимых программе. А если состыковать файл ПЗУ в конец файла внутренней флэш, тогда размер прошивки превысит 64К - как процессору с 16-разрядной шиной адреса добраться до конца такой программы?


--------------------
Все мы учились понемногу - чему нибудь и как нибудь :).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Apr 6 2011, 10:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Kofey Nik @ Apr 6 2011, 13:01) *
Как получить целиковый файл исполняемой программы?
Что значит "целиковый"? C какой целью Вы хотите получить такой файл?

Цитата(Kofey Nik @ Apr 6 2011, 13:01) *
По-идее, поскольку в таких случаях вначале исполняется внутренняя прошивка а потом вшнешняя...
Не обязательно в такой последовательности. При обращении по адресу бОльшем, чем максимальный адрес внутренней памяти программ, обращение производится к внешней памяти.

Цитата(Kofey Nik @ Apr 6 2011, 13:01) *
А если состыковать файл ПЗУ в конец файла внутренней флэш, тогда размер прошивки превысит 64К - как процессору с 16-разрядной шиной адреса добраться до конца такой программы?
Вполне возможно, что младшие 8К внешней памяти вовсе не используются... Тут уж - как построено ПО нужно смотреть...

Если - не секрет: что это за устройство такое?
Go to the top of the page
 
+Quote Post
Kofey Nik
сообщение Apr 6 2011, 12:57
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-07-05
Из: Нижний Новгород
Пользователь №: 6 540



Цитата(Палыч @ Apr 6 2011, 14:00) *
Что значит "целиковый"? C какой целью Вы хотите получить такой файл?

Попробовать дизассемблировать - нужно исправить одно ограничение в прошивке. Опыт с 51-м был. Целостная прошивка - ну, в аппаратном виде носителей программы два, а мне нужно получить один непрерывный файл с непрерывным адресным пространством.

Цитата(Палыч @ Apr 6 2011, 14:00) *
Не обязательно в такой последовательности. При обращении по адресу бОльшем, чем максимальный адрес внутренней памяти программ, обращение производится к внешней памяти.

Начиная с какого адреса во внешнем ПЗУ? Максимальный_адрес +1 ? Это я и имел в виду.

Цитата(Палыч @ Apr 6 2011, 14:00) *
Вполне возможно, что младшие 8К внешней памяти вовсе не используются... Тут уж - как построено ПО нужно смотреть...

Первый байт равен 02 только во внутренней флэш, ПЗУ начинается с 20, следующий тоже 20 - это символы кодовой страницы ASCII - они нужны для работы программы, затенять их внутренней прошивкой чревато их исключением. Вот в чем проблема для меня.

если наложить внутреннее содержимое (из флэш) на первые 8К пространства внешнего ПЗУ программ, то при дизасе получается галиматья -

...
code:1FFA mov R6, #8
code:1FFC mov R1, #0x68 ; 'h' ; - после этой команды нет перехода на исполняемый код !!!
code:1FFC ; END OF FUNCTION CHUNK FOR start
code:1FFC ; ---------------------------------------------------------------------------
code:1FFE .byte 0x12
code:1FFF .byte 0x61 ; a
code:1FFF ; end of 'code'
code:1FFF
seg_01:00002000 ; ===========================================================================
seg_01:00002000
seg_01:00002000 ; Segment type: Pure code
seg_01:00002000 ;.segment seg_01
seg_01:00002000 ; .equ $, 0x2000
seg_01:00002000 ; START OF FUNCTION CHUNK FOR seg_01_4FC8
seg_01:00002000 seg_01_2000: .byte 0xFF
...


Сообщение отредактировал Kofey Nik - Apr 6 2011, 12:49


--------------------
Все мы учились понемногу - чему нибудь и как нибудь :).
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 6 2011, 19:18
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Kofey Nik @ Apr 6 2011, 16:57) *
Попробовать дизассемблировать - нужно исправить одно ограничение в прошивке. Опыт с 51-м был. Целостная прошивка - ну, в аппаратном виде носителей программы два, а мне нужно получить один непрерывный файл с непрерывным адресным пространством.
Э-э-э-э... Чего это вдруг - "с непрерывным адресным пространством"? В МК51 "адресных пространств" аж целых три штуки, и из них никак не получить одно непрерывное. При дизассемблировании нужно использовать два из них: дизасеммблибуются внутренняя flash и внешнее ПЗУ - каждое отдельно от другого, но с использованием результатов дизассемблирования другого...

Цитата(Kofey Nik @ Apr 6 2011, 16:57) *
если наложить внутреннее содержимое (из флэш) на первые 8К пространства внешнего ПЗУ программ, то при дизасе получается галиматья
Вовсе не обязательно, что выполнение программы плавно "перетечет" из внутренней flash во нешнее ПЗУ. Например, может быть, что во внешнем ПЗУ находится не исполняемый код, а некоторые данные (например, изображение, выводимое на некий экран), или набор процедур/подпрограмм, вызываемый из "основной" программы (программы, расположенной во внутренней flash).

Если подвести итог под вышесказанным: 1) необходимо дизассемблировать вначале прошивку внутренней flash, при этом обратить внимание на использование обращений к нешнему ПЗУ; 2) с учетом анализа дизассемблированного кода из п.1 произвести дизассемблирование прошивки внешнего ПЗУ.

Конечно, всё это с учетом замечания АНТОХИ
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Kofey Nik   Прошивки AT89S8252   Apr 6 2011, 09:01
|- - AHTOXA   А на ноге EA что, земля или питание? Если земля, т...   Apr 6 2011, 17:16
|- - Kofey Nik   AHTOXA Конечно же, ЕА=1. Не случайно же первый бай...   Apr 7 2011, 05:14
|- - Палыч   Цитата(Kofey Nik @ Apr 7 2011, 09:14) Я т...   Apr 7 2011, 06:17
|- - Kofey Nik   Цитата(Палыч @ Apr 7 2011, 10:17) На Ваше...   Apr 7 2011, 07:13
|- - Палыч   Цитата(Kofey Nik @ Apr 7 2011, 11:13) Пол...   Apr 7 2011, 07:46
|- - Kofey Nik   Цитата(Палыч @ Apr 7 2011, 11:46) По свое...   Apr 7 2011, 08:17
|- - Палыч   Цитата(Kofey Nik @ Apr 7 2011, 12:17) ......   Apr 7 2011, 08:59
|- - Kofey Nik   Цитата(Палыч @ Apr 7 2011, 12:59) Посмотр...   Apr 7 2011, 09:33
|- - Палыч   Цитата(Kofey Nik @ Apr 7 2011, 13:33) Кро...   Apr 7 2011, 10:04
|- - Harbinger   Цитата(Kofey Nik @ Apr 7 2011, 12:33) ...   Apr 9 2011, 05:29
- - редактор   Без разбора схемы обсуждение некорректно. Если вне...   Apr 14 2011, 11:45
- - Denis24   Можно сделать во внешнем ПЗУ банк данных по первым...   Apr 18 2012, 04:48


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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 09:00
Рейтинг@Mail.ru


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