DM8168 nand flash烧写与启动步骤
!先觉条件 0:确保硬件设计和使用正确!(中枪) 1:确保SD卡的boot分区有用于烧写到nand?flash的Uboot文件 2:确保EVM的SW4?的NAND?FLASH选通开关正确 3:确保NAND?FLASH?的位宽设置正确(中枪) 在设置过程中,官方文档的描述:http://processors.wiki.ti.com/index.php/TI81XX_PSP_UBOOT_User_Guide#Flashing_TI816X_U-Boot_to_NAND_using_SD_boot Ps:Flashing?TI816X?U-Boot?to?NAND?using?SD?boot Before?proceeding?with?any?of?the?commands?given?in?this?section?please?make?sure?that?NAND?is?enabled?on?the?EVM.?The?switch?for?enabling?NAND?on?TI8168?EVM?is?SW4. Copy?the?U-Boot?image?u-boot.noxip.bin?built?for?NAND?as?described?[#U-Boot_for_NAND_boot?here]?in?the?FAT?partition?on?the?SD?card.?(The?release?package?contains?a?pre-built?image?u-boot.noxip.bin?which?can?be?used?for?this?purpose) Once?the?second?stage?of?SD?boot?comes?up?use?the?following?commands?to?flash?to?NAND TI8168_EVM#?mmc?rescan?0 TI8168_EVM#?fatload?mmc?0?0x81000000?u-boot.noxip.bin TI8168_EVM#?nand?erase?0x0?0x260000 TI8168_EVM#?nand?write.i?0x81000000?0x0?0x33800 After?this?the?EVM?switch?settings?can?be?changed?to?[#NAND_boot?NAND?boot?mode]?if?boot?out?of?NAND?is?required. 官方的这最新的wiki上全部的描述就是这样,但是在实际的烧写过程中: TI8168_EVM#?nand?erase?0x0?0x1c0000命令返回的结果是 No?available?device 但是,通过nand?device命令可以看到有nand?flash设备存在 Device?0:?<NULL>,?sector?size?128?KiB 各种百度,各种手册,弄了半个上午,一无所获,一气之下,google之,在第一条结果就给出了有用的信息,原来除了wiki上的?SW4需要设置正确之外,在SW3上的CS0BW位也需要设置成16bit模式,这样才能正确的烧写,鄙视一下TI的这篇WIKI?和我大天朝的Baidu。 所以完全正确的方式步骤是: 1:拷贝你想要烧写的u-boot.noxip.bin到SD卡的boot分区 2:SW4拨到nand?flash启动的位 3:SW3的CS0BW位拨到16bit模式【左边】 4:按照wiki上的步骤烧写即可,在新版本的修改中,对ecc校验做了少许修改,所以在实际的烧写中,有的前辈给出的烧写代码中添加了 ?【设置硬件ECC校验模式为BCH8】 的设置指令
注意:u -boot,kernel,ubifs的Size须与Nand Flash每页Size(2048字节,0x800)严格对齐: ? ? 例如u-boot.noxip.bin: 210320字节,210320/2048 == 103,103x2048 = 210944 (0x33800) ? kernel,ubifs方法同上 SW3设置为SD mode[1:10]=1110100100;同时SW4 mode[1:2]=10 nand使能(16bit nand flash) SD卡启动进入Uboot命令行输入以下指令: 烧写UBoot mmc rescan 0 mw.b 0x81000000 0xFF 0x260000 ? ? ? ? ? ? //初始化内存区域,全部置1fatload mmc 0 81000000 u-boot.noxip.bin ? //从SD卡中下载相应文件到初始化内存区域 nand erase 0x0 0x260000 ? ? ? ? ? ? ? ? ? //对将要使用的nand flash内存区域进行擦除操作 nandecc hw 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ?//设置硬件ECC校验模式BCH8 nand write.i 0x81000000 0x0 0x33800 ? ??? ? ? //把初始化内存区域下载的文件写到nand flash nandecc hw 0 ? //设置硬件ECC校验模式Hamming Code 烧写内核uImage mw.b 0x81000000 0xFF 0x440000? fatload mmc 0 81000000 uImage? nand erase 0x00280000 0x00440000? nandecc hw 2 nand write 0x81000000 0x00280000 0x00299000 ? ? ?//参照所使用uImage Size大小 nandecc hw 0 烧写文件系统 mw.b 0x81000000 0xFF 0x0C820000?fatload mmc 0 81000000 ubi.img? nand erase 0x006C0000 0x0C820000? nandecc hw 2 nand write 0x81000000 0x006C0000 0x001300000 ? ? ?//参照所使用ubi.img Size大小 nandecc hw 0 关机重启,SW3设置为Nand mode[1:10]=0100100100;同时SW4 mode[1:2]=10 nand使能(16bit nand flash) Nand启动进入Uboot命令行输入以下指令设置env变量:setenv bootcmd 'nand read 81000000 280000 440000;bootm 81000000' setenv bootargs 'console=ttyO2,115200n8 noinitrd ip=off mem=256M rootwait=1 rw ubi.mtd=7,2048 rootfstype=ubifs root=ubi0:rootfs init=/init' 本文主要参照 http://blog.csdn.net/luhao806/article/details/7341439? http://blog.csdn.net/aihu_1201/article/details/8963919 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- actionscript-3 – As3 – 如何有效地清除数组?
- 使用C#中的iTextSharp将PDF旋转90度
- 正则表达式 – 匹配分隔列表中的最后一个元素?
- oracle查看表空间已分配和未分配空间的语句分享
- ruby-on-rails – Rack :: Test导致ActiveRecord
- 在没有Apple Developer帐户的情况下分发iOS应用程
- Swift - 日期选择控件(UIDatePicker)的用法
- button 需要加上type="button" 才能绑定
- Flex 学习笔记(十一) 改变Accordion的标题样式
- 如何在Flash Builder 4.5 Burrito中的ViewNaviga