使用的uboot:xilinx uboot-v2015.4
linux 内核:xilinx linux-v2015.4
问题描述:
我发现在这个版本的uboot中配置内存等信息是读取的设备树,因为原来移植uboot我直接更改include/configs/zynq-zc70x.h中的一些限制即可,比如:
#define CONFIG_SYS_SDRAM_SIZE (512 * 1024 * 1024)
这样就修改就能在启动时查看到sdram打印为512M,而这个版本修改后无效。
然后,我大概去跟了一下uboot,发现是xilinx默认一个宏CONFIG_OF_CONTROL会一直被define(不受make ***_defconfig影响),这样在代码中会去解析arch/arm/dts中对应的设备树,我修改该设备树内容后,uboot启动内容随之改变。
但问题出现在启动内核后,linux内核启动后,我通过free或cat /etc/meminfo发现内核中的内存大小是随uboot的设备树中的sdram值发生变化的,而不是读的flash中存放的设备树文件,但另外我在linux内核加载的设备树中对flash的分区等信息又能正确解析出。所以这里我就有一个问题了:uboot的设备树有部分影响到了linux的资源初始化,这个是怎么影响的呢?整个流程是如何贯穿起来的?
PS:由于只做过简单的移植,所以对很多细节的东西不清楚,希望各位不吝赐教,谢谢!另:程序在设备上运行的,家里电脑不能截图,如果为了分析有需要,我将在后面把运行结果贴上。