29#include "../lib/board.h"
31#include "../devices/bitbang_uart.h"
32#include "../devices/mplabxd.h"
33#include "../lib/serial_port.h"
35#include <simavr/avr_adc.h>
36#include <simavr/avr_ioport.h>
37#include <simavr/avr_twi.h>
38#include <simavr/avr_uart.h>
39#include <simavr/sim_avr.h>
40#include <simavr/sim_elf.h>
41#include <simavr/sim_gdb.h>
42#include <simavr/sim_hex.h>
44#define MAX_UART_COUNT 4
56class bsim_simavr :
virtual public board {
64 int MInit(
const char* processor,
const char* fname,
float freq)
override;
65 void MEnd(
void)
override;
71 void MSetVCC(
float vcc)
override;
76 void MSetPin(
int pin,
unsigned char value)
override;
77 void MSetPinDOV(
int pin,
unsigned char ovalue)
override;
78 void MSetPinOAV(
int pin,
float value)
override;
79 void MSetAPin(
int pin,
float value)
override;
80 unsigned char MGetPin(
int pin)
override;
83 void MStep(
void)
override;
85 int MReset(
int flags)
override;
90 unsigned int DBGGetPC(
void)
override;
91 void DBGSetPC(
unsigned int pc)
override;
104 int GetUARTRX(
const int uart_num)
override;
105 int GetUARTTX(
const int uart_num)
override;
106 std::string GetUARTStrStatus(
const int uart_num)
override;
107 virtual void UpdateHardware(
void);
110 static void out_hook(
struct avr_irq_t* irq, uint32_t value,
void* param) {
111 picpin* p = (picpin*)param;
116 static void ddr_hook(
struct avr_irq_t* irq, uint32_t value,
void* param) {
117 picpin* p = (picpin*)param;
118 p->dir = !(value & (1 << p->pord));
122 void SerialSend(bitbang_uart_t* _bb_uart,
const unsigned char value);
128 avr_irq_t* serial_irq[MAX_UART_COUNT];
129 picpin pins[MAX_PIN_COUNT];
130 avr_irq_t* Write_stat_irq[100];
131 unsigned int serialbaud[MAX_UART_COUNT];
132 float serialexbaud[MAX_UART_COUNT];
133 void pins_reset(
void);
136 bitbang_uart_t bb_uart[MAX_UART_COUNT];
137 unsigned char* eeprom;
138 unsigned char uart_config[MAX_UART_COUNT];
139 unsigned char usart_count;
140 unsigned int UCSR_base[MAX_UART_COUNT];
143 int parse_hex(
const char* line,
int bytes);
144 unsigned char checksum(
char* str);
145 int read_ihx_avr(
const char* fname,
int leeprom);
146 int write_ihx_avr(
const char* fname);
board(void)
Called once on board creation.
Definition board.cc:34
float MGetVCC(void) override
board microcontroller get vcc
Definition bsim_simavr.cc:548
int DebugInit(int dtyppe) override
Start debug support.
Definition bsim_simavr.cc:594
unsigned int DBGGetEEPROM_Size(void) override
board microcontroller get data EEPROM memory size
Definition bsim_simavr.cc:1634
unsigned char * DBGGetCONFIG_p(void) override
board microcontroller get CONFIG memory pointer
Definition bsim_simavr.cc:1603
void MSetPin(int pin, unsigned char value) override
board microcontroller set digital pin
Definition bsim_simavr.cc:1190
float MGetFreq(void) override
board microcontroller get frequency
Definition bsim_simavr.cc:540
void MSetAPin(int pin, float value) override
board microcontroller set analog pin
Definition bsim_simavr.cc:1222
const picpin * MGetPinsValues(void) override
board microcontroller get all pins list struct
Definition bsim_simavr.cc:1395
unsigned int DBGGetRAMSize(void) override
board microcontroller get RAM memory size
Definition bsim_simavr.cc:1616
float * MGetPinOAVPtr(int pin) override
board microcontroller get pointer to digital pin average value
Definition bsim_simavr.cc:1399
void MStep(void) override
board microcontroller run one step
Definition bsim_simavr.cc:1540
unsigned char * DBGGetID_p(void) override
board microcontroller get internal IDS memory pointer
Definition bsim_simavr.cc:1607
void EndServers(void) override
board servers shutdown
Definition bsim_simavr.cc:1638
unsigned int DBGGetIDSize(void) override
board microcontroller get internal IDS memory size
Definition bsim_simavr.cc:1629
void MSetPinOAV(int pin, float value) override
board microcontroller set digital pin output average value
Definition bsim_simavr.cc:1218
unsigned int DBGGetROMSize(void) override
board microcontroller get ROM (FLASH) memory size
Definition bsim_simavr.cc:1620
int MGetArchitecture(void) override
Return board microcontroller architecture.
Definition bsim_simavr.cc:524
void RefreshStatus(void) override
Called ever 1s to refresh status.
Definition bsim_simavr.cc:1863
int MInit(const char *processor, const char *fname, float freq) override
board microcontroller init
Definition bsim_simavr.cc:283
int GetUARTRX(const int uart_num) override
Return the UART N RX pin number.
Definition bsim_simavr.cc:1642
unsigned char MGetPin(int pin) override
board microcontroller get digital pin value
Definition bsim_simavr.cc:1388
void MSetFreq(float freq) override
board microcontroller set frequency
Definition bsim_simavr.cc:533
int MGetPinCount(void) override
board microcontroller pin count
Definition bsim_simavr.cc:640
void MSetPinDOV(int pin, unsigned char ovalue) override
board microcontroller set Default Open Value (external pull)
Definition bsim_simavr.cc:1205
int MGetIOUpdated(void) override
get microcontroler status IO updated
Definition bsim_simavr.cc:1575
void MSetVCC(float vcc) override
board microcontroller set vcc
Definition bsim_simavr.cc:544
int GetUARTTX(const int uart_num) override
Return the UART N TX pin number.
Definition bsim_simavr.cc:1648
int CpuInitialized(void) override
return true if microcontroller is initialized
Definition bsim_simavr.cc:636
void MSetSerial(const char *port) override
Set serial port name to use.
Definition bsim_simavr.cc:83
unsigned int DBGGetCONFIGSize(void) override
board microcontroller get CONFIG memory size
Definition bsim_simavr.cc:1624
unsigned int DBGGetPC(void) override
board microcontroller get PC
Definition bsim_simavr.cc:1587
void DebugLoop(void) override
debug step (pooling)
Definition bsim_simavr.cc:625
int GetDefaultClock(void) override
Get board default clock in MHz.
Definition bsim_simavr.h:103
unsigned char * DBGGetRAM_p(void) override
board microcontroller get RAM memory pointer
Definition bsim_simavr.cc:1595
void MEraseFlash(void) override
board microcontroller erase flash memory (program)
Definition bsim_simavr.cc:528
int MReset(int flags) override
board microcontroller reset
Definition bsim_simavr.cc:1546
float MGetInstClockFreq(void) override
board microcontroller get cpu internal clock (in PIC frequency/4)
Definition bsim_simavr.cc:555
unsigned char * DBGGetROM_p(void) override
board microcontroller get ROM (FLASH) memory pointer
Definition bsim_simavr.cc:1599
std::string GetDebugName(void) override
Get debug interface name.
Definition bsim_simavr.cc:617
void MStepResume(void) override
board microcontroller run one or two steps to resume instruction
Definition bsim_simavr.cc:1544
int MDumpMemory(const char *fname) override
board microcontroller save non volatile memory to hex file
Definition bsim_simavr.cc:559
unsigned char * DBGGetEEPROM_p(void) override
board microcontroller get data EEPROM memory pointer
Definition bsim_simavr.cc:1612
int MGetResetPin(void) override
Get the Reset pin of microcontroller.
Definition bsim_simavr.cc:1571
void MEnd(void) override
board microcontroller end
Definition bsim_simavr.cc:472
std::string MGetPinName(int pin) override
board microcontroller pin name
Definition bsim_simavr.cc:664
void DBGSetPC(unsigned int pc) override
board microcontroller set PC
Definition bsim_simavr.cc:1591
unsigned short * DBGGetProcID_p(void) override
board microcontroller get pointer to processor ID
Definition bsim_simavr.cc:1583
void MClearIOUpdated(void) override
clear microcontroler status IO updated
Definition bsim_simavr.cc:1579
Definition bsim_simavr.h:46