Например TDA7294

Форум РадиоКот • Просмотр темы - Как работает симулятор схем с мк
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб авг 23, 2025 19:21:53

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как работает симулятор схем с мк
СообщениеДобавлено: Ср авг 26, 2015 08:00:48 
Потрогал лапой паяльник
Аватар пользователя

Карма: 19
Рейтинг сообщений: 8
Зарегистрирован: Чт окт 31, 2013 10:54:32
Сообщений: 384
Рейтинг сообщения: 0
мяу коты. сижу пилю себе моск, как же все таки работает симулятор схем. например как протеус. интересует мысли по поводу работы с мк.

берем микроконтроллер, грузим в него прошивку и он начинает плясать. а как это сделано в симуляторе? по сути симулятор это копия железа, только программно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как работает симулятор схем с мк
СообщениеДобавлено: Ср авг 26, 2015 08:43:26 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
разбирается прошивка по байтам
вычисляется опкод и аргументы
опкод и аргументы есть аргументы функций, которые называются как асм команды мк
например чистый асм
inc a
в коде симулятора будет
inc (a);

ну и код самой функции типа а++

где-то я видел код эмулятора з80, там все просто быдло понять даже мне

_________________
тематические ответы только в форуме, в приват не пишите


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как работает симулятор схем с мк
СообщениеДобавлено: Чт авг 27, 2015 09:12:25 
Потрогал лапой паяльник
Аватар пользователя

Карма: 19
Рейтинг сообщений: 8
Зарегистрирован: Чт окт 31, 2013 10:54:32
Сообщений: 384
Рейтинг сообщения: 0
А как происходит эмуляция адресов в симуляторе?

Вот кусок дизасемблированной прошивки

Код:
Disassembly of section .text:

00000000 <__vectors>:
   0:   12 c0          rjmp   .+36        ; 0x26 <__ctors_end>
   2:   21 c0          rjmp   .+66        ; 0x46 <__bad_interrupt>
   4:   20 c0          rjmp   .+64        ; 0x46 <__bad_interrupt>
   6:   1f c0          rjmp   .+62        ; 0x46 <__bad_interrupt>
   8:   1e c0          rjmp   .+60        ; 0x46 <__bad_interrupt>
   a:   1d c0          rjmp   .+58        ; 0x46 <__bad_interrupt>
   c:   1c c0          rjmp   .+56        ; 0x46 <__bad_interrupt>
   e:   1b c0          rjmp   .+54        ; 0x46 <__bad_interrupt>
  10:   1a c0          rjmp   .+52        ; 0x46 <__bad_interrupt>
  12:   07 c1          rjmp   .+526       ; 0x222 <__vector_9>
  14:   18 c0          rjmp   .+48        ; 0x46 <__bad_interrupt>
  16:   17 c0          rjmp   .+46        ; 0x46 <__bad_interrupt>
  18:   16 c0          rjmp   .+44        ; 0x46 <__bad_interrupt>
  1a:   15 c0          rjmp   .+42        ; 0x46 <__bad_interrupt>
  1c:   14 c0          rjmp   .+40        ; 0x46 <__bad_interrupt>
  1e:   13 c0          rjmp   .+38        ; 0x46 <__bad_interrupt>
  20:   12 c0          rjmp   .+36        ; 0x46 <__bad_interrupt>
  22:   11 c0          rjmp   .+34        ; 0x46 <__bad_interrupt>
  24:   10 c0          rjmp   .+32        ; 0x46 <__bad_interrupt>

00000026 <__ctors_end>:
  26:   11 24          eor   r1, r1
  28:   1f be          out   0x3f, r1   ; 63
  2a:   cf e5          ldi   r28, 0x5F   ; 95
  2c:   d4 e0          ldi   r29, 0x04   ; 4
  2e:   de bf          out   0x3e, r29   ; 62
  30:   cd bf          out   0x3d, r28   ; 61

00000032 <__do_clear_bss>:
  32:   10 e0          ldi   r17, 0x00   ; 0
  34:   a0 e6          ldi   r26, 0x60   ; 96
  36:   b0 e0          ldi   r27, 0x00   ; 0
  38:   01 c0          rjmp   .+2         ; 0x3c <.do_clear_bss_start>


кусок прошивки
Код:
:1000000012C021C020C01FC01EC01DC01CC01BC00C
:100010001AC007C118C017C016C015C014C013C03D
:1000200012C011C010C011241FBECFE5D4E0DEBF46
:10003000CDBF10E0A0E6B0E001C01D92AB37B10724
:10004000E1F716D11CC1DCCF80990EC081E080930E
:1000500064008091790080688093790087EA91E656
:100060000197F1F700C0000081990EC082E08093F3
:1000700064008091790080648093790087EA91E63A
:100080000197F1F700C0000082990EC083E08093D1
:1000900064008091790080628093790087EA91E61C


вектора прерываний

Код:
:1000000012C021C020C01FC01EC01DC01CC01BC00C
:100010001AC007C118C017C016C015C014C013C03D
:1000200012C011C010C011241FBECFE5D4E0DEBF46


первый байт это адресное пространство, далее разблюдовка векторов прерываний.

Этот кусок

Код:
00000026 <__ctors_end>:
  26:   11 24          eor   r1, r1
  28:   1f be          out   0x3f, r1   ; 63
  2a:   cf e5          ldi   r28, 0x5F   ; 95
  2c:   d4 e0          ldi   r29, 0x04   ; 4
  2e:   de bf          out   0x3e, r29   ; 62
  30:   cd bf          out   0x3d, r28   ; 61


стартует отсюда:

:1000000012C021C020C01FC01EC01DC01CC01BC00C
:100010001AC007C118C017C016C015C014C013C03D
:1000200012C011C010C011241FBECFE5D4E0DEBF46
:10003000CDBF10E0A0E6B0E001C01D92AB37B10724
:10004000E1F716D11CC1DCCF80990EC081E080930E
:1000500064008091790080688093790087EA91E656

красным адрес, синим команды..

таки прошивка выполняется последовательно, иногда выскакивают переходы по меткам, которые скачут по адресам, вызывая команды...
становится понятней...

подтолкните на путь истинный.

берем таки эту команду 28: 1f be out 0x3f, r1 ; 63

где мне откопать 0x3f??? аа моск сломал. пните в нужном направлении.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как работает симулятор схем с мк
СообщениеДобавлено: Чт авг 27, 2015 10:20:42 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 884
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6077
Откуда: Minsk
Рейтинг сообщения: 0
alex38779 писал(а):
28: 1f be out 0x3f, r1 ; 63

где мне откопать 0x3f??? аа моск сломал. пните в нужном направлении.


Вы будете смеяться, но -- в даташите , и даже лопата не понадобится. :) Глава Register summary . Команда проста, как веник: записать содержимое R1 в SREG


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Наставник и гости: 66


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y