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

转载于:https://www.cnblogs.com/AppleCai/p/10777969.html

u-boot2010.06移植阶段三--norflash驱动相关推荐

  1. 驱动篇:底层驱动移植(三)(摘录)

    驱动篇:底层驱动移植(三)(摘录) GPIO 驱动 在 drivers/gpio 下实现了通用的基于 gpiolib 的 GPIO 驱动,其中定义了一个通用的用于描述底层 GPIO 控制器的gpio_ ...

  2. AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17

    AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17 手上板子原来自带的是2.4.19的内核, 打算移植新的2.6的内核,从网上下了2.6.17的kernel,下载 ...

  3. 驱动专题:第五章MTD及Flash驱动 4.Norflash驱动

    嵌入式Linux--nor flash (1):硬件介绍 声明:本文章是学完韦东山老师的教学视频后看过一些文章后所写,在看文章时我会将一些可能重要的知识点复制下来,所以可能会抄到您文章中的一些内容,如 ...

  4. 潘多拉开发板——emwin5.44裸机移植记录(ST7789驱动)

    一.emwim5.44的获取 1.打开STM32CubeMX,通过主界面help-Update Setting查看 点击后在弹出的界面可以看到路径,以我的电脑为例,可以找到以下的文件夹 正点原子的潘多 ...

  5. S29GL128P Norflash驱动读写分析

    S29GL128P Norflash驱动读写分析 2014-2-25 S29GL128P是在嵌入式系统中经常可以见到的一款Norflash芯片,存储结构为128(sectors)X128(Kbytes ...

  6. mt7601u linux驱动编译,移植MT7601U AP Linux 驱动至Orangepi-PC2开发板

    简单一下记录移植MT7601U AP Linux 驱动至Orangepi-PC2开发板的过程. 二  环境描述 1.Orangpi-PC2开发板(Linux Orangepi 3.10.65 #12 ...

  7. Exynos4412 内核移植(五)—— 驱动的移植

    以移植自己制作的驱动,学习内核移植中的驱动移植,及 驱动程序的动态编译和静态编译 硬件环境: Linux 内核版本:Linux 3.14 主机:Ubuntu 12.04发行版 目标机:FS4412平台 ...

  8. c++驱动键鼠源码_Android移植FM芯片RDA5807M驱动指导

    文档说明 本文档以SC826为例(MSM8953平台,Android 7),描述如何移植FM芯片RDA5807M驱动. 移植修改 1):rdafm_drv.c rdafm_drv.h 放到kernel ...

  9. Shell脚本学习-阶段三

    文章目录-Shell学习阶段三 前言 1.用shell脚本批量建立Linux用户 2. 编写shell脚本,将/usr/local/test目录下大于100k的文件转移到/tmp目录下: 3.通过ap ...

最新文章

  1. RTT设备与驱动之PWM
  2. Open3d学习计划—高级篇 4(多视角点云配准)
  3. helm部署仓库中没有的包_Kubernetes的Helm软件包管理器简介
  4. 陌陌财报双双超预期,什么才是它的基本盘?
  5. ReactJS入门之Model分层的概念
  6. java 运行class 传参_JAVA 不同Class传值问题
  7. 我的SharpDevelop插件之一:知识管理器(2006年博客迁移)
  8. usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...
  9. 安卓AndroidStudio设计计算器实现简单的计算
  10. java web简单的网上名片管理系统
  11. mysql四种隔离级别
  12. 网络安全,非对称加密,对称加密和非对称加密的区别
  13. 利用 ajax 上传图片 删除图片 (Spring Boot)
  14. 【历史上的今天】10 月 26 日:NetBSD 系统发布;Windows 8 诞生;微软推出 Surface 系列
  15. mysql sever has been_MySQL server has gone away 问题的解决方法
  16. stm32单片机屏幕一直闪_基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果
  17. 安全防护 守好家门 也谈端口的开关
  18. 不用甘特图,怎么能做好项目管理?
  19. 文化的品位和文化的品格
  20. 【91xcz】教你win7电脑如何升级win8系统

热门文章

  1. AMD第七代桌面APU揭秘:主流首次上DDR4
  2. 织梦DedeCMS使用SQL批量替换文章标题内容
  3. 深入浅出交换类排序算法(转)
  4. 7 大工具,驯服大数据
  5. .NET 技术社区之我见(中文篇)
  6. python使用os库临时改变环境变量
  7. esp32 例程 蓝牙_wifiamp;蓝牙MCU 该不该选ESP32
  8. python语言的开发者_写给.NET开发者的Python教程(一):引言
  9. 自动建议下拉菜单_word排版技巧:如何撤销删除自动编号
  10. webview加载页面有2秒白屏_iOS WKWebview 白屏检测实现