本篇文章主要讨论u-boot,Linux内核以及文件系统在Flash以及SDRAM中的布局,我用的板子是华恒的爱好者学习板,基于S3C2410, 所参考的也是华恒所给的文档。
通过u-boot命令flinfo,可以看出,所用的flash是intel TE28F640J3C120,flash一共有64个块,每个块有128K大小,其中u-boot就放在最前面的块中,下面是其中的分配布局,第二个是 对应的当把内核以及文件系统搬到内存中时内存的布局。
Flash:
============================<-----0x0000_0000
| U-BOOT
============================
|
============================<-----0x0004_0000
| Linux(zImage)
============================
|
============================<-----0x0014_0000
| 文件系统 ramdisk.image.gz
============================
|
============================<-----0x0054_0000
| 文件系统 cramfs
============================
|
============================<-----0x0074_0000
| 文件系统 JFFS2
============================<-----0x0080_0000
SDRAM:
============================<-----0x3000_0000
|
============================<-----0x3000_8000
| Linux(zImage)
============================
|
============================<-----0x3080_0000
| 文件系统 ramdisk
============================<-----0x3200_0000
上面对Flash以及SDRAM的空间分配还不是很具体,只是将一些重要的地址段进行了说明,由于上面采用的Flash只有8M,SDRAM也只有32M,现在我们说说同样是Intel的TE28F128Flash芯片,该芯片数据宽度是32位,容量是32MB,地址为0x00000000~0x01ffffff,现我们来看看在这款Flash中是来如何进行空间分配的:
0x00000000~0x00040000 BootLoader(u-boot)代码
0x00040000~0x00080000 u-boot环境变量
0x00080000~0x00100000 用户程序区
0x00100000~0x00200000 Linux内核映像文件zImage
0x00200000~0x00600000 Linux Ramdisk 映像文件ramdisk.gz
0x00600000~0x01080000 用户程序/数据区
0x01080000~0x01800000 JFFS2/CRAMFS文件系统区
0x01800000~0x01ffffff 用户程序/数据区
现在是不是对我们将要做的工作很清楚了?
其实就是先把u-boot移植好,然后就用供应商提供的烧写工具把u-boot烧写到flash的前面,然后就由u-boot来接管一切,通过网络来下载 内核和文件系统(TFTP),或者把主机上的目录挂在到目标板上(NFS),这样开发和调试将非常的方便,我以前用的板子是通过JTAG下载下去的,有时 候很不稳定,一个不是技术上的错误都可能导致出错,郁闷至极。
好了,言归正传,下一篇文章将介绍u-boot的整体结构,以及启动代码(start.S中)
联系客服