diff --git a/header/fsw_misc.h b/header/fsw_misc.h --- a/header/fsw_misc.h +++ b/header/fsw_misc.h @@ -129,7 +129,6 @@ void init_housekeeping_parameters( void void increment_seq_counter(unsigned short *packetSequenceControl); void getTime( unsigned char *time); unsigned long long int getTimeAsUnsignedLongLongInt( ); -void send_dumb_hk( void ); void get_temperatures( unsigned char *temperatures ); void get_v_e1_e2_f3( unsigned char *spacecraft_potential ); void get_cpu_load( unsigned char *resource_statistics ); diff --git a/sparc/sparc-rtems.cmake b/sparc/sparc-rtems.cmake --- a/sparc/sparc-rtems.cmake +++ b/sparc/sparc-rtems.cmake @@ -19,11 +19,6 @@ if(fix-b2bst) set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mfix-b2bst") endif() -#if(Coverage) -# set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage") -# set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage") -#endif() - set(CMAKE_C_LINK_EXECUTABLE " -Xlinker -Map=.map -o ") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -60,6 +60,7 @@ option(FSW_vhdl_dev "?" OFF) option(FSW_lpp_dpu_destid "Set to debug at LPP" OFF) option(FSW_debug_watchdog "Enable debug watchdog" OFF) option(FSW_debug_tch "?" OFF) +option(FSW_Instrument_Scrubbing "Enable scrubbing counter" OFF) set(SW_VERSION_N1 "3" CACHE STRING "Choose N1 FSW Version." FORCE) set(SW_VERSION_N2 "2" CACHE STRING "Choose N2 FSW Version." FORCE) @@ -106,6 +107,10 @@ add_definitions(-DSW_VERSION_N4=${SW_VER add_executable(fsw ${SOURCES}) +if(FSW_Instrument_Scrubbing) + add_definitions(-DENABLE_SCRUBBING_COUNTER) +endif() + if(Coverage) target_link_libraries(fsw gcov) SET_TARGET_PROPERTIES(fsw PROPERTIES COMPILE_FLAGS "-fprofile-arcs -ftest-coverage") diff --git a/src/fsw_misc.c b/src/fsw_misc.c --- a/src/fsw_misc.c +++ b/src/fsw_misc.c @@ -536,9 +536,18 @@ rtems_task scrubbing_task( rtems_task_ar volatile float valuef = 1.; volatile uint32_t* RAM=(uint32_t*)0x40000000; volatile uint32_t value; +#ifdef ENABLE_SCRUBBING_COUNTER + housekeeping_packet.lfr_fpga_version[BYTE_0] = 0; +#endif while(1){ i=(i+1)%(1024*1024); valuef += 10.f*(float)RAM[i]; +#ifdef ENABLE_SCRUBBING_COUNTER + if(i==0) + { + housekeeping_packet.lfr_fpga_version[BYTE_0] += 1; + } +#endif } } @@ -692,64 +701,6 @@ unsigned long long int getTimeAsUnsigned return time; } -void send_dumb_hk( void ) -{ - Packet_TM_LFR_HK_t dummy_hk_packet; - unsigned char *parameters; - unsigned int i; - rtems_id queue_id; - - queue_id = RTEMS_ID_NONE; - - dummy_hk_packet.targetLogicalAddress = CCSDS_DESTINATION_ID; - dummy_hk_packet.protocolIdentifier = CCSDS_PROTOCOLE_ID; - dummy_hk_packet.reserved = DEFAULT_RESERVED; - dummy_hk_packet.userApplication = CCSDS_USER_APP; - dummy_hk_packet.packetID[0] = (unsigned char) (APID_TM_HK >> SHIFT_1_BYTE); - dummy_hk_packet.packetID[1] = (unsigned char) (APID_TM_HK); - dummy_hk_packet.packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_STANDALONE; - dummy_hk_packet.packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; - dummy_hk_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_HK >> SHIFT_1_BYTE); - dummy_hk_packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_HK ); - dummy_hk_packet.spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; - dummy_hk_packet.serviceType = TM_TYPE_HK; - dummy_hk_packet.serviceSubType = TM_SUBTYPE_HK; - dummy_hk_packet.destinationID = TM_DESTINATION_ID_GROUND; - dummy_hk_packet.time[0] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_3_BYTES); - dummy_hk_packet.time[1] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_2_BYTES); - dummy_hk_packet.time[BYTE_2] = (unsigned char) (time_management_regs->coarse_time >> SHIFT_1_BYTE); - dummy_hk_packet.time[BYTE_3] = (unsigned char) (time_management_regs->coarse_time); - dummy_hk_packet.time[BYTE_4] = (unsigned char) (time_management_regs->fine_time >> SHIFT_1_BYTE); - dummy_hk_packet.time[BYTE_5] = (unsigned char) (time_management_regs->fine_time); - dummy_hk_packet.sid = SID_HK; - - // init status word - dummy_hk_packet.lfr_status_word[0] = INT8_ALL_F; - dummy_hk_packet.lfr_status_word[1] = INT8_ALL_F; - // init software version - dummy_hk_packet.lfr_sw_version[0] = SW_VERSION_N1; - dummy_hk_packet.lfr_sw_version[1] = SW_VERSION_N2; - dummy_hk_packet.lfr_sw_version[BYTE_2] = SW_VERSION_N3; - dummy_hk_packet.lfr_sw_version[BYTE_3] = SW_VERSION_N4; - // init fpga version - parameters = (unsigned char *) (REGS_ADDR_WAVEFORM_PICKER + APB_OFFSET_VHDL_REV); - dummy_hk_packet.lfr_fpga_version[BYTE_0] = parameters[BYTE_1]; // n1 - dummy_hk_packet.lfr_fpga_version[BYTE_1] = parameters[BYTE_2]; // n2 - dummy_hk_packet.lfr_fpga_version[BYTE_2] = parameters[BYTE_3]; // n3 - - parameters = (unsigned char *) &dummy_hk_packet.hk_lfr_cpu_load; - - for (i=0; i<(BYTE_POS_HK_REACTION_WHEELS_FREQUENCY - BYTE_POS_HK_LFR_CPU_LOAD); i++) - { - parameters[i] = INT8_ALL_F; - } - - get_message_queue_id_send( &queue_id ); - - rtems_message_queue_send( queue_id, &dummy_hk_packet, - PACKET_LENGTH_HK + CCSDS_TC_TM_PACKET_OFFSET + CCSDS_PROTOCOLE_EXTRA_BYTES); -} - void get_temperatures( unsigned char *temperatures ) { unsigned char* temp_scm_ptr;