此篇文章是本人muge0913在上篇文章的基础上继续移植的,文章仅供技术交流请勿商用,转载请注明出处:

http://blog.csdn.net/muge0913/article/details/7168315

一、在include/configs/th6410.h添加宏定义

#define CONFIG_MEMORY_UPPER_CODE /*uboot首先打印的信息*/ #define CONFIG_IDENT_STRING " for th6410" /*配置串口频率*/ #define CONFIG_UART_66 /*配置nand,使支持nand中的代码拷贝*/ #define CFG_MAX_NAND_DEVICE 1 #define CFG_NAND_BASE (0x70200010) #define NAND_MAX_CHIPS 1 #define NAND_DISABLE_CE() (NFCONT_REG |= (1 << 1)) #define NAND_ENABLE_CE() (NFCONT_REG &= ~(1 << 1)) #define NF_TRANSRnB() do { while(!(NFSTAT_REG & (1 <<0))); } while(0) /*配置串口频率*/ #define CONFIG_UART_66 /*启动显示开发板信息*/ #define CONFIG_DISPLAY_BOARDINFO /*启动显示cpu信息*/ #define CONFIG_DISPLAY_CPUINFO /*启动cpu初始化*/ #define CONFIG_ARCH_CPU_INIT /*终端提示信息*/ #define CONFIG_SYS_PROMPT "muge0913-张同浩# " /* Monitor Command Prompt */

二、添加nand flash拷贝函数(在nand_cp.c文件中),下面我们会有详细的代码分析

1、拷贝nand_cp.c文件到arch/arm/cpu/arm1176/中

2、修改链接文件

1)、arch/arm/cpu/arm1176/u-boot.lds

(为添加其他功能需要修改时,可再次修改):

2)、board/samsung/th6410/u-boot-nand.lds

(为添加其他功能需要修改时,可再次修改):

3、同时还要修改相应的makefile文件(在此不再叙述)

三、nand flash拷贝代码如下:

#include <common.h> #ifdef CONFIG_S3C64XX #include <asm/io.h> #include <linux/mtd/nand.h> #include <asm/arch/s3c6400.h> static int nandll_read_page (uchar *buf, ulong addr, int large_block) { int i; int page_size = 512; if (large_block) page_size = 2048; /*使能芯片*/ NAND_ENABLE_CE(); NFCMD_REG = NAND_CMD_READ0; /* Write Address */ NFADDR_REG = 0; if (large_block) NFADDR_REG = 0; NFADDR_REG = (addr) & 0xff; NFADDR_REG = (addr >> 8) & 0xff; NFADDR_REG = (addr >> 16) & 0xff; if (large_block) NFCMD_REG = NAND_CMD_READSTART; NF_TRANSRnB(); /* for compatibility(2460). u32 cannot be used. by scsuh */ for(i=0; i < page_size; i++) { *buf++ = NFDATA8_REG; } NAND_DISABLE_CE(); return 0; } static int nandll_read_blocks (ulong dst_addr, ulong size, int large_block) { uchar *buf = (uchar *)dst_addr; int i; uint page_shift = 9;//512 if (large_block) page_shift = 11;//2048 /* Read pages */ for (i = 0; i < (0x3c000>>page_shift); i++, buf+=(1<<page_shift)) { nandll_read_page(buf, i, large_block); } return 0; } int copy_uboot_to_ram (void) { int large_block = 0; int i; vu_char id; /*使能芯片*/ NAND_ENABLE_CE(); /*读取ID*/ NFCMD_REG = NAND_CMD_READID; NFADDR_REG = 0x00; /* 等待一会 */ for (i=0; i<200; i++); id = NFDATA8_REG; id = NFDATA8_REG; /*id>0x80则为大页*/ if (id > 0x80) large_block = 1; /*CONFIG_SYS_PHY_UBOOT_BASE拷贝地址,0x3c000为大小240K*/ return nandll_read_blocks(CONFIG_SYS_PHY_UBOOT_BASE, 0x3c000, large_block); } #endif

此篇文章是本人muge0913在上篇文章的基础上继续移植的,文章仅供技术交流请勿商用,转载请注明出处:

http://blog.csdn.net/muge0913/article/details/7168315

