[PATCH v6 2/2] board: kontron: pitx-imx8m: Add Kontron pitx-imx8m board support

Heiko Thiery heiko.thiery at gmail.com
Fri Oct 22 10:19:33 CEST 2021


Hi Stefano, Hi Simon,

Am Do., 21. Okt. 2021 um 15:57 Uhr schrieb Heiko Thiery
<heiko.thiery at gmail.com>:
>
> Hi Stefano, Hi Simon,
>
>
> Am Do., 21. Okt. 2021 um 15:29 Uhr schrieb Stefano Babic <sbabic at denx.de>:
> >
> > On 21.10.21 15:17, Heiko Thiery wrote:
> > > Hi Stefano,
> > >
> > >
> > > Am Do., 21. Okt. 2021 um 13:31 Uhr schrieb Stefano Babic <sbabic at denx.de>:
> > >>
> > >> Hi Heiko,
> > >>
> > >> On 14.10.21 20:08, Heiko Thiery wrote:
> > >>> The Kontron pitx-imx8m is an NXP i.MX8MQ based board in the pITX
> > >>> form factor.
> > >>>
> > >>
> > >> There is still something using binman that does not work with CI.
> > >> Without CI, we load all firmware including signed_hdmi_imx8m.bin.
> > >>
> > >> But on CI, file is not loaded, but instead of warnings, build for this
> > >> board fails with :
> > >>
> > >> +Image 'main-section' is missing external blobs and is non-functional:
> > >> blob-ext at 1 blob-ext at 2 blob-ext at 3 blob-ext at 4
> > >> +binman: Error 1 running 'mkimage -d ./mkimage.spl.mkimage -n
> > >> spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000
> > >> ./mkimage-out.spl.mkimage': signed_hdmi_imx8m.bin: Can't open: No such
> > >> file or directory
> > >> +
> > >>
> > >> Could you take a look ?
> > >
> > > Sure. Could you point me to the right CI configuration?
> > >
> >
> > Configuration is in .gitlab-ci.yml. For thsi board, buildman is called
> > as part of aarch64 target, that is
> >
> >         buildman -o /tmp -P -E -W arm -x aarch64
> >
> > > I need to understand how the required imx-firmware files are copied to
> > > the u-boot dir. This seems to work already for e. g. the imx8mm
> > > boards. These require the lpdd* train fw files.
>
> Here we seem to hit an issue with the CI. blobs (lpddr*) are required
> for the imx8mm boards. Binman reports the missing files only as a
> warning and buildman does not care about that:
> ----
> +WARNING 'mkimage.flash.mkimage' not found, resulting binary is not-functional
> ----
>
> With the imx8mq boards switching to binman we also need an additional
> fw part (signed_hdmi_imx8m.bin). But other than the lpddr firmware as
> blob the signed_hmdi'_imx8m.bin is passed to mkimage and mkimage exits
> with an error. Thats leads to the error:
> ----
> binman: Error 1 running 'mkimage -d ./mkimage.spl.mkimage -n
> spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000
> ./mkimage-out.spl.mkimage': signed_hdmi_imx8m.bin: Can't open: No such
> file or directory
> ----
>
> Currently I do not have an idea how to handle that. Anyone else?

I thought about it a little and did a quick hack. What do you think
about dummy files being generated for buildman? I had buildman
generate the blobs needed by binman. So at least the build runs
through successfully. I don't know yet how to integrate this sensibly
into buildman or if this is useful for the maintainers at all. But
this would get rid of the warnings and errors that come from binman.


diff --git a/tools/buildman/board.py b/tools/buildman/board.py
index 447aaabea8..cf270c8b72 100644
--- a/tools/buildman/board.py
+++ b/tools/buildman/board.py
@@ -96,6 +96,28 @@ class Board:
                       self.vendor, self.soc, self.options]
         self.build_it = False

+    def create_dummy_files(self, work_dir):
+        import configparser
+        import os
+
+        settings = configparser.SafeConfigParser()
+        config_fname = '%s/.buildman/' % os.getenv('HOME')
+        if os.path.exists(config_fname):
+            settings.read(config_fname)
+
+        if self.target == "kontron_pitx_imx8m":
+
+            dummy_files = ['bl31.bin',
+                           'signed_hdmi_imx8m.bin',
+                           'lpddr4_pmu_train_1d_imem.bin',
+                           'lpddr4_pmu_train_1d_dmem.bin',
+                           'lpddr4_pmu_train_2d_imem.bin',
+                           'lpddr4_pmu_train_2d_dmem.bin'
+                          ]
+            for dummy_file in dummy_files:
+                dummy = os.path.join(work_dir, 'build', dummy_file)
+                with open(dummy, "wb") as out:
+                    out.truncate(1024)

 class Boards:
     """Manage a list of boards."""
diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py
index 48128cf673..dee7d9b0fe 100644
--- a/tools/buildman/builderthread.py
+++ b/tools/buildman/builderthread.py
@@ -475,6 +475,7 @@ class BuilderThread(threading.Thread):
         """
         brd = job.board
         work_dir = self.builder.GetThreadDir(self.thread_num)
+        brd.create_dummy_files(work_dir)
         self.toolchain = None
         if job.commits:
             # Run 'make board_defconfig' on the first commit

-- 
Heiko


More information about the U-Boot mailing list