[PATCH v6 2/2] board: kontron: pitx-imx8m: Add Kontron pitx-imx8m board support
Stefano Babic
sbabic at denx.de
Fri Oct 22 14:37:47 CEST 2021
Hi Heiko,
On 22.10.21 10:19, Heiko Thiery wrote:
> 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 quite the same idea...
> I had buildman
> generate the blobs needed by binman. So at least the build runs
> through successfully.
But it should be checked if files are present - I guess there are people
relying on buildman to produce the functional bootloader, and a dummy
file cannot overwrite the right one if present.
> 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
>
Best regards,
Stefano
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
More information about the U-Boot
mailing list