jonasblixt / punchboot

Punchboot
Other
87 stars 9 forks source link

build fails with a fatal error: config.h: No such file or directory #15

Open nihalpasham opened 1 year ago

nihalpasham commented 1 year ago

tried to build the imx8mevk target and ran into the following compilation error.

Output:

npashi@regionaltantrums: /mnt/shared/devspace/rust/projects/exp/punchboot$ make SHELL='sh -x' CROSS_COMPILE=aarch64-linux-gnu- BOARD=board/imx8mevk MKIMAGE=mkimage_imx8
+ which python3
+ BOARD=board/imx8mevk /bin/python3 scripts/genconfig.py
scripts/genconfig.py: [Errno 21] Is a directory: 'Kconfig'
+ mkdir -p build-imx8mevk
+ which bpak
+ git describe --abbrev=4 --dirty --always --tags
+ echo GEN build-imx8mevk/keystore.c
GEN build-imx8mevk/keystore.c
+ /usr/local/bin/bpak generate keystore --name pb pki/internal_keystore.bpak --decorate
+ aarch64-linux-gnu-gcc -c -std=c99 -Os -nostdlib -nostartfiles -ffunction-sections -fdata-sections -fno-omit-frame-pointer -DPB_VERSION="v0.10.0-dirty" -DLOGLEVEL=3 -DTIMING_REPORT=0 -fno-common -fno-builtin -ffreestanding -fno-exceptions -fstack-usage -MMD -MP -I lib/fdt/include -I lib/uuid/ -I. -I include/ -I lib/ -I include -I include/pb/libc -I board/imx8mevk/include -Wall -Wextra -Wunused-result -Wunused -Wdisabled-optimization -Wvla -Wshadow -Wno-unused-parameter -Wextra -Wmissing-format-attribute -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Waggregate-return -I include/pb/xlat_tables -I include/pb/xlat_tables/aarch64 -march=armv8-a -DAARCH64 -mstrict-align -mgeneral-regs-only -I arch/armv8a/include -I include/pb/libc/aarch64 -I plat/imx8m/include build-imx8mevk/keystore.c -o build-imx8mevk/keystore.o
+ git describe --abbrev=4 --dirty --always --tags
+ mkdir -p build-imx8mevk
+ echo CC main.c
CC main.c
+ aarch64-linux-gnu-gcc -c -std=c99 -Os -nostdlib -nostartfiles -ffunction-sections -fdata-sections -fno-omit-frame-pointer -DPB_VERSION="v0.10.0-dirty" -DLOGLEVEL=3 -DTIMING_REPORT=0 -fno-common -fno-builtin -ffreestanding -fno-exceptions -fstack-usage -MMD -MP -I lib/fdt/include -I lib/uuid/ -I. -I include/ -I lib/ -I include -I include/pb/libc -I board/imx8mevk/include -Wall -Wextra -Wunused-result -Wunused -Wdisabled-optimization -Wvla -Wshadow -Wno-unused-parameter -Wextra -Wmissing-format-attribute -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Waggregate-return -I include/pb/xlat_tables -I include/pb/xlat_tables/aarch64 -march=armv8-a -DAARCH64 -mstrict-align -mgeneral-regs-only -I arch/armv8a/include -I include/pb/libc/aarch64 -I plat/imx8m/include main.c -o build-imx8mevk/main.o
In file included from main.c:12:
include/pb/pb.h:18:10: fatal error: config.h: No such file or directory
   18 | #include <config.h>
      |          ^~~~~~~~~~
compilation terminated.
make: *** [Makefile:152: build-imx8mevk/main.o] Error 1

On another note: I've been working on a similar project - rustBoot and am looking to add support for the NXP i.MX8 chip-set. I'm hoping you could point me in the right direction w.r.t a couple of questions.

  1. I couldn't find documentation on NXP's container format. Would you happen to know where I could find details on the container-layout (i.e. which bytes mean what). Also is there a tool (of some sort) that can be used to inspect these containers.
  2. I presume ROM-code uses container (fields) to determine where to load and execute the next-stage bootloader.
jonasblixt commented 1 year ago

The missing config.h makes me wonder if you copied a configuration, try copying "configs/imx8mevk_defconfig" to ".config" in the source root. I also noticed some other things that was broken on the master branch for imx8m, iv've pushed fixes upstream.

  1. Neither have I, I suggest that you look in the 'cst' tool from nxp, which is used to create the HAB -containers. I have a minimal copy here " https://github.com/jonasblixt/nxpcst"
  2. Correct

