分享

内核移植出现,arm-linux-nm,arm-linux-objdump can't find问题

 若渴若愚 2012-06-15

内核移植出现,arm-linux-nm,arm-linux-objdump can't find问题

http:///home.php?mod=space&uid=4087&do=blog&id=443

我在网上搜索了一些资料后,然后在自己的mini2440上面移植内核,起初我并没有做太多的修改
只是参照sc32440_defconfig进行配置,并做了时钟的修改,机器码的修改,修改编译器类型,具体步骤如下:

修改 顶层Makefile:

ARCH = arm

CROSS_COMPILE ?= arm-linux-

修改时钟:

修改arch/arm/mach-s3c2440/mach-smdk2440.c 163

s3c24xx_init_clocks(12000000);

进入内核根目录:

make s3c2410_defconfig

make menuconfig

进入Load an Alternate Configuration File

System Type选单下,s3c24XX Machine那部分,只选中

SMDK2410/A9M2410

SMDK2440

SMDK2440 with S3C2440 cpu moudle

最后make zImage

出现了arm-linux-nm,can't find

我上网查了一些资料,找到了解决办法,就是到编译器的目录下的bin文件中,加入arm-linux-nm的链接(我的编译器在/usr/local/arm/4.4.3/bin)

软链接为:arm-linux-nm -> arm-angstrom-linux-gnueabi-nm(命令为:ln -s  arm-angstrom-linux-gnueabi-nm  

arm-linux-nm 

 // 注意顺序


建立好连接后,重新编译,又出现arm-linux-objdump can't find等问题,按照上述办法建立了

arm-linux-objcopy -> arm-angstrom-linux-gnueabi-objcopy
arm-linux-objdump -> arm-angstrom-linux-gnueabi-objdump
的链接,编译后,编译成功,出现这些原因是因为有些编译器没有建立好这些链接,所以make的时候找不到这些命令

当我以为大功已成的时候,烧写的时候出现了NAND read: device 0 offset 0x60000, size 0x200000

Reading data from 0x25f800 -- 100% complete.
2097152 bytes read: OK
## Booting image at 30007fc0 ...
Bad Magic Number

以为是出现了坏块,用uboot的命令,直接下载到sramd:0x32000000中运行,还是不行,出现了另外的错误

后面发现自己犯了很白痴的错误,是因为我移植的uboot只依赖uImage,uImage和zImage不同的是,uImage是由真正的内核和一个头文件组成,所以用make uImage 编译后成功

虽然自己的这些简单的移植,出现了很多的错误,不过还是学到了很多,以后继续努力,为嵌入式而努力

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多