针对DRAM的升级,修改u-boot 的参数即可。

include/configs/ok335x.h

am335x 1G nand 启动Linux qt-LMLPHP

修改PHYS_DRAM_1_SIZE 为0x40000000  这是1G的大小。

原来512M 为上面那个参数0x20000000。

针对nandflash 的升级,作了以下修改:

在u-boot 内 include/configs/ok335x.h

#define CONFIG_SYS_NAND_ECCSIZE   2048

将这个参数设置为2048 , 原来的512M的nandflash  为512 ,  原因是因为原来的29F4G08ABADA 芯片虽然说一页也是2k 但是,他分了4个子页,所以一次读写可以读写512b。

现在使用的是samsung 的K9K8G08U0E  这个1G的芯片也是一页2k , 但是和原来的芯片不同的是,这个芯片的子页也是2k ,所以他的一次读写是 2k。

所以这个参数为2048。

在kernel 中的修改:

arch/arm/mach-omap2/board-am335xevm.c

  在evm_nand_init 函数中,设置 ECC 的校验方式为:

  

pdata->ecc_opt = OMAP_ECC_BCH4_CODE_HW;

  这里面的代码跟踪是

 pdata = omap_nand_init(am335x_nand_partitions,
ARRAY_SIZE(am335x_nand_partitions), , ,
//NULL);
&am335x_nand_timings);----
-
-
-
static int __init omap_nand_init(void)
{
pr_info("%s driver initializing\n", DRIVER_NAME); return platform_driver_register(&omap_nand_driver);
} |
|
|
static struct platform_driver omap_nand_driver = {
.probe = omap_nand_probe,
.remove = omap_nand_remove,
#ifdef CONFIG_PM
.suspend = omap_nand_suspend,
.resume = omap_nand_resume,
#endif
.driver = {
.name = DRIVER_NAME,
.owner = THIS_MODULE,
},
}; //omap_nand_probe
static int __devinit omap_nand_probe(struct platform_device *pdev)
{
struct omap_nand_info *info;
struct omap_nand_platform_data *pdata;
int err;
int i, offset;
......
...... /* selsect the ecc type */
if (pdata->ecc_opt == OMAP_ECC_HAMMING_CODE_DEFAULT)
info->nand.ecc.mode = NAND_ECC_SOFT;
else {
if (pdata->ecc_opt == OMAP_ECC_BCH4_CODE_HW) { -------------在这里,设置ECC 校验的模式,还是上面那个子页大小问题。
info->nand.ecc.bytes = *;
info->nand.ecc.size = *;
} else if (pdata->ecc_opt == OMAP_ECC_BCH8_CODE_HW) {
info->nand.ecc.bytes = OMAP_BCH8_ECC_SECT_BYTES;
info->nand.ecc.size = ;
info->nand.ecc.read_page = omap_read_page_bch;
} else {
info->nand.ecc.bytes = ;
info->nand.ecc.size = ;
}
......
...... return ; out_release_mem_region:
release_mem_region(info->phys_base, NAND_IO_SIZE);
out_free_info:
kfree(info); return err;
}

文件系统的设置:

文件系统本省不用作修改,修改的是制作ubi文件系统的那个参数:

 //mkubiimg.sh

 #这里面这个 -F 必须放在最后,具体原因我也没有查清。
./mkfs.ubifs -q -r rootfs_v2 -m -e -c -o ubifs.img -F
echo mkfs.ubifs over!
./ubinize -o ubi.img -m -p 128KiB ubinize.cfg
echo ubinize over! sync cp ubi.img $DST_PATH -rf
echo make file system ok ! //ubinize.cfg
[ubifs]
mode=ubi
image=ubifs.img
vol_id=
vol_size=231MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize

到此,1G的nandflash 以及1G DRAM初步升级成功。

am335x 1G nand 启动Linux qt-LMLPHP

05-11 09:32