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

发布时间:2023-06-13  

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>