移植u-boot-1.1.6之NOR的支持

发布者:leader4最新更新时间:2024-01-13 来源: elecfans关键字:移植  u-boot  NOR 手机看文章 扫描二维码
随时随地手机看文章

u-boot-1.1.6里面默认配置文件里面支持的nor型号是


1 #if 0

2 #define CONFIG_AMD_LV400    1    /* uncomment this if you have a LV400 flash */

3 #endif

4 #define CONFIG_AMD_LV800    1    /* uncomment this if you have a LV800 flash */

而我们使用的nor flash不是LV400/LV800;


我们使用的芯片是MX29LV160DB,但是uboot里面没有,而有相近的AM29LV040B,这是需要借助数据手册仿写一个

MX29LV160DB特性有:

大小:2M

位数:16位

扇区数目:4个


已经有的配置: 在jedec_flash.c里面

{

  .mfr_id = (u16)AMD_MANUFACT,

  .dev_id = AM29LV040B,

  .name = "AMD AM29LV040B",

  .uaddr = {

  [0] = MTD_UADDR_0x0555_0x02AA /* x8 */

  },

  .DevSize = SIZE_512KiB,

  .CmdSet = P_ID_AMD_STD,

  .NumEraseRegions= 1,

  .regions = {

  ERASEINFO(0x10000,8),

  }

  }



以上各种参数说明:

  struct amd_flash_info {

  const __u16 mfr_id;

  const __u16 dev_id;

  const char *name;

  const int DevSize;

  const int NumEraseRegions;

  const int CmdSet;

  const __u8 uaddr[4]; /* unlock addrs for 8, 16, 32, 64 */

  const ulong regions[6];

  };


我们修改为:


 1 {

 2         .mfr_id        = MANUFACTURER_AMD,   //制造商

 3         .dev_id        = AM29LV160DB,        //型号

 4         .name        = "AMD AM29LV160DB",    //名字

 5         .uaddr        = {

 6             [0] = MTD_UADDR_0x0AAA_0x0555,  /* x8 */

 7             [1] = MTD_UADDR_0x0555_0x02AA   /* x16 */  输出对应指令,翻阅数据手册

 8         },

 9         .DevSize    = SIZE_2MiB,         //大小

10         .CmdSet        = P_ID_AMD_STD,   

11         .NumEraseRegions= 4,              //分区数目

12         .regions    = {                  //分区列表,参看nor数据手册

13             ERASEINFO(0x04000,1),

14             ERASEINFO(0x02000,2),

15             ERASEINFO(0x08000,1),

16             ERASEINFO(0x10000,31)

17         }

18     }



现在回顾nor flash的调用过程:


board.c里面调用flash_init ();


flash_init ();


  cfi_flash.c   //注意,正常情形使用flash.c,不过因为flash.c里面没有我们需要的型号,所以应该在flash.c所在目录下的Makefile里面去掉flash.o


  flash_detect_legacy


    flash_read_jedec_ids       //制造商


    jedec_flash_match


      jedec_table  //在芯片table里面匹配有无支持的NOR flash


  flash_get_size


关键字:移植  u-boot  NOR 引用地址:移植u-boot-1.1.6之NOR的支持

上一篇:u-boot-1.1.6移植之dm9000
下一篇:移植u-boot-1.1.6之mtdparts分区

推荐阅读最新更新时间:2024-11-16 21:23

