Building Kernel for a not supported device ARM cortex a57 (armv8-a)

As the title says, i am trying to build the openwrt kernel for a target which is not on the list when you use "make menuconfig".

My system is an Jetson TX1 devkit with the following specs:
CPU: ARM cortex a57 (armv8-a)
RAM: 4gb lpddr4
HDD: 16gb eMMC + 500gb sata
NET: pci-e Networkadapter + onboard gig eth and wifi

i have a running version of ubuntu with the toolchain installed on the TX1 but i am not sure if there is any compatible device i could use as a target.

i tried googling and found that there is a generic armv8 target, but i wasn't able to select it (not there).

In addition i need to add the nvidia drivers to that kernel if possible (i think it can be done on the system after flashing, but it would be nicer if it is already there)

I havn't found the appropriate resources/tutorials to do that yet, so i'd be happy if you could point me in the right direction or give me some advice :slight_smile:

No Tegra targets available in the buildroot?

There is no general aarch64 target in OpenWrt, OpenWrt is targeted at less capable systems and therefore the support of each target is limited to fewer SOCs and boards. The bigger distributions use a kernel including support for lots of different SOCs and drivers as the memory and storage requirements are of little concern for the their targets. The vanilla kernel has only one single defconfig for all supported aarch64 systems. I don't know why you want to use OpenWrt, in my opinion you may be better off using Arch or some Debian derivative. Other more embedded possibilities are buildroot and Yocto/OpenEmbedded.

Of course you could add either a Tegra target or a general aarch64 target, possibly using some parts from buildroots or Yoctos Tegra integrations. I suppose the lack of tutorials is because adding a target is not trivial, and those who do that are capable of learning from how other targets are made as well as finding required information about their target. You find targets under target/linux/<specific-target> in the OpenWrt tree. I have no knowledge of Tegra, but a quick googling found that arch/arm64/boot/dts/nvidia/tegra210-p2371-0000.dts in the kernel tree is for Jetson TX1. On the wiki at https://elinux.org/Jetson_TX1 you can find info about e.g. booting requirements. Nvidia has some downloadable documents that may be useful.

So if you feel up to it, go ahead and have fun:-)

2 Likes

Thanks for the detailed answer. I think i'll try yocto first, haven't heard of it before :slight_smile:

Well, there is nothing preventing you from adding a new target.
If upstream kernel supports it then it can be added

Just for those who want to do something similar:

There is an OpenEmbedded/Yocto Layer for openwrt

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.