mini6410移植全攻略(3)--uboot移植之支持nand flansh启动(上)相关推荐

  1. mini6410移植全攻略(5)--uboot移植之支持nand flansh启动(下)

    六.首先运行的程序 在这我也进行的大量的代码修改,进行了详细的注释,希望给大家一些帮助 本文章由muge0913编写,文章仅供技术交流,转载请注明出处: http://blog.csdn.net/mu ...

  2. mini6410移植全攻略(4)--uboot移植之支持nand flansh启动(中)

    四.修改有关的信息: 本文章由muge0913编写,仅供技术交流转载请注明出处: http://blog.csdn.net/muge0913/article/details/7168325 1. 串口 ...

  3. 嵌入式Linux全攻略 ACE程序移植过程详细讲解

    2019独角兽企业重金招聘Python工程师标准>>> 1.在安装有Linux操作系统的PC上安装交叉编译器,笔者使用的是Moxa tool chain for DA66x,(其它的 ...

  4. OK6410之uboot移植(4)——uboot启动代码植及支持nand flansh启动

    参考自 http://wenku.baidu.com/view/ae78a00390c69ec3d5bb75ce.html?st=1 http://zhengxianqing1986.blog.163 ...

  5. USB WIFI网卡在S5PV210上的移植和使用最全攻略(2)

    目录 一.在自己制作的rootfs中移植网卡 1.确认自己制作的rootfs可正常工作并启动 2.需要的工具集确认 3.交叉编译iwconfig 二.移植wpa_supplicant并制作镜像 1.交 ...

  6. Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

    很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot ...

  7. 图像识别DM8127开发攻略——KERNEL的移植说明

    图像识别DM8127开发攻略--KERNEL的移植说明 接上一篇<图像识别DM8127开发攻略--UBOOT的移植说明>的步伐,DM8127开发攻略最后一篇文章是有关Kernel的裁剪移植 ...

  8. wifi软件linux版本,[转载]Wii安装运行可用WIFI的Linux系统全攻略

    Wii运行Linux的优势: 低功耗,Wii玩3D游戏的平均功耗在18W,而运行linux的功耗更低,连续运行50天才耗一度电(甚至不到).如果用Wii来下电驴.如果给wii-linux装上图形界面来 ...

  9. Lattice ddr3教程全攻略之仿真篇

    Lattice ddr3教程全攻略之仿真篇 对于这部分,首先建议安装好diamond3.1,modelsim se 10.1a这两个软件,如果想仔细分析DDR3的IP部分,可仔细阅读DDR3 SDRA ...

最新文章

  1. DWS和各异构数据库的差异对比
  2. unity3d api 中文文档_接口文档系统-showdoc安装部署
  3. node.js 学习笔记三:路由url
  4. centos7 locale 区域语言设置
  5. 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )
  6. 火狐谷歌浏览器油猴安装过程,扩展一个看付费视频脚本为例,学习通,云课堂等软件辅助学习也能做
  7. ufs3.0和ufs2.1的区别体现在哪些方面?
  8. 开发者应当熟知的 C# 序列化和反序列化
  9. 安装cifs 访问windows的共享文件
  10. Java为什么不允许覆盖静态方法?
  11. vmstat命令 查看内存、CPU占用
  12. c语言及程序设计基础 pdf,c语言程序设计基础.pdf
  13. 联想拯救者Y7000P win10+ubuntu20.04 双系统安装
  14. django 文件下载到本地
  15. MSM8937系统启动流程【转】
  16. 开发转测试? Yes or No
  17. zoj3869 Ace of Aces zoj3880 Demacia of the Ancients(水)
  18. linux 翻录cd,Linux下一个CD翻录 创CUE 压缩flac攻略
  19. 学习逆向某风控id分析
  20. ubuntu 截图工具flameshot(火焰截图)

热门文章

  1. 基于最小二乘法的磁力计椭球拟合方法
  2. adb shell提示:device unauthorized
  3. 苹果手机隐私分析数据是什么_苹果和谷歌可能是我们在隐私操作系统上的最佳选择...
  4. PAT(乙级)2019年春季考试 7-5 校庆
  5. 人工智能在教育中的应用场景
  6. 如何生成github上的动态gif图
  7. lisp画弯箭头_AutoCAD中怎么画箭头 CAD画箭头的方法
  8. GPS经纬度转化为百度地图/Google坐标及互转方案
  9. Python绘制GPS轨迹图
  10. 淘宝直通车的打法的方法与问题分析