电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

u-boot移植5--从nandflash启动

  • 资源ID:88627357       资源大小:108KB        全文页数:12页
  • 资源格式: DOC        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

u-boot移植5--从nandflash启动

Uboot移植5-支持从nand flash启动同时支持norflash和nandflash启动方法一:在时钟修改方法一条件下:修改cpu/arm920t/start.S/*#ifndef CONFIG_SKIP_RELOCATE_UBOOTrelocate:*/* relocate U-Boot to RAM */adrr0, _start/* r0 <- current position of code */ldrr1, _TEXT_BASE/* test if we run from flash or RAM */cmp r0, r1 /* don't reloc during debug */beq stack_setup/*check code position*/ldrr0,=48000000ldrr0,r0andsr0,r0,#6bnenor_boot#defineLENGTH_UBOOT 0x60000#defineNAND_CTL_BASE 0x4e000000/*offset*/#defineoNFCONF 0x00#defineoNFCONT0x04#defineoNFCMD0x08#defineoNFSTAT0x20nand_boot:movr1,#NAND_CTL_BASEldrr2,=(7<<12)|(7<<8)|(7<<4)strr2,r1,#oNFCONFldrr2,r1,#oNFCONFldrr2,=(1<<4)|(0<<1)|(1<<0)strr2,r1,#oNFCONTldrr2,r1,#oNFCONTldrr2,=(0x6)strr2,r1,#oNFSTATldrr2,r1,#oNFSTATmovr2,#0xffstrr2,r1,#oNFCMDmovr3,#0nand1:addr3,r3,#0x1cmpr3,#0xabltnand1nand2:ldrr2,r1,#oNFSTATtstr2,#0x4beqnand2ldrr2,r1,#oNFCONTorrr2,r2,#0x2strr2,r1,#oNFCONTldrsp, DW_STACK_STARTmovfp, #0ldrr0, =TEXT_BASE movr1, #0x0 movr2, #LENGTH_UBOOTblnand_read_lltstr0, #0x0 beqok_nand_read bad_nand_read:loop2: b loop2ok_nand_read:mov r0, #0ldr r1, =TEXT_BASEmov r2, #0x400go_next:ldr r3, r0, #4ldr r4, r1, #4teq r3, r4bne notmatchsubs r2, r2, #4beq stack_setupbne go_nextnotmatch:loop3:b loop3nor_boot:adrr0, _start /* r0 <- current position of code */ ldrr1, _TEXT_BASE /* test if we run from flash or RAM */ ldrr2, _armboot_startldrr3, _bss_startsubr2, r3, r2/* r2 <- size of armboot */addr2, r0, r2/* r2 <- source end address */copy_loop:ldmiar0!, r3-r10/* copy from source address r0 */stmiar1!, r3-r10/* copy to target address r1 */cmpr0, r2/* until source end addreee r2 */blecopy_loop/* Set up the stack */接着在board/mao2440下新建文件nand_boot.c,代码如下。并在makefile中添加编译项。#include <common.h>#include <linux/mtd/nand.h>#define _REGb(x) (*(volatile unsigned char *)(x)#define _REGw(x) (*(volatile unsigned short *)(x)#define _REGi(x) (*(volatile unsigned int *)(x)#define NF_BASE 0x4e000000#define NFCONF _REGi(NF_BASE + 0x0)#define NFCONT _REGi(NF_BASE + 0x4)#define NFCMD _REGb(NF_BASE + 0x8)#define NFADDR _REGb(NF_BASE + 0xc)#define NFDATA _REGb(NF_BASE + 0x10)#define NFDATA16 _REGw(NF_BASE + 0x10)#define NFSTAT _REGb(NF_BASE + 0x20)#define NFSTAT_BUSY 1#define nand_select() (NFCONT &= (1 << 1)#define nand_deselect() (NFCONT |= (1 << 1)#define nand_clear_RnB() (NFSTAT |= (1 << 2)static inline void nand_wait(void)int i; while (!(NFSTAT & NFSTAT_BUSY)for (i=0; i<10; i+); struct boot_nand_tint page_size;int block_size;int bad_block_offset;/ unsigned long size;static int is_bad_block(struct boot_nand_t * nand, unsigned long i) unsigned char data;unsigned long page_num;nand_clear_RnB();page_num = i >> 11; /* addr / 2048 */NFCMD = NAND_CMD_READ0;NFADDR = nand->bad_block_offset & 0xff;NFADDR = (nand->bad_block_offset >> 8) & 0xff;NFADDR = page_num & 0xff;NFADDR = (page_num >> 8) & 0xff;NFADDR = (page_num >> 16) & 0xff;NFCMD = NAND_CMD_READSTART;nand_wait();data = (NFDATA & 0xff);if (data != 0xff)return 1;return 0; static int nand_read_page_ll(struct boot_nand_t * nand, unsigned char *buf, unsigned long addr) unsigned short *ptr16 = (unsigned short *)buf;unsigned int i, page_num;nand_clear_RnB();NFCMD = NAND_CMD_READ0;page_num = addr >> 11; /* addr / 2048 */* Write Address */NFADDR = 0;NFADDR = 0;NFADDR = page_num & 0xff;NFADDR = (page_num >> 8) & 0xff;NFADDR = (page_num >> 16) & 0xff;NFCMD = NAND_CMD_READSTART;nand_wait();for (i = 0; i < (nand->page_size>>1); i+) *ptr16 = NFDATA16; ptr16+; return nand->page_size; static unsigned short nand_read_id() unsigned short res = 0; NFCMD = NAND_CMD_READID; NFADDR = 0; res = NFDATA; res = (res << 8) | NFDATA; return res; extern unsigned int dynpart_size; /* low level nand read function */ int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size) int i, j; unsigned short nand_id; struct boot_nand_t nand; /* chip Enable */ nand_select(); nand_clear_RnB(); for (i = 0; i < 10; i+) ; nand_id = nand_read_id(); nand.page_size = 2048; nand.block_size = 128 * 1024; nand.bad_block_offset = nand.page_size; / nand.size = 0x8000000; if(start_addr & (nand.block_size-1) | (size & (nand.block_size-1) return -1; /* invalid alignment */ for (i=start_addr; i < (st

注意事项

本文(u-boot移植5--从nandflash启动)为本站会员(206****923)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.