TI中文支持网
TI专业的中文技术问题搜集分享网站

AM62A7-Q1: NFS启动时kernel,怎么编译生成Image-am62axx-evm.bin文件?

Part Number:AM62A7-Q1

1.使用setup.sh脚本建立NFS启动环境后,发现tftpboot文件夹下kernel镜像对应的是Image-am62axx-evm.bin;

2.但是我编译linux镜像是使用的下面命令:

make linux

3.在启动时,出现下面错误:

switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
Failed to load 'boot.scr'
639 bytes read in 21 ms (29.3 KiB/s)
Loaded env from uEnv.txt
Importing environment from mmc1 …
link up on port 1, speed 1000, full duplex
BOOTP broadcast 1
DHCP client bound to address 192.168.100.121 (75 ms)
link up on port 1, speed 1000, full duplex
BOOTP broadcast 1
DHCP client bound to address 192.168.100.121 (51 ms)
link up on port 1, speed 1000, full duplex
Using ethernet@8000000port@1 device
TFTP from server 192.168.103.254; our IP address is 192.168.100.121
Filename 'Image-am62axx-evm.bin'.
Load address: 0x82000000
Loading: T T T T T T T T T TRetry count exceeded; starting again
link up on port 1, speed 1000, full duplex
Using ethernet@8000000port@1 device
TFTP from server 192.168.103.254; our IP address is 192.168.100.121
Filename 'ti/k3-am62a7-sk.dtb'.
Load address: 0x88000000
Loading: T T T T T T T T T TRetry count exceeded; starting again
Working FDT set to 88000000
Bad Linux ARM64 Image magic!

4.由于k3-am62a7-sk.dtb文件是第二步命令编译出来的,但是Image-am62axx-evm.bin不是,怀疑错误原因就是这样导致的;

请问怎么把linux镜像生成Image-am62axx-evm.bin文件,用于nfs启动?

Gary Lu:

1. 编译Linux内核,以下命令:

make ARCH=arm64 CROSS_COMPILE=<your_cross_compiler_prefix> defconfig
make ARCH=arm64 CROSS_COMPILE=<your_cross_compiler_prefix> menuconfig
make ARCH=arm64 CROSS_COMPILE=<your_cross_compiler_prefix>

将`<your_cross_compiler_prefix>`替换为您的交叉编译器前缀

2. 在编译完成后,将在输出目录找到生成的`Image`文件。以下命令:

cp arch/arm64/boot/Image arch/arm64/boot/Image-am62axx-evm.bin

将复制`Image`文件并将其命名为`Image-am62axx-evm.bin`。

3.将生成的`Image-am62axx-evm.bin`文件复制到tftpboot文件夹下,NFS启动时使用。

,

qingfeng huang:

我看sdk按照根目录下,已经存在Rules.make文件,这里已经配置ARCH=aarch64

export CROSS_COMPILE=$(TI_SDK_PATH)/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/aarch64-oe-linux/aarch64-oe-linux-

是不是在根目录下执行linux编译只需要执行?make defconfigmake menuconfigmake 

,

qingfeng huang:

在SDK按照根目录下,不管是使用

make ARCH=arm64 CROSS_COMPILE=<your_cross_compiler_prefix> defconfig

还是

make defconfig

命令,都会出现下面错误:make: *** 没有规则可制作目标“defconfig”。 停止。

,

Gary Lu:

qingfeng huang 说:是不是在根目录下执行linux编译只需要执行?make defconfigmake menuconfigmake 

是的,这些命令将使用已经配置好的交叉编译器和架构信息来编译Linux内核。`make defconfig`将使用默认配置生成配置文件,然后`make menuconfig`可以用来进行进一步的配置,最后`make`命令将开始编译内核。

,

Gary Lu:

qingfeng huang 说:make: *** 没有规则可制作目标“defconfig”。 停止。

我认为您需要自己配置内核

,

qingfeng huang:

但是我直接在sdk安装目录下,执行make linux,然后把board-support\ti-linux-kernel-6.1.46+gitAUTOINC+247b2535b2-g247b2535b2\arch\arm64\boot\下编译出来的Image文件替换到sd卡启动里面的Image又是可以正常启动。

,

Gary Lu:

用`make linux`会根据当前的配置编译内核,生成`Image`。`Image`文件可以直接用于启动,方法是有效的

,

qingfeng huang:

你的意思make linux编译出来的Image文件实际上就是Image-am62axx-evm.bin文件,只是改了一个名字?

那说明我的编译方法是对的,那为啥启动时会出现下面错误呢?

Bad Linux ARM64 Image magic!

,

Gary Lu:

感谢您对TI产品的关注!为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上(英文论坛),将由资深的英文论坛工程师为您提供帮助。如果您对于英文表达有顾虑,请随时告诉我们,我们将竭力为您提供帮助。

,

qingfeng huang:

发布英文帖子自动会有工程师帮忙解答吗?

,

qingfeng huang:

英文贴链接:e2e.ti.com/…/5020306

,

Gary Lu:

您好,会的,已经有产品线工程师接贴了,请耐心等待

赞(0)
未经允许不得转载:TI中文支持网 » AM62A7-Q1: NFS启动时kernel,怎么编译生成Image-am62axx-evm.bin文件?
分享到: 更多 (0)