If you haven't discovered that yet, you need a few firmware blobs for the dram controller on the imx8m. These are available for download on NXP's site. You need the lpddr4_pmutrain.*mem.bin -files

Jonas

On Tue, Jan 10, 2023 at 7:28 PM nihalpasham @.***> wrote:

tried to build the imx8mevk target and ran into the following compilation error.

Output:

@.***: /mnt/shared/devspace/rust/projects/exp/punchboot$ make SHELL='sh -x' CROSS_COMPILE=aarch64-linux-gnu- BOARD=board/imx8mevk MKIMAGE=mkimage_imx8

  • which python3
  • BOARD=board/imx8mevk /bin/python3 scripts/genconfig.py scripts/genconfig.py: [Errno 21] Is a directory: 'Kconfig'
  • mkdir -p build-imx8mevk
  • which bpak
  • git describe --abbrev=4 --dirty --always --tags
  • echo GEN build-imx8mevk/keystore.c GEN build-imx8mevk/keystore.c
  • /usr/local/bin/bpak generate keystore --name pb pki/internal_keystore.bpak --decorate
  • aarch64-linux-gnu-gcc -c -std=c99 -Os -nostdlib -nostartfiles -ffunction-sections -fdata-sections -fno-omit-frame-pointer -DPB_VERSION="v0.10.0-dirty" -DLOGLEVEL=3 -DTIMING_REPORT=0 -fno-common -fno-builtin -ffreestanding -fno-exceptions -fstack-usage -MMD -MP -I lib/fdt/include -I lib/uuid/ -I. -I include/ -I lib/ -I include -I include/pb/libc -I board/imx8mevk/include -Wall -Wextra -Wunused-result -Wunused -Wdisabled-optimization -Wvla -Wshadow -Wno-unused-parameter -Wextra -Wmissing-format-attribute -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Waggregate-return -I include/pb/xlat_tables -I include/pb/xlat_tables/aarch64 -march=armv8-a -DAARCH64 -mstrict-align -mgeneral-regs-only -I arch/armv8a/include -I include/pb/libc/aarch64 -I plat/imx8m/include build-imx8mevk/keystore.c -o build-imx8mevk/keystore.o
  • git describe --abbrev=4 --dirty --always --tags
  • mkdir -p build-imx8mevk
  • echo CC main.c CC main.c
  • aarch64-linux-gnu-gcc -c -std=c99 -Os -nostdlib -nostartfiles -ffunction-sections -fdata-sections -fno-omit-frame-pointer -DPB_VERSION="v0.10.0-dirty" -DLOGLEVEL=3 -DTIMING_REPORT=0 -fno-common -fno-builtin -ffreestanding -fno-exceptions -fstack-usage -MMD -MP -I lib/fdt/include -I lib/uuid/ -I. -I include/ -I lib/ -I include -I include/pb/libc -I board/imx8mevk/include -Wall -Wextra -Wunused-result -Wunused -Wdisabled-optimization -Wvla -Wshadow -Wno-unused-parameter -Wextra -Wmissing-format-attribute -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Waggregate-return -I include/pb/xlat_tables -I include/pb/xlat_tables/aarch64 -march=armv8-a -DAARCH64 -mstrict-align -mgeneral-regs-only -I arch/armv8a/include -I include/pb/libc/aarch64 -I plat/imx8m/include main.c -o build-imx8mevk/main.o In file included from main.c:12: include/pb/pb.h:18:10: fatal error: config.h: No such file or directory 18 | #include | ^~~~~~ compilation terminated. make: *** [Makefile:152: build-imx8mevk/main.o] Error 1

On another note: I've been working on a similar project - rustBoot https://github.com/nihalpasham/rustBoot and am looking to add support for the NXP i.MX8 chip-set. I'm hoping you could point me in the right direction w.r.t a couple of questions.

  1. I couldn't find documentation on NXP's container format. Would you happen to know where I could find details on the container-layout (i.e. which bytes mean what). Also is there a tool (of some sort) that can be used to inspect these containers.
  2. I presume ROM-code uses container (fields) to determine where to load and execute the next-stage bootloader.

— Reply to this email directly, view it on GitHub https://github.com/jonasblixt/punchboot/issues/15, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADKROFLTEGUQI6MJT35RKCLWRWS4HANCNFSM6AAAAAATXEDHBE . You are receiving this because you are subscribed to this thread.Message ID: @.***>

nihalpasham commented 1 year ago

