主题 : 移植u-boot-mini6410-20111018出错 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 103831
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2014-05-06
最后登录: 2014-06-03
楼主  发表于: 2014-05-27 21:02

 移植u-boot-mini6410-20111018出错

把友善之臂提供的u-boot-mini6410-20111018移植到tiny6410上,配置完成后编译出现如下问题:
cpu/s3c64xx/movi.o: In function `movi_init':
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:45: undefined reference to `hsmmc_set_gpio'
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:46: undefined reference to `hsmmc_reset'
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:48: undefined reference to `hsmmc_init'
cpu/s3c64xx/movi.o: In function `movi_write_env':
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:58: undefined reference to `movi_write'
cpu/s3c64xx/movi.o: In function `movi_read_env':
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:63: undefined reference to `movi_read'
common/libcommon.a(cmd_movi.o): In function `do_movi':
/home/richard/kernel/u-boot-mini6410/common/cmd_movi.c:69: undefined reference to `movi_read'
/home/richard/kernel/u-boot-mini6410/common/cmd_movi.c:77: undefined reference to `movi_write'
/home/richard/kernel/u-boot-mini6410/common/cmd_movi.c:79: undefined reference to `movi_write'
make: *** [u-boot] Error 1

搜索后发现在include/movi.h中将上述函数声明为外部函数,但是不知道函数定义在哪里。

如果不为tiny6410配置,而直接编译已有的mini6410就不会有问题。

求解
级别: 新手上路
UID: 103831
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2014-05-06
最后登录: 2014-06-03
1楼  发表于: 2014-05-27 22:03
正常编译时如下信息:
-Map u-boot.map -o u-boot
arm-linux-objcopy --gap-fill=0xff -O srec u-boot u-boot.srec
arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin
arm-linux-objdump -d u-boot > u-boot.dis

不正常时在
-Map u-boot.map -o u-boot
cpu/s3c64xx/movi.o: In function `movi_init':
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:46: undefined reference to `hsmmc_set_gpio'
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:47: undefined reference to `hsmmc_reset'
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:49: undefined reference to `hsmmc_init'
cpu/s3c64xx/movi.o: In function `movi_write_env':
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:59: undefined reference to `movi_write'
cpu/s3c64xx/movi.o: In function `movi_read_env':
/home/richard/kernel/u-boot-mini6410/cpu/s3c64xx/movi.c:64: undefined reference to `movi_read'
common/libcommon.a(cmd_movi.o): In function `do_movi':
/home/richard/kernel/u-boot-mini6410/common/cmd_movi.c:69: undefined reference to `movi_read'
/home/richard/kernel/u-boot-mini6410/common/cmd_movi.c:77: undefined reference to `movi_write'
/home/richard/kernel/u-boot-mini6410/common/cmd_movi.c:79: undefined reference to `movi_write'
make: *** [u-boot] Error 1

大家帮忙看看啥问题。貌似连接器不对
级别: 新手上路
UID: 103831
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2014-05-06
最后登录: 2014-06-03
2楼  发表于: 2014-05-28 12:31
找到原因了。在cpu/s3c64xx/movi.c和hs_mmc.c中都要依样画葫芦在defined(CONFIG_MINI6410)后加defined(CONFIG_TINY6410)。这样编译时就会把需要的头文件加进去