u-boot2010.06移植阶段三--norflash驱动
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驱动的更多相关文章
- U-boot2010.06移植--阶段一
		2011-02-24 23:14:57 我今天的移植将分如下3步.加上写记录文档,预计时间3小时. 一,不改变源码,完成编译. 二,修改源码,搭建一个U-boot的框架,完成编译. 三,修改源码,完成 ... 
- Android系统如何移植wpa_supplicant及wifi驱动
		一.WPA_SUPPLICANT简介 1. 什么是wpa_supplicant wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, ... 
- 实践作业4---DAY4阶段三。
		阶段三:给出结论 这一阶段,我们首先列表从核心功能.细节.用户体验.辅助功能差异化功能.软件的适应性和成长性展开.我们得结论前参考了权威网站数据.并自己也做了相应分析. 结论:经过这么多工作,这个软件 ... 
- Linux I2C驱动分析(三)----i2c_dev驱动和应用层分析 【转】
		本文转载自:http://blog.chinaunix.net/uid-21558711-id-3959287.html 分类: LINUX 原文地址:Linux I2C驱动分析(三)----i2c_ ... 
- MySQL数据库企业集群项目实战(阶段三)
		MySQL数据库企业集群项目实战(阶段三) 作者 刘畅 时间 2020-10-25 目录 1 架构拓扑图 1 1.1 方案一 1 1.2 方案二 2 ... 
- mysql的三种驱动类型
		http://862123204-qq-com.iteye.com/blog/1566581 1. Class.forName("com.mysql.jdbc.Driver");/ ... 
- 浅谈Android系统移植、Linux设备驱动
		一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ... 
- 基于FPGA的DW8051移植(三)
		总结一下问题: 1) http://www.cnblogs.com/sepeng/p/4137405.html 基于FPGA的DW8051移植(一)里面用modelsim观测波形发现程序进入了ida ... 
- 移植Linux Kernel SM750 驱动到VxWorks 7
		一.SM750简介 SM750 是SiliconMotion 推出的一款适合嵌入式设备的显卡(Embedded GPU),采用PCIe接口与CPU连接,内部集成16MB DDR SDRAM显存,产品具 ... 
随机推荐
- thinkphp5 composer
			前提:已安装composer 1.安装包 https://packagist.org/?query=thinkphp ,tp的各种安装包 2.安装 //安装命令, composer create-pr ... 
- php.ini 开发和线上配置的差异
			比对了一下php自带的php.ini-development和php.ini-production,备忘. display_errors = Ondisplay_startup_errors = On ... 
- Android remount命令的两种写法
			不同系统的参数格式可能不一样,而且可能没有--help打印,记录一下: mount -o remount -rw /system mount -o remount,rw /system 
- win10 快速访问关闭
			1. 右键 --- 选项 2. 选择:此电脑 
- [原]Django-issue(1)---postgresql数据库连接密码错误
			环境: Django==1.9.13 psycopg2==2.7.5 Python 3.6.5 postgresql 1.18.1 配置django的时候出现问题 检查setting,问题点:由于安装 ... 
- pandas pivot_table或者groupby实现sql 中的count distinct 功能
			pandas pivot_table或者groupby实现sql 中的count distinct 功能 import pandas as pd import numpy as np data = p ... 
- axios 中断请求
			1 <button onclick="test()">click me</button> <script src="https://unpk ... 
- 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 ... 
- chrome 调试进入 paused in debugger 状态解决办法
			今天调试代码的时候总是一刷新就进入 debugger 状态,总是需要按几次 F8 才能进到页面,我那个暴脾气啊,几次后终于是忍不住了,然后再网上找到了解决办法.就如一位网友所说,“Oh God! I ... 
- js jq 手机号实现(344) 附带删除功能    jq 实现银行卡没四个数加一个空格 附带删除功能
			js 手机号实现(344) 下面有将正则验证去掉“-” 或“空格” 下一篇博客有单独的删除功能方法 <!DOCTYPE html> <head> <meta char ... 