The missing config.h makes me wonder if you copied a configuration, try copying "configs/imx8mevk_defconfig" to ".config" in the source root.

without a .config in the source root, I get a different make error.

npashi@regionaltantrums: /mnt/shared/devspace/rust/projects/exp/punchboot$ make SHELL='sh -x' CROSS_COMPILE=aarch64-linux-gnu- BOARD=board/imx8mevk MKIMAGE=mkimage_imx8
+ which python3
+ BOARD=board/imx8mevk /bin/python3 scripts/genconfig.py
scripts/genconfig.py: [Errno 21] Is a directory: 'Kconfig'
+ mkdir -p build-imx8mevk
Makefile:23: .config: No such file or directory
make: *** No rule to make target '.config'. Stop.

with the new changes pulled-in, I seem to still run into the same error.

npashi@regionaltantrums: /mnt/shared/devspace/rust/projects/exp/punchboot$ git pull
Already up to date.
npashi@regionaltantrums: /mnt/shared/devspace/rust/projects/exp/punchboot$ cp configs/imx8mevk_defconfig .config
npashi@regionaltantrums: /mnt/shared/devspace/rust/projects/exp/punchboot$ make SHELL='sh -x' CROSS_COMPILE=aarch64-linux-gnu- BOARD=board/imx8mevk MKIMAGE=mkimage_imx8
+ which python3
+ BOARD=board/imx8mevk /bin/python3 scripts/genconfig.py
scripts/genconfig.py: [Errno 21] Is a directory: 'Kconfig'
+ mkdir -p build-imx8mevk
+ which bpak
+ git describe --abbrev=4 --dirty --always --tags
+ echo GEN build-imx8mevk/keystore.c
GEN build-imx8mevk/keystore.c
+ /usr/local/bin/bpak generate keystore --name pb pki/internal_keystore.bpak --decorate
+ aarch64-linux-gnu-gcc -c -std=c99 -Os -nostdlib -nostartfiles -ffunction-sections -fdata-sections -fno-omit-frame-pointer -DPB_VERSION="v0.10.0-2-g4df9-dirty" -DLOGLEVEL=3 -DTIMING_REPORT=0 -fno-common -fno-builtin -ffreestanding -fno-exceptions -fstack-usage -MMD -MP -I lib/fdt/include -I lib/uuid/ -I. -I include/ -I lib/ -I include -I include/pb/libc -I board/imx8mevk/include -Wall -Wextra -Wunused-result -Wunused -Wdisabled-optimization -Wvla -Wshadow -Wno-unused-parameter -Wextra -Wmissing-format-attribute -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Waggregate-return -I include/pb/xlat_tables -I include/pb/xlat_tables/aarch64 -march=armv8-a -DAARCH64 -mstrict-align -mgeneral-regs-only -I arch/armv8a/include -I include/pb/libc/aarch64 -I plat/imx8m/include build-imx8mevk/keystore.c -o build-imx8mevk/keystore.o
+ git describe --abbrev=4 --dirty --always --tags
+ mkdir -p build-imx8mevk
+ echo CC main.c
CC main.c
+ aarch64-linux-gnu-gcc -c -std=c99 -Os -nostdlib -nostartfiles -ffunction-sections -fdata-sections -fno-omit-frame-pointer -DPB_VERSION="v0.10.0-2-g4df9-dirty" -DLOGLEVEL=3 -DTIMING_REPORT=0 -fno-common -fno-builtin -ffreestanding -fno-exceptions -fstack-usage -MMD -MP -I lib/fdt/include -I lib/uuid/ -I. -I include/ -I lib/ -I include -I include/pb/libc -I board/imx8mevk/include -Wall -Wextra -Wunused-result -Wunused -Wdisabled-optimization -Wvla -Wshadow -Wno-unused-parameter -Wextra -Wmissing-format-attribute -Wmissing-prototypes -Wpointer-arith -Wredundant-decls -Waggregate-return -I include/pb/xlat_tables -I include/pb/xlat_tables/aarch64 -march=armv8-a -DAARCH64 -mstrict-align -mgeneral-regs-only -I arch/armv8a/include -I include/pb/libc/aarch64 -I plat/imx8m/include main.c -o build-imx8mevk/main.o
In file included from main.c:12:
include/pb/pb.h:18:10: fatal error: config.h: No such file or directory
   18 | #include <config.h>
      |          ^~~~~~~~~~
compilation terminated.
make: *** [Makefile:152: build-imx8mevk/main.o] Error 1