|
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 4
|
||||||
Выполнение кода из внешней EEPROM (ASM, AT89C51ED2)01.09.2015, 09:59. Показов 5647. Ответов 16
Метки нет (Все метки)
Задача: Необходимо в память (EEPROM) записать исполняющий код (не важно что он делает),который будет выполняться при включении микроконтроллера. Сам код:
Суть проблемы: В общем то в даташите, есть блок-схема которая повзоляет реализовать запись данных в EEPROM этого МК. В целом понятно, кроме самого важного момента. Цитирую даташит:"DPTR=adress, ACC=Data, Exec: MOVX @DPTR,A" . Суть понятна- указываем DPTR с какого адресса начать запись, пересылаем данные в Акк. и потом из Акк в DPTR. Вопрос:Как можно переслать код преведенный выше в Акк(т.е. выполнить условие даташита - ACC=Data), если это просто набор нетраслированного текста? А команда MOV по сути работает либо напрямую со значениями (цифрами) либо из регистров. И попутный вопрос: Как для DTPR нужно указывать адресс (из даташита - DPTR=adress), с которого будут записываться данные в память EEPROM? Спасибо.
0
|
||||||
| 01.09.2015, 09:59 | |
|
Ответы с готовыми решениями:
16
Как отследить выполнение кода, если выполняется печать внешней печатной формы? СМА Bosch WOP2051, прошивка EEProm, Нужна прошивка внешней EEProm Взаимодействие МК c внешней EEPROM по SPI |
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||
| 01.09.2015, 16:37 | ||||
|
Добавлено через 3 минуты EEPROM Data memory - это одно. А FLASH/EEPROM Program memory - это физически другое. Добавлено через 9 минут Текст превращает в код транслятор. В что-то типа :100080007A346F291A29232934291A291A291A2 975 :100090001A295E2889008316081483120808890 A21 :1000A0000800682947291A295D281A290800080 02C :1000B0001A293C2919299E036C30F23EC83E890 05A :1000C00008214B209E008D001F3084004B20800 0B3 да и то это опять таки текстовое представление кода (Intel HEX format), потому-что сам код в сообщение не вставить. Но в этом текстовом-то представлении код хорошо виден.
0
|
||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 01.09.2015, 16:42 | |
|
хочу уточнить - вы хотите кусок кода закинуть в EEPROM и запустить его оттуда, без копирования в область, доступную для выполнения программ? Если архитектура МК позволяет выполнять код из EEPROM, то обычно в файле .asm перед областью добавляется тип памяти, которую надо использовать. Например, ".eeprom", ".code", ".text". В зависимости от компилятора (и архитектуры) используются разные обозначения, посмотрите в хелпе на компилятор. Есть вы не можете скомпилировать код в определенную область, то в 99% случаев это обозначает, что вы его оттуда и не выполните.
Если же вы планируете использовать эти куски кода в качестве дальнейшего их копирования во FLASH, тогда можно скомпилить исходник и вырезать кусок данных из HEX'а, а затем уже воткнуть их в файл для EEPROM с нужным оффсетом. ЗЫ: возможно, я неточно понял суть вопроса.
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 01.09.2015, 16:43 | |
|
Да там поток сознания, а не вопрос. В 8051 архитектуре код выполняется из
памяти, доступной на чтение командой MOVC. А он говорит про EEPROM доступный по MOVX. Оттуда ни в жисть ничего не будет исполняться. Это разные адресные пространства. Как-никак Гарвард, ети ее.
0
|
|
|
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
|
||
| 01.09.2015, 21:27 | ||
|
dukvbg, Чтобы ваш код выполнялся из внешней EEPROM, вам надо вывод EA микроконтроллера посадить на землю. Но такой код как вы написали выполняться не будет. Потому что вы там дергаете сразу всеми портами. А на портах P0 и P2 подключается внешняя EEPROM. Нельзя трогать эти порты когда вы хотите работать с внешней памятью.
Залить код в EEPROM вашим программатором - можно. Добавлено через 9 минут
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 01.09.2015, 23:09 | |
|
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 02.09.2015, 08:56 | ||
Сообщение было отмечено raxp как решение
Решение
В исходном виде нет. Но к этому МК можно цеплять внешнюю память, чтобы она читалась через MOVC или через MOVX. Вот если подцепить так, чтобы читалось по MOVC, то МК может оттуда исполнять код. Он делает так - если исполнение кода идет в нижних адресах, то он исполняет код из внутреннего FLASH (я про 89C51). Если исполнение кода за адреса внутреннего FLASH вылезло, он начинает обращаться к внешней памяти MOVC для выгребания кода. Если этой памятью подцепить внешнее статическое ОЗУ (например 62C16), чтобы оно было доступно сразу и по MOVC и по MOVX, то по MOVX можно будет туда скопировать код, а потом прыгнуть на этот код (прыжок будет в пространстве MOVC) и вот этот код пошел из статического ОЗУ выполняться.
Добавлено через 5 минут И можно ли исполнить код из того встроенного EEPROM, про которое писал ТС и к которому обращение по MOVX A,@DPTR ?
1
|
||
|
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
|
|||
| 02.09.2015, 12:38 | |||
|
Добавлено через 9 минут
0
|
|||
|
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 4
|
||
| 03.09.2015, 09:21 [ТС] | ||
|
Ладно давайте абстрогируемся вообще от конкретного МК. Вы бы не моглинаписать пример, как будет выглядеть код исходя из этой задачи "DPTR=adress, ACC=Data, Exec: MOVX @DPTR,A" при учете что данные, это тот самый код который я указал в самом первом посте
0
|
||
|
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 4
|
||
| 03.09.2015, 11:26 [ТС] | ||
|
0
|
||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||
| 03.09.2015, 13:05 | ||||
|
0
|
||||
|
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
|
|||||||
| 03.09.2015, 13:08 | |||||||
Сообщение было отмечено dukvbg как решение
РешениеЛадно, не буду усложнять, напишу как бы для абстрактного.
Еще не сделал проверку EEBusy, но это надеюсь допишете. )
0
|
|||||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 03.09.2015, 13:26 | ||
|
Добавлено через 9 минут ------------------------------------------------------------------------ Вот в этой PDF-ке http://www.atmel.com/images/doc0265.pdf на 12-й странице есть External Program Memory Read Cycle и External Data Memory Read Cycle А на 13-й странице External Data Memory Write Cycle При выгребании кода для исполнения и при исполнении MOVC будет первый цикл. А при исполнении MOVX второй или третий цикл. Итого, если память доступна только по MOVX, исполнить код из нее нельзя. О чем я выше и жужжал.
0
|
||
|
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
|
||
| 03.09.2015, 13:26 | ||
|
0
|
||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||
| 03.09.2015, 13:33 | |||
|
Гарвард-с ...
Добавлено через 59 секунд
0
|
|||
|
487 / 333 / 33
Регистрация: 15.08.2011
Сообщений: 1,078
|
|
| 03.09.2015, 13:38 | |
|
1
|
|
| 03.09.2015, 13:38 | |
|
Помогаю со студенческими работами здесь
17
AVRstudio4 ASM. Адресация и инициализация EEPROM. Быстрый поиск по внешней I2C EEPROM Компиляция ресурсов для внешней EEPROM СМА Siemens WS12G240OE/03, дамп внешней EEPROM СМА Ariston AVG 12 EU, Нужна прошивка внешней eeprom Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|