def _analyse_overflow_stack(self): """Method to display a stack overflow.""" if self.chipdata.is_volatile(): self._display_alert( "Warning: connected to live chip -- " "The stack can be corrupted." ) self._display_alert('Stack overflow has occurred!') # Try to work out when we overflowed. STACK_OVERFLOW_PC # should be set. overflow_pc = self._get_stack_overflow_pc() try: # a SourceInfo object culprit = self.debuginfo.get_source_info(overflow_pc) self.formatter.output('\nOverflow occurred in:') self.formatter.output(cu.add_indentation(str(culprit), 4)) except InvalidPmAddressError: # overflow_pc.value was not a code address. Give up. self.formatter.output( 'STACK_OVERFLOW_PC is 0x%08x - no help there! ' % overflow_pc ) except BundleMissingError: self.formatter.output( "No source information for " "overflow PC 0x%08X. Bundle is missing." % (overflow_pc) )
def _get_overview_str(self, detailed=True): """ @brief This method returns an overview string of the available heaps. This is a helper method. @param[in] self Pointer to the current object @param[in] detailed If set to True, a detailed view is provided. """ total_heap, free_heap, min_free_heap = self.ret_get_watermarks() output_str = "" output_str += ( "%s heap total size :\n" % (self.memory_type.upper()) ) if detailed: config_str = self._get_heap_config_str(self.chipdata.processor) # add indentation for a nicer view. output_str += cu.add_indentation(config_str, 2) + "\n" else: watermark_str = "%-15s : " % "from config" watermark_str += cu.mem_size_to_string(total_heap) output_str += cu.add_indentation(watermark_str, 2) + "\n" output_str += ( "%s heap current free:\n" % (self.memory_type.upper()) ) if detailed: free_space_str = self._get_free_space() output_str += cu.add_indentation(free_space_str, 2) if free_heap != -1: watermark_str = "%-15s : " % "from watermarks" watermark_str += cu.mem_size_to_string(free_heap) else: watermark_str = "Watermarks not available for this heap!" output_str += cu.add_indentation(watermark_str, 2) + "\n" output_str += ( "%s heap minimum free:\n" % (self.memory_type.upper()) ) if min_free_heap != -1: watermark_str = "%-15s : " % "from watermarks" watermark_str += cu.mem_size_to_string(min_free_heap) else: watermark_str = "Watermarks not available for this heap!" output_str += cu.add_indentation(watermark_str, 2) + "\n" return output_str
def _get_overview_str(self, detailed=True): """Gets Overview string of the available heaps. Args: detailed (bool, optional): If set to True, a detailed view is provided. """ total_heap, free_heap, min_free_heap = self.ret_get_watermarks() output_str = "" output_str += ("%s heap total size :\n" % (self.memory_type.upper())) if detailed: config_str = self._get_heap_config_str(self.chipdata.processor) # add indentation for a nicer view. output_str += cu.add_indentation(config_str, 2) + "\n" else: watermark_str = "%-15s : " % "from config" watermark_str += cu.mem_size_to_string(total_heap) output_str += cu.add_indentation(watermark_str, 2) + "\n" output_str += ("%s heap current free:\n" % (self.memory_type.upper())) if detailed: free_space_str = self._get_free_space() output_str += cu.add_indentation(free_space_str, 2) if free_heap != -1: watermark_str = "%-15s : " % "from watermarks" watermark_str += cu.mem_size_to_string(free_heap) else: watermark_str = "Watermarks not available for this heap!" output_str += cu.add_indentation(watermark_str, 2) + "\n" output_str += ("%s heap minimum free:\n" % (self.memory_type.upper())) if min_free_heap != -1: watermark_str = "%-15s : " % "from watermarks" watermark_str += cu.mem_size_to_string(min_free_heap) else: watermark_str = "Watermarks not available for this heap!" output_str += cu.add_indentation(watermark_str, 2) + "\n" return output_str