出于兴趣,本人使用 JZ2440V2 的开发板进行 linux 的一些开发,纯属业余爱好,文中若有错误,还请见谅。
JZ2440V2 开发板厂商提供的 U-BOOT 是很古老的 v1.1.6 。写这篇文章是,最新的版本已经是 2015.07 了。
U-BOOT 经过多年发展,已经很庞大了,S3C2440 自动加载的 4K 代码,太小了,装不下 copy_code_to_sdram 前的代码。所以 要支持从 NAND flash 等启动,就要使用 SPL ,当然你也可以直接修改代码,将 copy_code_to_sdram 之前的代码压缩到 4K 以内,不过这样做就相当于回到了很古老的 U-BOOT 。
废话不多说了,进入主题。
SPL 是个什么东西,你可以理解为一个 U-BOOT 的 bootloader ,是个 U-BOOT 的简洁版,所以不添加驱动的情况下,编译出来大小只有 1K 左右,S3C2440 自动 boot 的 4K 代码完全足够。
要使用 SPL 首先要打开 SPL ,就是在 \configs\xxxx_defconfig 文件中加入下面一行
CONFIG_SPL=y
其他的配置可以放在 \include\configs\xxxx.h 的配置文件中
前段时间再网上找到的资料中,很多都提到了 CONFIG_SPL_BUILD 这个选项,在现行版本中,千万不要加到你的配置文件中,否则会出现莫名其妙的错误,读者可以自行实验一下。其中的原因我分析是,配置 CONFIG_SPL=y 之后, CONFIG_SPL_BUILD 这个选项在编译 u-boot-spl.bin 的时候会自动配置。
这样,编译,报错,按理讲应该可以了,估计是目前对 SPL 支持还不够好。
对于这个问题的解决,将在后面的博文中介绍。