Exemplo n.º 1
0
    def testGetInt(self):
        self.assertEqual(1, fdt_util.GetInt(self.node, 'intval'))
        self.assertEqual(3, fdt_util.GetInt(self.node, 'missing', 3))

        with self.assertRaises(ValueError) as e:
            self.assertEqual(3, fdt_util.GetInt(self.node, 'intarray'))
        self.assertIn("property 'intarray' has list value: expecting a single "
                      'integer', str(e.exception))
Exemplo n.º 2
0
    def ReadNode(self):
        """Read entry information from the node

        This reads all the fields we recognise from the node, ready for use.
        """
        if 'pos' in self._node.props:
            self.Raise("Please use 'offset' instead of 'pos'")
        self.offset = fdt_util.GetInt(self._node, 'offset')
        self.size = fdt_util.GetInt(self._node, 'size')
        self.orig_offset = self.offset
        self.orig_size = self.size

        # These should not be set in input files, but are set in an FDT map,
        # which is also read by this code.
        self.image_pos = fdt_util.GetInt(self._node, 'image-pos')
        self.uncomp_size = fdt_util.GetInt(self._node, 'uncomp-size')

        self.align = fdt_util.GetInt(self._node, 'align')
        if tools.NotPowerOfTwo(self.align):
            raise ValueError("Node '%s': Alignment %s must be a power of two" %
                             (self._node.path, self.align))
        self.pad_before = fdt_util.GetInt(self._node, 'pad-before', 0)
        self.pad_after = fdt_util.GetInt(self._node, 'pad-after', 0)
        self.align_size = fdt_util.GetInt(self._node, 'align-size')
        if tools.NotPowerOfTwo(self.align_size):
            self.Raise("Alignment size %s must be a power of two" %
                       self.align_size)
        self.align_end = fdt_util.GetInt(self._node, 'align-end')
        self.offset_unset = fdt_util.GetBool(self._node, 'offset-unset')
        self.expand_size = fdt_util.GetBool(self._node, 'expand-size')
Exemplo n.º 3
0
 def _ReadNode(self):
     """Read properties from the image node"""
     self._size = fdt_util.GetInt(self._node, 'size')
     filename = fdt_util.GetString(self._node, 'filename')
     if filename:
         self._filename = filename
     self._section = bsection.Section('main-section', self._node)
Exemplo n.º 4
0
 def _ReadNode(self):
     """Read properties from the section node"""
     self._size = fdt_util.GetInt(self._node, 'size')
     self._align_size = fdt_util.GetInt(self._node, 'align-size')
     if tools.NotPowerOfTwo(self._align_size):
         self._Raise("Alignment size %s must be a power of two" %
                     self._align_size)
     self._pad_before = fdt_util.GetInt(self._node, 'pad-before', 0)
     self._pad_after = fdt_util.GetInt(self._node, 'pad-after', 0)
     self._pad_byte = fdt_util.GetInt(self._node, 'pad-byte', 0)
     self._sort = fdt_util.GetBool(self._node, 'sort-by-offset')
     self._end_4gb = fdt_util.GetBool(self._node, 'end-at-4gb')
     if self._end_4gb and not self._size:
         self._Raise("Section size must be provided when using end-at-4gb")
     if self._end_4gb:
         self._skip_at_start = 0x100000000 - self._size
     self._name_prefix = fdt_util.GetString(self._node, 'name-prefix')
