matlab_23550/Inu/Src/N12_Libs/log_to_memory.c
Razvalyaev 7e0063eee0 #3 Скомпилилось, но пока ничего не вызывается
Все основные файлы подтянуты без изменений

Изменены (только папка main_matlab):
- заглушки для ненужных функций (main_matlab.c)
- iq библиотека (IQmathLib_matlab.c)
- библиотеки DSP281x
2025-01-13 11:09:58 +03:00

485 lines
12 KiB
C

/****************************************************************/
/* TMS320C32 */
/* ====== BIOS, ÊËÀÈÍ, ÊËÂÑÏ ====== */
/* ÖÍÈÈ ÑÝÒ (ñ) 1998-2001ã. */
/****************************************************************/
/* log_to_mem.c
****************************************************************
* Çàïèñü ëîãîâ â ïàìyòü *
****************************************************************/
#include "log_to_memory.h"
#include "MemoryFunctions.h"
#include "log_params.h"
#include "global_time.h"
// ïåðåìåííûå èñïîëüçóåìûå òîëüêî â ýòîì ìîäóëå
// Ïåðåìåííûå èç ï/ï logs_data(), write_to_mem è clear_mem
// Íà÷àëüíûé àäðåñ ïàìyòè äëy çàïèñè ëîãîâ (ñì. ï/ï write_to_mem)
//#pragma DATA_SECTION(count_mem, ".fast_vars1");
//static unsigned long count_mem = START_ADDRESS_LOG; //static
//#pragma DATA_SECTION(count_mem_slow, ".fast_vars1");
//static unsigned long count_mem_slow; // = START_ADDRESS_LOG_SLOW;//START_ADDRESS_LOG_SLOW; //static
//#pragma DATA_SECTION(count_mem_err, ".fast_vars1");
//static unsigned long count_mem_err; // = START_ADDRESS_ERR_LOG;//START_ADDRESS_ERR_LOG; //static
//#pragma DATA_SECTION(count_mem_init, ".fast_vars1");
//static unsigned long count_mem_init = ADDR_SIZE_ERR_LOW;
// Îáyçàòåëüíîå íà÷àëüíîå çíà÷åíèå èíà÷å ïîðyäîê çàïèñè
// íàðóøàåòñy ïðè ïåðâîì çààïîëíåíèè áóôåðà
int hb_logs_data = 0;
//int stop_log = 0;
//int stop_log_slow = 0;
//int block_size_counter_slow = 0;
//int block_size_counter_fast = 0;
//#pragma DATA_SECTION(LOAG, ".fast_vars1");
//int LOAG[12];
#pragma DATA_SECTION(logsdata, ".fast_vars1");
LOGSDATA logsdata = LOGSDATA_DEFAULT;
//int no_write = 0; // Ôëàã, ÷òîáû íå ïèñàòü (åñëè ÷òî)
//int no_write_slow = 0; // Ôëàã, ÷òîáû íå ïèñàòü (åñëè ÷òî)
//int size_fast_done = 0;
//int size_slow_done = 0;
//#pragma CODE_SECTION(clear_logpar,".fast_run");
void clear_logpar(void)
{
int i;
for(i=0;i<SIZE_LOGS_ARRAY;i++)
logsdata.logs[i] = 0;
}
// Çàïèñü äâóõ ìëàäøèõ áàéòîâ àðãóìåíòà â ïàìyòü, ãäå ëîãè ëåæàò
#pragma CODE_SECTION(write_to_mem, ".fast_run2");
void write_to_mem(int tlog, int DataM)
{
// int DataT;
if (tlog == FAST_LOG)
{
if (!log_params.size_fast_done)
{
log_params.BlockSizeErr++;
return;
}
if (log_params.no_write_fast)
return;
// if (log_params.stop_log_level_1)
// return;
if (log_params.addres_mem >= log_params.end_address_log)
log_params.addres_mem = log_params.end_address_log;
WriteMemory(log_params.addres_mem, DataM);
// Fast_log_written = 1;
// if (one_block) block_size_counter++;
// *(int *)count_mem = ((DataM & 0xFFFF) );
log_params.addres_mem++;
return;
}
if (tlog == SLOW_LOG)
{
if (!log_params.size_slow_done)
{
log_params.BlockSizeSlow++;
return;
}
if (log_params.no_write_slow)
return;
// if (logpar.stop_log_level_1)
// return;
if (log_params.addres_mem_slow >= log_params.end_address_log_slow)
log_params.addres_mem_slow = log_params.end_address_log_slow;
WriteMemory(log_params.addres_mem_slow, DataM);
// Fast_log_written = 1;
// if (one_block) block_size_counter++;
// *(int *)count_mem = ((DataM & 0xFFFF) );
log_params.addres_mem_slow++;
return;
}
// if (tlog == ALARM_SAVE_MEMORY)
// {
//
// if (!size_slow_done)
// {
// block_size_counter_slow++;
// return;
// }
//
// if (no_write_slow)
// return;
//
// if (logpar.stop_log_slow_level_1)
// return;
//
// if (count_mem_slow >= log_params.end_address_save_log_memory)
// count_mem_slow = log_params.end_address_save_log_memory;
//
// WriteMemory(count_mem_slow, DataM);
// count_mem_slow++;
//
// return;
// }
/* if (tlog==ERR_LOG)
{
if (count_mem_err >= END_ADDRESS_ERR_LOG) count_mem_err = END_ADDRESS_ERR_LOG;
WriteMemory(count_mem_err,DataM);
count_mem_err++;
}
*/
}
#pragma CODE_SECTION(test_mem_limit, ".fast_run");
void test_mem_limit(int tlog, int ciclelog)
{
if (tlog == FAST_LOG)
{
// block_size_counter = 0;
if (log_params.addres_mem >= log_params.end_address_log)
{
log_params.log_cycle_done = 1;
if (ciclelog == 1)
{
log_params.stop_log_fast = 0;
// log_params.stop_log_level_1 = 0;
log_params.addres_mem = log_params.start_address_log;
}
else
{
log_params.stop_log_fast = 1;
// log_params.stop_log_level_1 = 1;
}
}
if (log_params.addres_mem >= (log_params.end_address_log_level_1))
{
log_params.stop_log_level_1 = 1;
}
else
{
log_params.stop_log_level_1 = 0;
}
if (log_params.addres_mem >= (log_params.end_address_log_level_2))
{
log_params.stop_log_level_2 = 1;
}
else
{
log_params.stop_log_level_2 = 0;
}
return;
}
if (tlog == SLOW_LOG)
{
// block_size_counter = 0;
if (log_params.addres_mem_slow >= log_params.end_address_log_slow)
{
log_params.log_cycle_done_slow = 1;
if (ciclelog == 1)
{
log_params.stop_log_slow = 0;
/// logpar.stop_log_level_1 = 0;
log_params.addres_mem_slow= log_params.start_address_log_slow;
}
else
{
log_params.stop_log_slow = 1;
// logpar.stop_log_level_1 = 1;
}
if (log_params.addres_mem_slow >= (log_params.end_address_log_slow_level_1))
{
log_params.stop_log_slow_level_1= 1;
}
else
{
log_params.stop_log_slow_level_1 = 0;
}
if (log_params.addres_mem_slow >= (log_params.end_address_log_slow_level_2))
{
log_params.stop_log_slow_level_2 = 1;
}
else
{
log_params.stop_log_slow_level_2 = 0;
}
}
return;
}
// if (tlog == ALARM_SAVE_MEMORY)
// {
// if (ciclelog == 1)
// {
// logpar.stop_log_slow_level_1 = 0;
// }
//
// if (count_mem_slow >= (log_params.end_address_save_log_memory - LENGTH_HAZARD))
// {
// if (ciclelog == 1)
// {
// stop_log_slow = 0;
// logpar.stop_log_slow_level_1 = 0;
// count_mem_slow = log_params.start_address_save_log_memory;
// }
// else
// {
// stop_log_slow = 1;
// logpar.stop_log_slow_level_1 = 1;
// }
// }
//
// if (count_mem_slow >= (log_params.end_address_log_slow_level_2))
// {
// logpar.stop_log_slow_level_2 = 1;
// }
// else
// {
// logpar.stop_log_slow_level_2 = 0;
// }
//
// if (count_mem_slow >= (log_params.end_address_log_slow_level_3))
// {
// logpar.stop_log_slow_level_3 = 1;
// }
// else
// {
// logpar.stop_log_slow_level_3 = 0;
// }
//
// return;
// }
}
// Î÷èùåíèå ïàìyòè, ãäå ëîãè ïèøóòñÿ
void clear_mem(int tlog)
{
if (tlog == FAST_LOG)
{
for (log_params.addres_mem = log_params.start_address_log; log_params.addres_mem < log_params.end_address_log; log_params.addres_mem++)
WriteMemory(log_params.addres_mem, 0x0);
log_params.addres_mem = log_params.start_address_log;
hb_logs_data = 0;
log_params.stop_log_fast = 0;
log_params.stop_log_level_1 = 0;
log_params.stop_log_level_2 = 0;
return;
}
if (tlog == SLOW_LOG)
{
for (log_params.addres_mem_slow = log_params.start_address_log_slow; log_params.addres_mem_slow < log_params.end_address_log_slow; log_params.addres_mem_slow++)
WriteMemory(log_params.addres_mem_slow, 0x0);
log_params.addres_mem_slow = log_params.start_address_log_slow;
hb_logs_data = 0;
log_params.stop_log_slow = 0;
log_params.stop_log_slow_level_1 = 0;
log_params.stop_log_slow_level_2 = 0;
return;
}
// if (tlog == ALARM_SAVE_MEMORY)
// {
//
// for (count_mem_slow = log_params.start_address_save_log_memory; count_mem_slow < log_params.end_address_save_log_memory; count_mem_slow++)
// WriteMemory(count_mem_slow, 0x0);
//
// count_mem_slow = log_params.start_address_save_log_memory;
// hb_logs_data = 0;
// stop_log_slow = 0;
//
// logpar.stop_log_slow_level_1 = 0;
// logpar.stop_log_slow_level_2 = 0;
// logpar.stop_log_slow_level_3 = 0;
//
// return;
// }
// if (tlog == ERR_LOG)
// {
//
// for (count_mem_err = log_params.start_address_err_log; count_mem_err < log_params.end_address_err_log; count_mem_err++)
// WriteMemory(count_mem_err, 0x0);
//
// count_mem_err = log_params.start_address_err_log;
// return;
// }
// if (tlog == INIT_LOG)
// {
// for (count_mem_init = ADDR_SIZE_ERR_LOW; count_mem_init <= END_ADDR_TIME_ERR_WRITE; count_mem_init++)
// WriteMemory(count_mem_init, 0x0);
//
// count_mem_init = ADDR_SIZE_ERR_LOW;
// return;
// }
}
//Î÷èùåíèå âñåé ïàìÿòè ñîõðàíåíèÿ ëîãîâ
void clear_mem_all() {
for (log_params.addres_mem = START_ADDRESS_LOG; log_params.addres_mem < END_ADDRESS_LOGS; log_params.addres_mem++) {
WriteMemory(log_params.addres_mem, 0x0);
}
log_params.addres_mem = log_params.start_address_log;
log_params.stop_log_fast = 0;
log_params.stop_log_level_1 = 0;
log_params.stop_log_level_2 = 0;
log_params.log_cycle_done = 0;
hb_logs_data = 0;
log_params.addres_mem_slow = log_params.start_address_log_slow;
log_params.stop_log_slow = 0;
log_params.stop_log_slow_level_1 = 0;
log_params.stop_log_slow_level_2 = 0;
}
// Âûñòàâëåíèå ïîçèöèè ëîãîâ â íà÷àëî
void set_start_mem(int tlog)
{
if (tlog == FAST_LOG)
{
log_params.addres_mem = log_params.start_address_log;
log_params.log_cycle_done = 0;
hb_logs_data = 0;
log_params.stop_log_fast = 0;
log_params.stop_log_level_1 = 0;
log_params.stop_log_level_2 = 0;
}
if (tlog == SLOW_LOG)
{
log_params.addres_mem_slow = log_params.start_address_log_slow;
log_params.log_cycle_done = 0;
hb_logs_data = 0;
log_params.stop_log_slow = 0;
log_params.stop_log_slow_level_1 = 0;
log_params.stop_log_slow_level_2 = 0;
}
// if (tlog == ALARM_SAVE_MEMORY)
// {
//
// count_mem_slow = log_params.start_address_save_log_memory;
// hb_logs_data = 0;
// stop_log_slow = 0;
//
// logpar.stop_log_slow_level_1 = 0;
// logpar.stop_log_slow_level_2 = 0;
// logpar.stop_log_slow_level_3 = 0;
// }
// if (tlog == ERR_LOG)
// {
//
// count_mem_err = log_params.start_address_err_log;
// hb_logs_data = 0;
// stop_log_slow = 0;
//
// logpar.stop_log_slow_level_1 = 0;
// logpar.stop_log_slow_level_2 = 0;
// logpar.stop_log_slow_level_3 = 0;
// }
// if (tlog == INIT_LOG)
// {
// count_mem_init = ADDR_SIZE_ERR_LOW;
// }
}
#pragma CODE_SECTION(getFastLogs, ".fast_run2");
void getFastLogs(int cicleLog)
{
int i_log;
if (log_params.size_fast_done)
test_mem_limit(FAST_LOG, cicleLog);
for (i_log=0;i_log<logsdata.block_size_fast;i_log++)
write_to_mem(FAST_LOG, (int) logsdata.logs[i_log]);
log_params.size_fast_done = 1;
}
#pragma CODE_SECTION(getSlowLogs, ".fast_run2");
void getSlowLogs(int cicleLog)
{
int i_log;
if (log_params.size_slow_done)
test_mem_limit(SLOW_LOG, cicleLog);
for (i_log=0;i_log<logsdata.block_size_slow;i_log++)
write_to_mem(SLOW_LOG, (int) logsdata.logs[i_log]);
if (log_params.cur_volume_of_slow_log>0)
log_params.cur_volume_of_slow_log--;
else
log_params.cur_volume_of_slow_log = log_params.volume_of_slow_log;
log_params.size_slow_done = 1;
}
//void copyLogsToSaveArea()
//{
// unsigned long from = START_ADDRESS_LOG;
// unsigned long to = START_ADDRESS_SAVE_ON_ALARM;
//
// for (;from <= log_params.end_address_log && to < END_ADDRESS_LOGS ;++from, ++to) {
// WriteMemory(to, ReadMemory(from));
// }
//}
//void copyLogsToSaveAreaUnrolled()
//{
// unsigned long from = log_params.log_cycle_done ? log_params.addres_mem : log_params.start_address_log;
// unsigned long to = START_ADDRESS_SAVE_ON_ALARM;
// unsigned long count = log_params.end_address_log - log_params.start_address_log;
//
// for (;count-- > 0 && to < END_ADDRESS_LOGS ;++from, ++to) {
// if (from >= log_params.end_address_log) {
// from = log_params.start_address_log;
// }
// WriteMemory(to, ReadMemory(from));
// }
//}