Нет во флеше хранить нельзя. Объектный словарь содержит переменные, которые меняются (показания ацп, коэффициенты фильтров настраиваемые пользоваетелем и т.д.).
Integro да массив инициализируется:
Код
CAN_ODENTRY objDic [] =
{
/* index, subindex access_type | length, value_pointer */
{ 0x1000, 0x00, OD_EXP_RO | 4, (uint8_t *)&deviceType },
{ 0x1800, 0x02, OD_EXP_RW | 4, (uint8_t *)&transmitionType },
{ 0x1800, 0x03, OD_EXP_RW | 4, (uint8_t *)&inhibitTime },
{ SE_1_INDEX, 0x00, OD_EXP_RO | 4, (uint8_t *)&numOfSeSubIndexes },
{ SE_1_INDEX, SE_ON_SUBINDEX, OD_EXP_RW | 4, (uint8_t *)&se1Enable },
{ SE_1_INDEX, SE_GAIN_SUBINDEX, OD_EXP_RW | 4, (uint8_t *)&se1Gain },
{ SE_1_INDEX, SE_CURRENT_OPTION, OD_EXP_RW | 4, (uint8_t *)&se1CurrentOption },
{ SE_1_INDEX, SE_SAMPLING_TIME, OD_EXP_RW | 4, (uint8_t *)&se1SamplingTimeUs },
{ SE_1_INDEX, USE_IIR_SUBINDEX, OD_EXP_RW | 4, (uint8_t *)&se1UseIir },
{ SE_1_INDEX, IIR_A0, OD_EXP_RW | 4, (uint8_t *)&se1A0 },
{ SE_1_INDEX, IIR_A1, OD_EXP_RW | 4, (uint8_t *)&se1A1 },
{ SE_1_INDEX, IIR_A2, OD_EXP_RW | 4, (uint8_t *)&se1A2 },
{ SE_1_INDEX, IIR_A3, OD_EXP_RW | 4, (uint8_t *)&se1A3 },
{ SE_1_INDEX, IIR_B0, OD_EXP_RW | 4, (uint8_t *)&se1B0 },
{ SE_1_INDEX, IIR_B1, OD_EXP_RW | 4, (uint8_t *)&se1B1 },
{ SE_1_INDEX, IIR_B2, OD_EXP_RW | 4, (uint8_t *)&se1B2 },
... и так далее всего 259 элементов.
}
Потом вся эта штука помещается в другую структуру:
Код
CAN_CANOPENCFG canOpenConfigStruct =
{
1, // node_id
5, // msgobj_rx
6, // msgobj_tx
1, // isr_handled
sizeof(constObjDic)/sizeof(constObjDic[0]), // od_const_num
(CAN_ODCONSTENTRY *)constObjDic, // od_const_table
sizeof(objDic)/sizeof(objDic[0]), // od_num
(CAN_ODENTRY *)objDic, // od_table
};
Последняя структура передается железной API как параметр:
Код
ROM **rom = (ROM **)0x1fff1ff8;
...
(*rom)->pCAND->config_canopen((CAN_CANOPENCFG *)&canOpenConfigStruct);
...
Так вот эта функция вызывает крах программы при вызове, что там внутри происходит отладить возможности нет (во-первых нет отладчика, во вторых она железная, находится где-то внутри проца). Крах появляется, когда общее число элементов в структуре CAN_ODENTRY objDic [] становится больше 243.