feat: add M95M02-only GAS and EEPROM profiles
Expose the existing registers through Modbus and service CAN using one GAS provider only in M95M02 builds. Include the EEPROM layout/driver, LOAD protection and calibration, firmware identity and shared CCS build workflow. Add transport/profile and SCI8 validation tests, documentation and the checked M95M02 firmware image.
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
#ifndef TEST_DEVICE_H
|
||||
#define TEST_DEVICE_H
|
||||
struct bits { unsigned int GPIO59, GPIO60, GPIO63; };
|
||||
struct reg { struct bits bit; };
|
||||
static struct { struct reg GPBSET, GPBCLEAR; } GpioDataRegs;
|
||||
static unsigned int __disable_interrupts(void) { return 0; }
|
||||
static void __restore_interrupts(unsigned int saved) { (void)saved; }
|
||||
static void DSP28x_usDelay(unsigned long n) { (void)n; }
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
/* No IRQ registers needed in the host test. */
|
||||
@@ -0,0 +1 @@
|
||||
/* No serial dependencies in the host test. */
|
||||
@@ -0,0 +1 @@
|
||||
/* No filter dependencies in the host test. */
|
||||
@@ -0,0 +1,4 @@
|
||||
#define READY_FREQ 1000
|
||||
#define DAC_FREQ 200
|
||||
#define LOAD_TIME 30
|
||||
extern int READY;
|
||||
@@ -0,0 +1 @@
|
||||
extern int modbus[128];
|
||||
@@ -0,0 +1,17 @@
|
||||
#define dsk_LOAD 6
|
||||
#define adr_LOA1 5
|
||||
#define adr_LOA2 6
|
||||
#define Commands modbus[127]
|
||||
#define cUMPstart (Commands & 0x80)
|
||||
#define cUMPreset (Commands & 0x40)
|
||||
extern unsigned int test_init_dac;
|
||||
#define cInitDac test_init_dac
|
||||
#define cCalibrDac (Commands & 0x200)
|
||||
#define DAC_go modbus[0x50]
|
||||
#define DAC_stop modbus[0x51]
|
||||
#define LOAD_CAN_TIMEOUT modbus[0x52]
|
||||
#define LOAD_STATUS modbus[0x7C]
|
||||
#define LOAD_ATTEMPTS modbus[0x7D]
|
||||
#define DAC_min() modbus[0x79]
|
||||
#define DAC_max() modbus[0x78]
|
||||
#define DAC_cal() modbus[0x7A]
|
||||
@@ -0,0 +1,14 @@
|
||||
extern int Desk, Mode;
|
||||
extern unsigned int test_start, test_stop, test_permission, test_tick;
|
||||
extern unsigned int test_starts, test_last_stop_tick, test_last_start_tick;
|
||||
extern int test_bad_order;
|
||||
static void clear_START_DPTB(void) { test_start = 0; }
|
||||
static void set_START_DPTB(void) {
|
||||
if (test_stop || (test_starts && test_tick-test_last_stop_tick < 1000)) test_bad_order = 1;
|
||||
test_start = 1; test_last_start_tick = test_tick; test_starts++;
|
||||
}
|
||||
static void set_STOP_DPTB(void) { test_stop = 1; test_last_stop_tick = test_tick; }
|
||||
static void clear_STOP_DPTB(void) { test_stop = 0; }
|
||||
static void clear_RES_OUT_2(void) { test_permission = 0; }
|
||||
static void set_RES_OUT_2(void) { if (!test_start || test_stop) test_bad_order = 1; test_permission = 1; }
|
||||
static void toggle_RES_OUT_1(void) {}
|
||||
@@ -0,0 +1 @@
|
||||
/* Delay provided by the device stub. */
|
||||
Reference in New Issue
Block a user