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
转载于:https://www.cnblogs.com/AppleCai/p/10777969.html
u-boot2010.06移植阶段三--norflash驱动相关推荐
- 驱动篇:底层驱动移植(三)(摘录)
驱动篇:底层驱动移植(三)(摘录) GPIO 驱动 在 drivers/gpio 下实现了通用的基于 gpiolib 的 GPIO 驱动,其中定义了一个通用的用于描述底层 GPIO 控制器的gpio_ ...
- AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17
AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17 手上板子原来自带的是2.4.19的内核, 打算移植新的2.6的内核,从网上下了2.6.17的kernel,下载 ...
- 驱动专题:第五章MTD及Flash驱动 4.Norflash驱动
嵌入式Linux--nor flash (1):硬件介绍 声明:本文章是学完韦东山老师的教学视频后看过一些文章后所写,在看文章时我会将一些可能重要的知识点复制下来,所以可能会抄到您文章中的一些内容,如 ...
- 潘多拉开发板——emwin5.44裸机移植记录(ST7789驱动)
一.emwim5.44的获取 1.打开STM32CubeMX,通过主界面help-Update Setting查看 点击后在弹出的界面可以看到路径,以我的电脑为例,可以找到以下的文件夹 正点原子的潘多 ...
- S29GL128P Norflash驱动读写分析
S29GL128P Norflash驱动读写分析 2014-2-25 S29GL128P是在嵌入式系统中经常可以见到的一款Norflash芯片,存储结构为128(sectors)X128(Kbytes ...
- mt7601u linux驱动编译,移植MT7601U AP Linux 驱动至Orangepi-PC2开发板
简单一下记录移植MT7601U AP Linux 驱动至Orangepi-PC2开发板的过程. 二 环境描述 1.Orangpi-PC2开发板(Linux Orangepi 3.10.65 #12 ...
- Exynos4412 内核移植(五)—— 驱动的移植
以移植自己制作的驱动,学习内核移植中的驱动移植,及 驱动程序的动态编译和静态编译 硬件环境: Linux 内核版本:Linux 3.14 主机:Ubuntu 12.04发行版 目标机:FS4412平台 ...
- c++驱动键鼠源码_Android移植FM芯片RDA5807M驱动指导
文档说明 本文档以SC826为例(MSM8953平台,Android 7),描述如何移植FM芯片RDA5807M驱动. 移植修改 1):rdafm_drv.c rdafm_drv.h 放到kernel ...
- Shell脚本学习-阶段三
文章目录-Shell学习阶段三 前言 1.用shell脚本批量建立Linux用户 2. 编写shell脚本,将/usr/local/test目录下大于100k的文件转移到/tmp目录下: 3.通过ap ...
最新文章
- RTT设备与驱动之PWM
- Open3d学习计划—高级篇 4(多视角点云配准)
- helm部署仓库中没有的包_Kubernetes的Helm软件包管理器简介
- 陌陌财报双双超预期,什么才是它的基本盘?
- ReactJS入门之Model分层的概念
- java 运行class 传参_JAVA 不同Class传值问题
- 我的SharpDevelop插件之一:知识管理器(2006年博客迁移)
- usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...
- 安卓AndroidStudio设计计算器实现简单的计算
- java web简单的网上名片管理系统
- mysql四种隔离级别
- 网络安全,非对称加密,对称加密和非对称加密的区别
- 利用 ajax 上传图片 删除图片 (Spring Boot)
- 【历史上的今天】10 月 26 日:NetBSD 系统发布;Windows 8 诞生;微软推出 Surface 系列
- mysql sever has been_MySQL server has gone away 问题的解决方法
- stm32单片机屏幕一直闪_基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果
- 安全防护 守好家门 也谈端口的开关
- 不用甘特图,怎么能做好项目管理?
- 文化的品位和文化的品格
- 【91xcz】教你win7电脑如何升级win8系统
热门文章
- AMD第七代桌面APU揭秘:主流首次上DDR4
- 织梦DedeCMS使用SQL批量替换文章标题内容
- 深入浅出交换类排序算法(转)
- 7 大工具,驯服大数据
- .NET 技术社区之我见(中文篇)
- python使用os库临时改变环境变量
- esp32 例程 蓝牙_wifiamp;蓝牙MCU 该不该选ESP32
- python语言的开发者_写给.NET开发者的Python教程(一):引言
- 自动建议下拉菜单_word排版技巧:如何撤销删除自动编号
- webview加载页面有2秒白屏_iOS WKWebview 白屏检测实现