uboot杂记之搬移代码操作
来源:互联网 发布:网络安全法 编辑:程序博客网 时间:2024/05/19 02:30
首先列出搬移操作的代码:
int CopyCode2Ram(unsigned long start_addr, unsigned char *buf, int size){unsigned int *pdwDest;unsigned int *pdwSrc;int i;if (bBootFrmNORFlash()){pdwDest = (unsigned int *)buf;pdwSrc = (unsigned int *)start_addr;/* 浠?NOR Flash鍚姩 */for (i = 0; i < size / 4; i++){pdwDest[i] = pdwSrc[i];}return 0;}else{/* 鍒濆鍖朜AND Flash */nand_init_ll();/* 浠?NAND Flash鍚姩 */if (NF_ReadID() == 0x76 )nand_read_ll(buf, start_addr, (size + NAND_BLOCK_MASK)&~(NAND_BLOCK_MASK));elsenand_read_ll_lp(buf, start_addr, (size + NAND_BLOCK_MASK_LP)&~(NAND_BLOCK_MASK_LP));return 0;}}对于为什么要搬移代码到sdram和如何判断是nand启动还是nor启动的方法,可以参考前面文章:
uboot第一阶段分析
下面只是分析nand启动的话,是如何对硬件进行操作的。
参考:Nandflash驱动深度分析
一、nand_init_ll分析:
void nand_init_ll(void){S3C2440_NAND * s3c2440nand = (S3C2440_NAND *)0x4e000000;#define TACLS 0#define TWRPH0 3#define TWRPH1 0/* 璁剧疆鏃跺簭 */s3c2440nand->NFCONF = (TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4);/* 浣胯兘NAND Flash鎺у埗鍣? 鍒濆鍖朎CC, 绂佹鐗囬€?*/s3c2440nand->NFCONT = (1<<4)|(1<<1)|(1<<0);/* 澶嶄綅NAND Flash */nand_reset();}
- uboot杂记之搬移代码操作
- 嵌入式学习-uboot-lesson8-代码搬移
- uboot搬移部分和重定位部分的代码分析
- TQ210学习笔记——uboot代码搬移
- uboot搬移部分和重定位部分的代码分析
- uboot杂记之时钟分析
- 代码搬移
- ARM代码搬移
- 三十一.代码搬移
- 专题9-代码搬移
- 6410代码搬移
- tin6410代码搬移
- 代码搬移不可少
- 工作之杂记--缓存操作
- PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性
- PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性
- 杂记之对位操作--掩码的使用
- Uboot代码学习实践验证之Linux下烧uboot
- 用Application.CaptureScreenshot方法截图(Javascript)
- JVM,JRE,JDK 三者之间的区别和定义
- edittext 特殊字符过滤和字符长度限制
- C#中常用的几种读取XML文件的方法
- HTML颜色代码表
- uboot杂记之搬移代码操作
- 测试端口是否开放用PIN还是telnet命令
- 键盘无法使用的情况解决 (代码 19)
- 字符编码笔记:ASCII,Unicode和UTF-8
- ubuntu 12.04 设置DNS的一种方法
- sakai源码怎样学习
- ACE_Profile_Timer用法
- WinCE 6.0中断驱动程序分析
- 在iOS开发中使用FMDB