未来国内NOR Flash厂商或会走IDM模式,5G将受益
西安:今年将建成1.3万个5G基站,2022年底5G产业规模超300亿元 4月23日,《西安市加快5G系统建设与产业发展的实施意见》(以下简称《意见》)印发,力争将西安市打造成为网络基础完备、应用场景丰富,极具特色的5G产业创新发展高地。《意见》指出,西安将大力推进系统建设,2020年,新建5G基站9000个,累计建成1.3万个,实现核心城区和全运会场馆、重点产业聚集区、交通干线、旅游景点等重点区域5G信号连片优质覆盖。 集微点评:今年新基建最直接的受益者就是5G。 华米OV存储器供应商普冉半导体拟A股IPO,已进行辅导备案 4月24日,据上海监管局披露,普冉半导体(上海)股份有限公司拟首次公开发行股票并上市。普冉半导体主要从事集
[手机便携]
在MOTOROLA A68K系列MCU上移植μC/OS-II
一、MC68K CPU简介 MC68K及68020、68040等的著名的MOTOROLA32位微处理器,和与之兼容的68K、CPU32、CPU32+等CPU扩充定时处理单元TPU、队列串行模块QSM、系统控制模块和RAM等组成MC683xx系列单片机。 CPU32 内部有8个32位通用数据寄存器,8个32位通用地址寄存器。8个通用数据寄存器可作为累加器使用,也可看成C语言中各种类型的变量;8个通用地址寄存器,可作为变址寄存器使用,也可看成C语言中的指针型变量。CPU32有独立的用户堆栈指针和系统堆栈指针,可区分程序区、数据区、系统区、用户区等存储空间,有7级中断。 要实现μC/OS-II向MC68K的移值,需要有M
[单片机]
在MOTOROLA A68K系列MCU上<font color='red'>移植</font>μC/OS-II
u-boot-2014.10移植(1)
1 /*************************************************** 2 3 *u-boot版本 :u-boot-2014.10 4 5 *gcc版本 :/home/flinn/tools/4.4.3/bin/arm-none-linux-gnueabi- 6 7 * 8 9 *服务器 :ubuntu14.05 10 11 * 12 13 *编译命令 :make smdk2440_config;make 14 15 *Note(s) : 不要使用gcc-4.3.2(坑) 16 17 **************************************
[单片机]
U-Boot-2009-03移植笔记(第二阶段:时钟!)
根据U-Boot-2009-03移植笔记(第二阶段移植准备)最后的总结,需要针对S3C2440来移植时钟初始化的代码。 在lib_arm/board.c中,个init_sequence数组,定义了所有的初始化函数指针。 时钟的驱动,在函数board_init中,位于board/xinna2440/xinna2440.c,我们这里只支持S3C2440,删除文件头部的时钟参数宏定义,直接改为 1 #define FCLK_SPEED 1 2 3 #define M_MDIV 0x7f 4 #define M_PDIV 0x2 5 #define M_SDIV 0x1 6 7 #define USB_CLO
[单片机]
U-Boot-2009-03<font color='red'>移植</font>笔记(第二阶段:时钟!)
ucosii在stm32上的移植详解4
详解3中有一个问题还没解释,就是stm32f10x_it.c中已经有SysTick中断函数的定义SysTick_Handler(),为什么官方版非要弄个OS_CPU_SysTickHandler()。答案就在启动文件上,一般我们自己开发基于stm32芯片的软件,都会使用标准外设库CMSIS中提供的启动文件,而官方移植的启动文件却是自己写的,在两个文件init.s,vectors.s中(Micrium\Software\EvalBoards\ST\STM3210B-EVAL\RVMDK)。init.s负责进入main(),vectors.s设置中断向量。OS_CPU_SysTickHandler和OS_CPU_PendSVHand
[单片机]
三星看好PCM内存潜力 有望取代NAND和NOR闪存
三星表示,PCM(相变内存)所具有的体积小及节电优势可能让这种内存替代现有的移动存储形式.    多年来,半导体厂商一直在致力研究PCM内存,不过,它一直处于试验阶段.PCM内存当中包含有类似玻璃的材料,当其中的原子重新排列,它的状态就会发生改变,晶体的变化对应计算上的0,1状态,从而可以用于数据存储.    一直以来,包括英特尔和英飞凌在内的很多公司都在从PCM的研发,他们试图将这种存储器的体积减小,增存储加速度与容量.支持PCM的人士认为,PCM最终可能取代NAND和NOR闪存.    三星半导体公司的技术营销经理Harry Yoon认为,PCM最早将被应用于手机等移动设备当中,它可以节省30%的耗电.    三
[手机便携]
使用u-boot_2016_01启动mini2440(二)uboot内存分布
启动内存的分布主要是在board_init_f内划分的: 按照我的代码,分布如下: 代码log: U-Boot 2016.01-g3401853-dirty (Apr 04 2016 - 08:06:26 -0400) U-Boot code: 33A00000 - 33A7BEF4 BSS: - 33ACAAE4 CPUID: 32440001 FCLK: 405.600 MHz HCLK: 101.400 MHz PCLK: 50.700 MHz DRAM: Monitor len: 000CAAE4 Ram size: 04000000 Ram top: 34000000 TLB table from 3
[单片机]
使用u-boot_2016_01启动mini2440(二)uboot内存分布
GD32代码移植STM32(一)
GAIWEI例子:GD32F103移植STM32F103 使用相同FLASH和管脚数量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。虽然两个款芯片的寄存器地址以及架构基本相同。但是需要注意的是GD32F10x主频是108兆,但是STM32F10x主频是72兆。所以需要针对以RCC时钟进行修改。 1.先将芯片的选项进行修改:查找对应芯片。 2.将STM32的启动文件替换成GD的启动文件。 3.修改时钟相关配置。 打开stm32f10x.h文件,#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*! Time out for HSE start up
[单片机]
GD32代码<font color='red'>移植</font>STM32(一)

推荐帖子

感觉STM32H750XB好鸡肋啊。
如题,这么好的资源的片子,内部FLASH仅128KB,太小了。。。感觉STM32H750XB好鸡肋啊。这个内部flash只是用来做bootloader的,是当下高端单片机的趋势确实,做boot就够了,要用到这种芯片的场合,内置2m的rom也不够用,一张图片就多少了。 这骗子好啊。淘宝上都只要不到20了。有人在上面跑uclinux。估计跑GUI和操作系统比较爽。想想当初S3C44b0。据说这芯片还能设置直接从QSPI启动。外挂存储,这种级别的mc
heyangfengyue stm32/stm8
LWIP接收大文件问题
#defineMY_BUF512u8my_buf;voidUDP_client_Receive(void*arg,structudp_pcb*upcb,structpbuf*p,structip_addr*addr,u16_tport){uint8_ti=0;structip_addrdestAddr=*addr;if(p!=NULL)/*如果收到的数据不为空*/
xiaosi204 ARM技术
【TI首届低功耗设计大赛】第四个功能演示视频
本帖最后由zhanghuichun于2014-12-217:19编辑 该作品由两部分组成,一部分是在STM32MCU下制作的智能手表(受触摸屏尺寸限制,有点大,我也想做小的),另一部分是在MSP430FR5969MCU下构建的一个简易智能家居。特此说明!!!短信功能【TI首届低功耗设计大赛】第四个功能演示视频直接把视频嵌入论坛,go啥意思?ljj3166发表于2014-12-211:58直接把视频嵌入论坛,go 下次你放视频的时候
zhanghuichun 微控制器 MCU
如何在MDK下嵌入汇编语言?
请问在MDK下如何嵌入汇编程序?参考帮助文件__asm{.........}提示错误:....sourcecommon.c(458):error:#1113:InlineassemblernotpermittedwhengeneratingThumbcode是否那里还需要设置?如何在MDK下嵌入汇编语言?请教香水城版主!请教香水城版主!错误提示不是很清楚吗:不允许在Thu
babaluosha stm32/stm8
AD9162的配置问题
AD9162在配置的时候有好多寄存器,但是在配置的时候datasheet给了一个START-UPSEQUENCE,如下图。但有些需要配置的寄存器并不在这个START-UPSEQUENCE中,如Register0x304、Register0x306这两个寄存器我要配置,但并不在这个sequence中,我该如何配置这些类似的寄存器???还有就是在这个START-UPSEQUENCE中,需要对一些寄存器进行读操作,那这些需要读的寄存器,还需要通过SPI进
yangsen7336 ADI参考电路
电流互感器次级电压计算
恳请大佬解惑电流互感器次级电压计算电流互感器初次级电流与匝数成反比。你的电流互感器初次级匝数比为1:20,故次级电流为0.5A。如果没有D1,则R1两端电压为0.5A*100欧=50V。通常小型电流互感器不允许这么高的次级电压(这么高电压将使电流互感器铁芯进入磁饱和)。而电流互感器铁芯饱和是非常危险的。小型电流互感器将发热过甚,大型电流互感器(例如电力部门使用的电流互感器)将发生绝缘击穿,甚至发生爆炸。这是绝对不能允许的。电流互感器次级不怕短路,怕开路(和电压互感器次级怕短路恰好
电子小趴菜 开关电源学习小组
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved