博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
u-boot2010.06移植阶段三--norflash驱动
阅读量:4699 次
发布时间:2019-06-09

本文共 2860 字,大约阅读时间需要 9 分钟。

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

你可能感兴趣的文章
hibernate出现No row with the given identifier exists问题
查看>>
为什么wait()和notify()属于Object类
查看>>
配置NRPE的通讯
查看>>
匹配两个空格之间的字符。。。
查看>>
CSS 文字溢出 变成省略号 ...
查看>>
Spring事务
查看>>
java编程基础(三)流程控制语句
查看>>
让数据库跑的更快的7个MySQL优化建议
查看>>
jquery 取id模糊查询
查看>>
解决在vue中,自用mask模态框出来后,下层的元素依旧可以滑动的问题
查看>>
修改node节点名称
查看>>
PAT(B) 1014 福尔摩斯的约会(Java)
查看>>
PAT甲级题解-1123. Is It a Complete AVL Tree (30)-AVL树+满二叉树
查看>>
项目开发总结报告(GB8567——88)
查看>>
SSH加固
查看>>
端口扫描base
查看>>
iOS IM开发的一些开源、框架和教程等资料
查看>>
FansUnion:共同写博客计划终究还是“流产”了
查看>>
python 二维字典
查看>>
pip 警告!The default format will switch to columns in the future
查看>>