完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
jz2440开发板
uboot2016.11 使用设备树: 在include/configs/smdk2440.h文件添加: #define CONFIG_OF_LIBFDT make之后发现: image-fdt.c:194: undefined reference to `set_working_fdt_addr’ 发现set_working_fdt_addr是在fdt.c文件里,检查发现是没有被编译,查看Makefile可知: make menuconfig 选上:Library routines --->[ ] Enable the FDT library 即可,make成功编译 但是在bootm.c文件里的do_bootm_states函数里,加上打印语句进行调试: #if IMAGE_ENABLE_OF_LIBFDT puts("IMAGE_ENABLE_OF_LIBFDTn"); #endif #if defined(CONFIG_LMB) puts("CONFIG_LMBn"); #endif #if IMAGE_ENABLE_OF_LIBFDT && defined(CONFIG_LMB) if (!ret && (states & BOOTM_STATE_FDT)) { boot_fdt_add_mem_rsv_regions(&images->lmb, images->ft_addr); ret = boot_relocate_fdt(&images->lmb, &images->ft_addr, &images->ft_len); } #endif 即发现,启动uboot时即打印CONFIG_LMB而已,IMAGE_ENABLE_OF_LIBFDT没有被打印。 说明不能进入if执行boot_relocate_fdt函数,所以 没能使用上设备树!!! 看下IMAGE_ENABLE_OF_LIBFDT的宏: #define IMAGE_ENABLE_OF_LIBFDT CONFIG_IS_ENABLED(OF_LIBFDT) 继续看下CONFIG_IS_ENABLED的宏: /* * CONFIG_IS_ENABLED(FOO) evaluates to * 1 if CONFIG_SPL_BUILD is undefined and CONFIG_FOO is set to 'y' or 'm', * 1 if CONFIG_SPL_BUILD is defined and CONFIG_SPL_FOO is set to 'y' or 'm', * 0 otherwise. */ #define CONFIG_IS_ENABLED(option) (config_enabled(CONFIG_VAL(option)) || config_enabled(CONFIG_VAL(option##_MODULE))) 看到注释,联系上下调用关系,即是CONFIG_OF_LIBFDT=y的话返回1 我 看了下.config文件,里面确实是:CONFIG_OF_LIBFDT=y啊: |
|
相关推荐
2个回答
|
|
make成功只是内核完成了,但是设备树文件需要你去修改,而linux源码中,没有针对2440配套的设备树文件,需要按照2416等去制作。uboot在启动内核时,同时要带上设备树文件。所以在2440上做工作是很多的,你可以先在4412上学习设备树。
|
|
|
|
我这里只是想让其uboot支持设备树,现在遇到的问题并没有涉及内核啊 ,,,,,,
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2160 浏览 6 评论
1968 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4523 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 15:47 , Processed in 1.971590 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号