예제 #1
0
    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)
            )
예제 #2
0
파일: Heap.py 프로젝트: LfjGitHub/Test302x
    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
예제 #3
0
    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