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. thinkphp5 composer

    前提:已安装composer 1.安装包 https://packagist.org/?query=thinkphp ,tp的各种安装包 2.安装 //安装命令, composer create-pr ...

  2. php.ini 开发和线上配置的差异

    比对了一下php自带的php.ini-development和php.ini-production,备忘. display_errors = Ondisplay_startup_errors = On ...

  3. Android remount命令的两种写法

    不同系统的参数格式可能不一样,而且可能没有--help打印,记录一下: mount -o remount -rw /system mount -o remount,rw /system

  4. win10 快速访问关闭

    1. 右键 --- 选项 2. 选择:此电脑

  5. [原]Django-issue(1)---postgresql数据库连接密码错误

    环境: Django==1.9.13 psycopg2==2.7.5 Python 3.6.5 postgresql 1.18.1 配置django的时候出现问题 检查setting,问题点:由于安装 ...

  6. pandas pivot_table或者groupby实现sql 中的count distinct 功能

    pandas pivot_table或者groupby实现sql 中的count distinct 功能 import pandas as pd import numpy as np data = p ...

  7. axios 中断请求

    1 <button onclick="test()">click me</button> <script src="https://unpk ...

  8. ruby 基础知识2 - 区块 block

    原文 1. block中的 yield 与遍历 5.times do |i| puts i end 或者 def my_times(n) i = 0 while n > i i += 1 yie ...

  9. chrome 调试进入 paused in debugger 状态解决办法

    今天调试代码的时候总是一刷新就进入 debugger 状态,总是需要按几次 F8 才能进到页面,我那个暴脾气啊,几次后终于是忍不住了,然后再网上找到了解决办法.就如一位网友所说,“Oh God! I ...

  10. js jq 手机号实现(344) 附带删除功能 jq 实现银行卡没四个数加一个空格 附带删除功能

    js 手机号实现(344)  下面有将正则验证去掉“-” 或“空格”  下一篇博客有单独的删除功能方法 <!DOCTYPE html> <head> <meta char ...