2011-03-20 23:06:24

学习笔记:

效果图:

参考步骤:

一,把smdk2410 # 改成apple2440 # 
1,在board/samsung/apple2440/apple2440.c中修改
 if(gpio->GSTATUS1==0x32440001)
 /* arch number of SMDK2410-Board */
 gd->bd->bi_arch_number = MACH_TYPE_APPLE2440;
 else
 gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
2,在arch/arm/include/asm/mach-types.h中修改
#define CONFIG_SYS_PROMPT "APPLE2440 # "

二,增加EN29LV160AB norflash驱动
1,修改include/configs/apple2440.h
#if 0    //注释掉下面两个类型的Nor Flash设置,因为不是我们所使用的型号
#define CONFIG_AMD_LV400     1 /* uncomment this if you
have a LV400 flash */
#define CONFIG_AMD_LV800     1 /* uncomment this if you
have a LV800 flash */
#endif
//第175行添加如下内容
#define CONFIG_EON_29LV160AB    
1        //添加TQ2440开发板Nor Flash设置
#define
PHYS_FLASH_SIZE           
0x200000 //我们开发板的Nor Flash是2M
#define CONFIG_SYS_MAX_FLASH_SECT  (35)     //根据EN29LV160AB的芯片手册描述,共35个扇区
#define
CONFIG_ENV_ADDR           
(CONFIG_SYS_FLASH_BASE + 0xF0000) //暂设置环境变量的首地址为0xF0000 //在此处放uboot参数

2,在include/flash.h添加
在181行添加
#define EON_ID_LV160AB   0x22492249

3,在board/samsung/smdk2440/flash.c中修改
#define MAIN_SECT_SIZE     0x8000  //定义为32k,主要扇区的大小
============================================================
由数据手册可知EN29LV160AB第0扇区大小为8K,第1、2为4K,第3为16K,后面31扇区为32K。前面4个扇区加起来刚好是主要扇区的大小 = 32K, 所以修改87行下如下

for (j = 0; j < flash_info[i].sector_count; j++)
{
    if (j <= 3)
   {
        /* 1st one is 8 KB */
       if (j == 0)
      {
            
flash_info[i].start[j] = flashbase + 0;
      }

/* 2nd and 3rd are both 4 KB */
      if ((j == 1) || (j == 2))
     {
          
flash_info[i].start[j] = flashbase + 0x2000 + (j - 1) * 0x1000;
     }

/* 4th 16 KB */
     if (j == 3)
    {
          
flash_info[i].start[j] = flashbase + 0x4000;
     }
 }
 else
 {
       flash_info[i].start[j] = flashbase + (j -
3) * MAIN_SECT_SIZE;
 }
}
size += flash_info[i].size;
==========================================================
修改flash_print_info,添加EN29LV160AB相关信息如下:

switch (info->flash_id & FLASH_VENDMASK) {
 case (AMD_MANUFACT & FLASH_VENDMASK):
  printf ("AMD: ");
  break;
 case (EON_MANUFACT & FLASH_VENDMASK):
  printf ("EON: ");
  break;
 default:
  printf ("Unknown Vendor ");
  break;
 }

switch (info->flash_id & FLASH_TYPEMASK) {
 case (AMD_ID_LV400B & FLASH_TYPEMASK):
  printf ("1x Amd29LV400BB (4Mbit)\n");
  break;
 case (AMD_ID_LV800B & FLASH_TYPEMASK):
  printf ("1x Amd29LV800BB (8Mbit)\n");
  break;
 case (EON_ID_LV160AB & FLASH_TYPEMASK):
  printf ("1x EN29LV160AB (16Mbit)\n");
  break;

default:
  printf ("Unknown Chip Type\n");
  goto Done;
  break;
 }

================================================
修改int flash_erase (flash_info_t * info, int s_first, int s_last)