Exemplo n.º 5
0
    def testFdtNormalProp(self):
        fname = self.GetCompiled('045_prop_test.dts')
        dt = FdtScan(fname)
        node = dt.GetNode('/binman/intel-me')
        self.assertEquals('intel-me', node.name)
        val = fdt_util.GetString(node, 'filename')
        self.assertEquals(str, type(val))
        self.assertEquals('me.bin', val)

        prop = node.props['intval']
        self.assertEquals(fdt.TYPE_INT, prop.type)
        self.assertEquals(3, fdt_util.GetInt(node, 'intval'))

        prop = node.props['intarray']
        self.assertEquals(fdt.TYPE_INT, prop.type)
        self.assertEquals(list, type(prop.value))
        self.assertEquals(2, len(prop.value))
        self.assertEquals([5, 6],
                          [fdt_util.fdt32_to_cpu(val) for val in prop.value])

        prop = node.props['byteval']
        self.assertEquals(fdt.TYPE_BYTE, prop.type)
        self.assertEquals(chr(8), prop.value)

        prop = node.props['bytearray']
        self.assertEquals(fdt.TYPE_BYTE, prop.type)
        self.assertEquals(list, type(prop.value))
        self.assertEquals(str, type(prop.value[0]))
        self.assertEquals(3, len(prop.value))
        self.assertEquals([chr(1), '#', '4'], prop.value)

        prop = node.props['longbytearray']
        self.assertEquals(fdt.TYPE_INT, prop.type)
        self.assertEquals(0x090a0b0c, fdt_util.GetInt(node, 'longbytearray'))

        prop = node.props['stringval']
        self.assertEquals(fdt.TYPE_STRING, prop.type)
        self.assertEquals('message2', fdt_util.GetString(node, 'stringval'))

        prop = node.props['stringarray']
        self.assertEquals(fdt.TYPE_STRING, prop.type)
        self.assertEquals(list, type(prop.value))
        self.assertEquals(3, len(prop.value))
        self.assertEquals(['another', 'multi-word', 'message'], prop.value)
Exemplo n.º 6
0
 def _ReadNode(self):
     """Read properties from the image node"""
     self._pad_byte = fdt_util.GetInt(self._node, 'pad-byte', 0)
     self._sort = fdt_util.GetBool(self._node, 'sort-by-offset')
     self._end_4gb = fdt_util.GetBool(self._node, 'end-at-4gb')
     self._skip_at_start = fdt_util.GetInt(self._node, 'skip-at-start')
     if self._end_4gb:
         if not self.size:
             self.Raise(
                 "Section size must be provided when using end-at-4gb")
         if self._skip_at_start is not None:
             self.Raise("Provide either 'end-at-4gb' or 'skip-at-start'")
         else:
             self._skip_at_start = 0x100000000 - self.size
     else:
         if self._skip_at_start is None:
             self._skip_at_start = 0
     self._name_prefix = fdt_util.GetString(self._node, 'name-prefix')
     filename = fdt_util.GetString(self._node, 'filename')
     if filename:
         self._filename = filename
Exemplo n.º 7
0
 def _ReadSubnodes(self):
     """Read the subnodes to find out what should go in this IFWI"""
     for node in self._node.subnodes:
         entry = Entry.Create(self.section, node)
         entry._cbfs_name = fdt_util.GetString(node, 'cbfs-name', entry.name)
         entry._type = fdt_util.GetString(node, 'cbfs-type')
         compress = fdt_util.GetString(node, 'cbfs-compress', 'none')
         entry._cbfs_offset = fdt_util.GetInt(node, 'cbfs-offset')
         entry._cbfs_compress = cbfs_util.find_compress(compress)
         if entry._cbfs_compress is None:
             self.Raise("Invalid compression in '%s': '%s'" %
                        (node.name, compress))
         self._cbfs_entries[entry._cbfs_name] = entry
Exemplo n.º 8
0
    def ReadNode(self):
        """Read entry information from the node

        This reads all the fields we recognise from the node, ready for use.
        """
        self.pos = fdt_util.GetInt(self._node, 'pos')
        self.size = fdt_util.GetInt(self._node, 'size')
        self.align = fdt_util.GetInt(self._node, 'align')
        if tools.NotPowerOfTwo(self.align):
            raise ValueError("Node '%s': Alignment %s must be a power of two" %
                             (self._node.path, self.align))
        self.pad_before = fdt_util.GetInt(self._node, 'pad-before', 0)
        self.pad_after = fdt_util.GetInt(self._node, 'pad-after', 0)
        self.align_size = fdt_util.GetInt(self._node, 'align-size')
        if tools.NotPowerOfTwo(self.align_size):
            raise ValueError("Node '%s': Alignment size %s must be a power "
                             "of two" % (self._node.path, self.align_size))
        self.align_end = fdt_util.GetInt(self._node, 'align-end')
        self.pos_unset = fdt_util.GetBool(self._node, 'pos-unset')