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-1.1.6移植之dm9000
下一篇:移植u-boot-1.1.6之mtdparts分区
推荐阅读最新更新时间:2024-11-16 21:23
推荐帖子
- 感觉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。通常小型电流互感器不允许这么高的次级电压(这么高电压将使电流互感器铁芯进入磁饱和)。而电流互感器铁芯饱和是非常危险的。小型电流互感器将发热过甚,大型电流互感器(例如电力部门使用的电流互感器)将发生绝缘击穿,甚至发生爆炸。这是绝对不能允许的。电流互感器次级不怕短路,怕开路(和电压互感器次级怕短路恰好
- 电子小趴菜 开关电源学习小组
设计资源 培训 开发板 精华推荐
- 使用 NXP Semiconductors 的 SL3S1013FTB0 的参考设计
- 使用 ROHM Semiconductor 的 BD45365 的参考设计
- VAR-DVK-OM37_CE7,基于安装了 Windows Embedded Compact 7 的 VAR-SOM-OM37 SOM 处理器的开发套件
- LTC2107IUK、16 位、210Msps 高性能 ADC 的典型应用电路
- 使用 NXP Semiconductors 的 TDA8933BT 的参考设计
- 使用 Richtek Technology Corporation 的 RT8209P 的参考设计
- 基于降压 + 线性 LED 驱动器系统的 CISPR25 汽车尾灯参考设计
- 用于音频放大器的 160W、2 通道、AB 类音频功率放大器
- LT1171HVIQ、用于离线应用的 2.5A 驱动高压 FET 的典型应用
- ADV3229-EVALZ,ADV3229模拟交叉点开关评估板