if ((info->flash_id & FLASH_VENDMASK) !=
     (EON_MANUFACT & FLASH_VENDMASK)) {
  return ERR_UNKNOWN_FLASH_VENDOR;

=========================================
添加
#elif defined(CONFIG_EON_29LV160AB)   //在CONFIG_AMD_LV800后面添加EON_ID_LV160AB     

           
(EON_MANUFACT & FLASH_VENDMASK) |
           
(EON_ID_LV160AB & FLASH_TYPEMASK);

4,至此,uboot关于Norflash已经移植好

make distclean

make smdk2440_config

make即可生成u-boot.bin

u-boot2010.06移植阶段三--norflash驱动的更多相关文章

  1. U-boot2010.06移植--阶段一

    2011-02-24 23:14:57 我今天的移植将分如下3步.加上写记录文档,预计时间3小时. 一,不改变源码,完成编译. 二,修改源码,搭建一个U-boot的框架,完成编译. 三,修改源码,完成 ...

  2. Android系统如何移植wpa_supplicant及wifi驱动

    一.WPA_SUPPLICANT简介 1. 什么是wpa_supplicant wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, ...

  3. 实践作业4---DAY4阶段三。

    阶段三:给出结论 这一阶段,我们首先列表从核心功能.细节.用户体验.辅助功能差异化功能.软件的适应性和成长性展开.我们得结论前参考了权威网站数据.并自己也做了相应分析. 结论:经过这么多工作,这个软件 ...

  4. Linux I2C驱动分析(三)----i2c_dev驱动和应用层分析 【转】

    本文转载自:http://blog.chinaunix.net/uid-21558711-id-3959287.html 分类: LINUX 原文地址:Linux I2C驱动分析(三)----i2c_ ...

  5. MySQL数据库企业集群项目实战(阶段三)

                              MySQL数据库企业集群项目实战(阶段三) 作者 刘畅 时间 2020-10-25 目录 1 架构拓扑图 1 1.1 方案一 1 1.2 方案二 2 ...

  6. mysql的三种驱动类型

    http://862123204-qq-com.iteye.com/blog/1566581 1. Class.forName("com.mysql.jdbc.Driver");/ ...

  7. 浅谈Android系统移植、Linux设备驱动

    一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ...

  8. 基于FPGA的DW8051移植(三)

    总结一下问题: 1) http://www.cnblogs.com/sepeng/p/4137405.html  基于FPGA的DW8051移植(一)里面用modelsim观测波形发现程序进入了ida ...

  9. 移植Linux Kernel SM750 驱动到VxWorks 7

    一.SM750简介 SM750 是SiliconMotion 推出的一款适合嵌入式设备的显卡(Embedded GPU),采用PCIe接口与CPU连接,内部集成16MB DDR SDRAM显存,产品具 ...

随机推荐

  1. Linux (OpenBSD)系统目录分析

    IER(7)                    OpenBSD Reference Manual                    HIER(7) NAME      hier - layou ...

  2. mysql查看连接数排查问题

    #mysql查看连接数SHOW VARIABLES LIKE '%max_connections%'; # max_connections 最大连接数 SHOW VARIABLES LIKE '%co ...

  3. Python代码转换为exe可执行程序详解

    1:安装pyinstaller pip install pyinstaller 2,制作exe 1,先写一个hello.py print('hello world!') input() 2.执行(在s ...

  4. 【2019年04月10日】股票的滚动市盈率PE最低排名

    仅根据最新的市盈率计算公式进行排名,无法对未来的业绩做出预测. 新钢股份(SH600782) - 滚动市盈率PE:3.87 - 滚动市净率PB:1.29 - 滚动年化股息收益率:1.31% - 钢铁 ...

  5. [sqoop] sqoop 小试牛刀

    sqoop 1.4.6  小试牛刀 sqoop import 参数 1. mysql导入 到hdfs中 ./sqoop import --connect jdbc:mysql://mysql:3306 ...

  6. LeetCode - 703. Kth Largest Element in a Stream

    Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...

  7. An error occurred. Sorry, the page you are looking for is currently unavailable. Please try again later.

    刚装完 PHP.Nginx,准备跑下 phpMyAdmin 程序,结果报以下错误: An error occurred. Sorry, the page you are looking for is ...

  8. java模拟http请求(代理ip)

    java实现动态切换上网IP (ADSL拨号上网) java动态设置IP java模拟http的Get/Post请求 自动生成IP模拟POST访问后端程序 JAVA 动态替换代理IP并模拟POST

  9. HTML5在手机端实现视频全屏展示

    最近做项目,遇到一个问题,在手机上要实现视频的全屏播放功能.测试了很久,终于找到解决办法. 第一种:将视频放大来控制. 视频在播放的时候,全屏是根据高度来的,如果设置视频 video 标签的宽度是 1 ...

  10. 守护线程daemon

    如下代码: from threading import Thread import time def func1(n): time.sleep(10) print(n) t = Thread(targ ...