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:
您好,会的,已经有产品线工程师接贴了,请耐心等待