Getting serial console output on new imx7d tqma7 board UART4

Ahmad Fatoum a.fatoum at pengutronix.de
Tue Aug 4 12:15:13 EDT 2020


Hello Lars,

On 8/4/20 3:07 PM, Lars Pedersen wrote:
> I just go an MCIMX7SABRE board and it now trying to start barebox from
> the external SD card, which I guess should be possible right?
> 
> I have taken barebox 2020.07.0 and copied the imx_v7_defconfig and
> deselected all boards except the "NXP i.MX7 SabreSD board"
> 
> After compilation i copy the image using:
> 
> sudo dd if=barebox-freescale-mx7-sabresd.img of=/dev/sdb bs=1024 skip=1 seek=1
> sync> 
> But still no boot screen for that either. :/
> 
> Shouldn't this work out of the box??

Works for me.

imx_v7_defconfig
OSELAS.Toolchain-2019.09.1
Image written to SD card (offset 0) and booted from.

Can you try with same toolchain? If that works, it
might be a compiler issue? What are you using?

> 
> /Lars Pedersen
> 
> On Mon, 3 Aug 2020 at 12:10, Ahmad Fatoum <a.fatoum at pengutronix.de> wrote:
>>
>> Hi,
>>
>> On 7/29/20 6:52 PM, Lars Pedersen wrote:
>>> I have spent the last couple of days trying to port our bootloader
>>> from u-boot to barebox 2020.07 but have yet to get any console output.
>>> Our product is based on tqma7d i.MX7 dual core cpu and uses UART4 for
>>> serial console and boots from internal eMMC.
>>>
>>> I created a new board inspired from "NXP i.MX7 SabreSD board" and
>>> tried to only add the basic in the first step to get a console output
>>> working. The image is built using ptxdist and the imx_v7_defconfig
>>> where the new board is selected. The image is flashed with "dd
>>> if=barebox-image of=/dev/mmcblk0 bs=1024 skip=1 seek=1 conv=fsync".
>>> The device works using u-boot 2020.07 with the same device trees but
>>> we thought it was time to try out barebox since u-boot felt a little
>>> bloated :)
>>>
>>> So can anyone be of assistance and tell me what I'm missing?
>>
>> When I looked through your patch the first time, I just looked
>> for stuff that would cause it to not boot. Some more comments
>> inline that are unrelated to your boot problems.
>>
>>>
>>> /Lars Pedersen
>>>
>>> From: Lars Pedersen <laa at kamstrup.com>
>>> Date: Tue, 28 Jul 2020 08:57:57 +0000
>>> Subject: [PATCH] Add kamstrup imx7d dev board
>>>
>>> ---
>>>  arch/arm/boards/Makefile                           |   1 +
>>>  arch/arm/boards/kamstrup-imx7d-tqma7d/Makefile     |   2 +
>>>  arch/arm/boards/kamstrup-imx7d-tqma7d/board.c      |  19 ++
>>>  .../flash-header-kamstrup-imx7d-tqma7d.imxcfg      |  79 ++++++
>>>  arch/arm/boards/kamstrup-imx7d-tqma7d/lowlevel.c   |  35 +++
>>>  arch/arm/dts/Makefile                              |   1 +
>>>  arch/arm/dts/imx7d-flex-concentrator-mfg.dts       |  11 +
>>>  arch/arm/mach-imx/Kconfig                          |   5 +
>>>  drivers/regulator/Kconfig                          |   2 +-
>>>  dts/src/arm/imx7d-flex-concentrator-mfg.dts        |  25 ++
>>>  dts/src/arm/imx7d-flex-concentrator.dts            | 313 +++++++++++++++++++++
>>>  images/Makefile.imx                                |   5 +
>>>  12 files changed, 497 insertions(+), 1 deletion(-)
>>>  create mode 100644 arch/arm/boards/kamstrup-imx7d-tqma7d/Makefile
>>>  create mode 100644 arch/arm/boards/kamstrup-imx7d-tqma7d/board.c
>>>  create mode 100644
>>> arch/arm/boards/kamstrup-imx7d-tqma7d/flash-header-kamstrup-imx7d-tqma7d.imxcfg
>>>  create mode 100644 arch/arm/boards/kamstrup-imx7d-tqma7d/lowlevel.c
>>>  create mode 100644 arch/arm/dts/imx7d-flex-concentrator-mfg.dts
>>>  create mode 100644 dts/src/arm/imx7d-flex-concentrator-mfg.dts
>>>  create mode 100644 dts/src/arm/imx7d-flex-concentrator.dts
>>>
>>> diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
>>> index e9e9163d589b..58bb4cf2adab 100644
>>> --- a/arch/arm/boards/Makefile
>>> +++ b/arch/arm/boards/Makefile
>>> @@ -64,6 +64,7 @@ obj-$(CONFIG_MACH_HIGHBANK)            += highbank/
>>>  obj-$(CONFIG_MACH_IMX21ADS)            += freescale-mx21-ads/
>>>  obj-$(CONFIG_MACH_IMX233_OLINUXINO)        += imx233-olinuxino/
>>>  obj-$(CONFIG_MACH_IMX27ADS)            += freescale-mx27-ads/
>>> +obj-$(CONFIG_MACH_KAMSTRUP_IMX7D_TQMA7D)    += kamstrup-imx7d-tqma7d/
>>>  obj-$(CONFIG_MACH_KINDLE3)            += kindle3/
>>>  obj-$(CONFIG_MACH_KONTRON_SAMX6I)        += kontron-samx6i/
>>>  obj-$(CONFIG_MACH_LENOVO_IX4_300D)        += lenovo-ix4-300d/
>>> diff --git a/arch/arm/boards/kamstrup-imx7d-tqma7d/Makefile
>>> b/arch/arm/boards/kamstrup-imx7d-tqma7d/Makefile
>>> new file mode 100644
>>> index 000000000000..01c7a259e9a5
>>> --- /dev/null
>>> +++ b/arch/arm/boards/kamstrup-imx7d-tqma7d/Makefile
>>> @@ -0,0 +1,2 @@
>>> +obj-y += board.o
>>> +lwl-y += lowlevel.o
>>> diff --git a/arch/arm/boards/kamstrup-imx7d-tqma7d/board.c
>>> b/arch/arm/boards/kamstrup-imx7d-tqma7d/board.c
>>> new file mode 100644
>>> index 000000000000..b3ffa851f3e6
>>> --- /dev/null
>>> +++ b/arch/arm/boards/kamstrup-imx7d-tqma7d/board.c
>>> @@ -0,0 +1,19 @@
>>> +// SPDX-License-Identifier: GPL-2.0-or-later
>>> +// SPDX-FileCopyrightText: 2020 Kamstrup A/S
>>> +
>>> +/* Author: Lars Pedersen <lapeddk at gmail.com> */
>>> +
>>> +#include <common.h>
>>> +#include <init.h>
>>> +#include <io.h>
>>> +#include <mach/imx7-regs.h>
>>> +#include <mfd/imx7-iomuxc-gpr.h>
>>> +
>>> +static int kamstrup_mx7_tqma7d_coredevices_init(void)
>>> +{
>>> +    if (!of_machine_is_compatible("kam,imx7d-flex-concentrator"))
>>> +        return 0;
>>> +
>>> +    return 0;
>>> +}
>>
>> Function serves no purpose. If you don't have baord code, drop it altogether.
>>
> 
> I'll do a cleanup when I have it working :D
> 
>>> +coredevice_initcall(kamstrup_mx7_tqma7d_coredevices_init);
>>> diff --git a/arch/arm/boards/kamstrup-imx7d-tqma7d/flash-header-kamstrup-imx7d-tqma7d.imxcfg
>>> b/arch/arm/boards/kamstrup-imx7d-tqma7d/flash-header-kamstrup-imx7d-tqma7d.imxcfg
>>> new file mode 100644
>>> index 000000000000..7656619c1b2e
>>> --- /dev/null
>>> +++ b/arch/arm/boards/kamstrup-imx7d-tqma7d/flash-header-kamstrup-imx7d-tqma7d.imxcfg
>>> @@ -0,0 +1,79 @@
>>> +soc imx7
>>> +loadaddr 0x80000000
>>> +dcdofs 0x400
>>
>> Called ivtofs now in barebox next branch now.
>>
> 
> Okay thanks.
> 
>>> diff --git a/arch/arm/dts/imx7d-flex-concentrator-mfg.dts
>>> b/arch/arm/dts/imx7d-flex-concentrator-mfg.dts
>>> new file mode 100644
>>> index 000000000000..746e36a70f4c
>>> --- /dev/null
>>> +++ b/arch/arm/dts/imx7d-flex-concentrator-mfg.dts
>>> @@ -0,0 +1,11 @@
>>> +/*
>>> + * The code contained herein is licensed under the GNU General Public
>>> + * License. You may obtain a copy of the GNU General Public License
>>> + * Version 2 or later at the following locations:
>>> + *
>>> + * http://www.opensource.org/licenses/gpl-license.html
>>> + * http://www.gnu.org/copyleft/gpl.html
>>> + */
>>> +
>>> +#include <arm/imx7d-flex-concentrator-mfg.dts>
>>> +
>>> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
>>> index 6dd5cb2aca15..d0a9332c7a24 100644
>>> --- a/arch/arm/mach-imx/Kconfig
>>> +++ b/arch/arm/mach-imx/Kconfig
>>> @@ -492,6 +492,11 @@ config MACH_ZII_IMX7D_DEV
>>>      select ARCH_IMX7
>>>      select ARM_USE_COMPRESSED_DTB
>>>
>>> +config MACH_KAMSTRUP_IMX7D_TQMA7D
>>> +    bool "Kamstrup TQMa7D based devices"
>>> +    select ARCH_IMX7
>>> +    select ARM_USE_COMPRESSED_DTB
>>> +
>>>  config MACH_PHYTEC_PHYCORE_IMX7
>>>      bool "Phytec phyCORE i.MX7"
>>>      select ARCH_IMX7
>>> diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
>>> index 1ce057180a01..b0bdc48399e3 100644
>>> --- a/drivers/regulator/Kconfig
>>> +++ b/drivers/regulator/Kconfig
>>> @@ -19,7 +19,7 @@ config REGULATOR_BCM283X
>>>  config REGULATOR_PFUZE
>>>      bool "Freescale PFUZE100/200/3000 regulator driver"
>>>      depends on I2C
>>> -    depends on ARCH_IMX6 || ARCH_IMX8MQ
>>> +    depends on ARCH_IMX6 || ARCH_IMX7 || ARCH_IMX8MQ
>>>
>>>  config REGULATOR_STM32_PWR
>>>      bool "STMicroelectronics STM32 PWR"
>>> diff --git a/dts/src/arm/imx7d-flex-concentrator-mfg.dts
>>> b/dts/src/arm/imx7d-flex-concentrator-mfg.dts
>>> new file mode 100644
>>> index 000000000000..789f0837058f
>>> --- /dev/null
>>> +++ b/dts/src/arm/imx7d-flex-concentrator-mfg.dts
>>
>> Perfectly fine for your patch stack in BSP, but if you want to upstream
>> it, you need to either:
>>
>> 1) upstream your device tree to Linux. dts/ is a sync with Linux and
>>    shortly after, it will be imported into barebox
>> 2) put your device tree in arch/arm/dts
>>
> The dts will upstreamed soon. Hopefully :D
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list