адрес исполнения программы 1874ВЕ7Т

Модераторы: ea, Alis, pip, gurzzza, _sva_

Ответить
addi
Сообщения: 19
Зарегистрирован: 29 сен 2021, 08:10
Предприятие: addico

адрес исполнения программы 1874ВЕ7Т

Сообщение addi »

Здравствуйте!

Подскажите пожалуйста, какой адрес загрузки программы?
Согласно примеру RunLeds не совсем понятно, сначало что-то записываеться в 2000H далее FFки, далее что-то в 2030H, далее FFки, далее что-то 2060H и далее FFки, далее уже c 2080H
Мне необходимо проверить связь с внешней флешкой,поэтому нужно чтобы на шине адреса были AA55 поэтому делаю тестовый hex файл, но файлы во вложении не работают как предполагается
Вложения
new3.hex
(56 байт) 104 скачивания
new2.hex
(56 байт) 101 скачивание
new.hex
(56 байт) 106 скачиваний
SanekV
Специалист
Сообщения: 26
Зарегистрирован: 01 ноя 2013, 09:38

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение SanekV »

Подскажите пожалуйста, какой адрес загрузки программы?
Здравствуйте!
1)Первый байт после сброса микроконтроллера, выбираемый из внешней памяти из ячейки с адресом 2018h - байт конфигурации кристалла CCB
Выполнение программы начинается с адреса – 2080h.

Векторы прерываний (см.ТО )
Например, 2000h - INT00 TOVF, адрес вектора прерывания от Таймер 1 или таймер 2
2030h - INT08, Флаги RI и TI модулей UART0 и UART1
addi
Сообщения: 19
Зарегистрирован: 29 сен 2021, 08:10
Предприятие: addico

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение addi »

Спасибо!, тогда не понятно почему Runkeds начинаеться с адреса 21B0
dav
Сообщения: 220
Зарегистрирован: 14 дек 2015, 08:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение dav »

addi писал(а): 06 июн 2023, 11:07 Спасибо!, тогда не понятно почему Runkeds начинаеться с адреса 21B0
Доброго времени суток!
В проекте RunLeds с адреса 0x21B0 располагается сама функция main(), а первый адрес, с которого микроконтроллер осуществляет выборку команд - 0x2080. Перед вызовом функции main() выполняется код инициализации переменных (присвоение первоначальных значений), констант, библиотек, стека, кучи (heap) и т.д. Это все характерно для проектов на C.
addi
Сообщения: 19
Зарегистрирован: 29 сен 2021, 08:10
Предприятие: addico

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение addi »

Спасибо за ответ!
В примере RunLEDs исходя из хекса запись в регистр CCR следующая:
:022018001F2087
Тоесть значение ССR = 1F20
И я не пойму как это возможно, ведь CCR 8-ми разрядный...
addi
Сообщения: 19
Зарегистрирован: 29 сен 2021, 08:10
Предприятие: addico

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение addi »

и не совсем понятно где с коде С-примера происходит запись в этот регистр(прагмы нет)
Также не понятно где стартап.asm и линкер-скрипт
SanekV
Специалист
Сообщения: 26
Зарегистрирован: 01 ноя 2013, 09:38

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение SanekV »

Тоесть значение ССR = 1F20
И я не пойму как это возможно, ведь CCR 8-ми разрядный...
ССR = 1Fh
dav
Сообщения: 220
Зарегистрирован: 14 дек 2015, 08:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение dav »

addi писал(а): 07 июн 2023, 01:28 и не совсем понятно где с коде С-примера происходит запись в этот регистр(прагмы нет)
Также не понятно где стартап.asm и линкер-скрипт
Если в проекте не указывается значение CCB (через #pragma CCB), то будет использовано значение по умолчанию - 0x1F.
Регистр CCR - внутренний регистр микроконтроллера, не имеющий отображения в адресном пространстве. Значение в регистр CCR записывается при первом после сброса чтении одного байта (CCB) внешней памяти по адресу 0x2018.
Отдельный стартап файл и линкер-скрипт по аналогии с микроконтроллерами арм в CodeMaster-96 не используется. Для распределения кода в памяти используются сегменты и настройка распределения памяти в опциях проекта. С сегментами можно ознакомиться во встроенной в CodeMaster-96 справке.
Просмотреть распределение памяти проекта можно в выходном Map-файле проекта.
addi
Сообщения: 19
Зарегистрирован: 29 сен 2021, 08:10
Предприятие: addico

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение addi »

Спасибо!

Поправил хекс(во вложении), но всеравно не вижу на шине 55АА
Скрин с логического анализатора во вложении
Частота 20 МГц, каналы соотвествуют разряднам шины
Вложения
osc.jpg
osc.jpg (213.05 КБ) 9724 просмотра
new4.hex
(73 байт) 106 скачиваний
dav
Сообщения: 220
Зарегистрирован: 14 дек 2015, 08:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: адрес исполнения программы 1874ВЕ7Т

Сообщение dav »

Доброго времени суток!
Пример программы на ассемблере, переключающей линии портов IOPORT1, IOPORT3, IOPORT4, а также ALE, RD, WR в бесконечном цикле. Т.е. при корректном запуске по всем выводам портов IOPORT1, IOPORT3, IOPORT4 будут происходит переключения между логическими уровнями.

Код: Выделить всё

.PMODULE TEST_PORTS
;==============================================================================
.INCLUDE 'tmpreg.inc'
;==============================================================================
;                       CCB value
;==============================================================================
?CCB_DATA       .EQU    0Eh
.PUBLIC ?CCB_DATA
;==============================================================================
;                       EEPROM code:
;==============================================================================
.RSEG MAIN_CODE,code
.public ?start
.func ?start
        LD AX,#0AAAAh
        LD BX,#05555h
_L_START:
        ST AX,[BX]
        LDB IOPORT1,AL
        LDB IOPORT2,AL
        ST BX,[AX]
        LDB IOPORT1,BL
        LDB IOPORT2,BL
        SJMP _L_START
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
.endf
.endseg
.END
Ответить

Вернуться в «Микроконтроллеры семейства MCS-96»