Если уж дорабатывать прошивку, а с той стороны стоит мощный процессор с большой памятью, то имеет смысл воспользоваться одной забавной идеей, опубликованной когда-то в журнале "Микропроцессорные средства и системы".
Загрузчик занимает в адресном пространстве единственное слово, допустим, 173000. После каждого обращения к нему слово меняется. После сброса там содержится код 014700 (команда MOV -(PC), R0). После выборки этой команды PC увеличится на два, а автомат загрузки (в нашем случае - процессор РЕ-мулятора) подставит по адресу 173000 следующее слово - адрес ОЗУ, откуда начнем размещать загрузчик. В процессе исполнения этой команды (MOV) он уменьшится на два и по этому адресу будет считано слово, тот самый адрес и PC уменьшившись на 2 снова покажет 173000. Автомат загрузки опять изменит содержимое 173000, теперь там будет код 014720 (команда MOV -(PC),(R0)+), после считывания этой команды автомат загрузки покажет первую команду загружаемой программы, в процессе исполнения этого MOV PC снова вернется к 173000 и перешлет первое слово программы загрузчика, куда надо, автомат снова подставит тот же MOV, и т.д. То есть автомат должен по очереди выдавать код 014720 и очередное слово программы, а ЦП, исполняя эту "программу" занесет в заданную область памяти весь загрузчик. После того, как передадим последнее слово загрузчика, автомат должен выдать код 014707 (MOV -(PC),PC, далее - адрес запуска загрузчика, и вперед. В журнале МП предлагалось делать это из обычной ПЗУхи и счетчика, расход памяти ПЗУ при этом оказывался вдвое больше, зато не занимаем адресное пространство. Ну, а с РЕ-мулятоором и лишней памяти не надо...





Ответить с цитированием