jlink烧写spi flash (对存储器有要求,一定页对齐)

为了能方便的使用JLINK把大量数据烧写到MCU外围spiflash中,我走了很多弯路,下面说说过程,

jlink只是一个硬件,要想通过jlink烧写外部存储器,你还需要软件、下载算法等。

1,一开始我在网上看到了,有人搞定了自定义MDK下的XXXXXX.FLM算法文件,可以实现MDK通过JLINK直接烧写stm32外挂的SPIFLASH,我没有仔细研究需求,以为就是这了,于是费了很大的劲、花了1天半的时间,搞定了,  但是突然发现不是我要东西,我的目的很明确,通过JFLASH直接烧写MCU的外挂FLASH,但是这个方法只能实现能过MDK烧写, 因为生产线上是不会使用MDK KEIL这种工具的,  只会使用jflash, 或者串口flashmagic烧写。

2. 于是我又寻找JFLASH下烧写外部FLASH的方法,果然又是一套截然不同的路径。其实原理是一样的,也是一个下载算法,这个算法是XXXX.elf格式,而这个算法是由Embedded Studio 生成的, 真不好 

又在网上下载了个例程, 说是FLM的下载算法,也可以用在JFLASH软件中, 我试下,看看到底行不行。

理论上是可以的,但是我费了很长时间,没有实现,先暂停。。。。

编辑JLinkDevices.xml增加如下内容
   <Device>
   <ChipInfo Vendor="自定义名字" Name="STM32F10x M25P64 SPI Flash" WorkRAMAddr="0x20000000" WorkRAMSize="0x00020000" Core="JLINK_CORE_CORTEX_M3" />
   <FlashBankInfo Name="EXTSPI" BaseAddr="0xC0000000" MaxSize="0x00800000" Loader="Devices/ST/STM32F10x_M25P64.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" />
  </Device> 

终于知道为什么我失败的原因了:发现个问题,程序中定义的flash参数结构体,中编程页大小这一项必须为对齐的, 但是我这个AT45DB321  TMD页大小是528, 只要这一项我设置528,就会失败, 连接就连不上,真郁闷!!设置成512就可以的。浪费了我3天时间了

struct FlashDevice const FlashDevice  =  {
   FLASH_DRV_VERS,             // Driver Version, do not modify!
   "stm32f4_at45db321_willow",    // Device Name
   EXTSPI,                     // Device Type
   0x20000000,                 // Device Start Address
   0x00420000,                 // Device Size in Bytes (4.125MB)
   528,                        // Programming Page Size
   0,                          // Reserved, must be 0
   0xFF,                       // Initial Content of Erased Memory
   1000,                       // Program Page Timeout 1000 mSec
   1000,                       // Erase Sector Timeout 1000 mSec
// Specify Size and Address of Sectors
   0x1080, 0x000000,           // Sector Size 4224 bytes (block = 8*page)
   SECTOR_END
};

struct FlashDevice const FlashDevice  =  {
    FLASH_DRV_VERS,                   /* 驱动版本,勿修改,这个是MDK定的 */
    "stm32f4_at45db321_willow",   /* 算法名,添加算法到MDK安装目录会显示此名字 */
    EXTSPI,                           /* 设备类型 */
    0xC0000000,                       /* Flash起始地址 */
    0x00420000,                 /* Flash大小,4MB Total Size of Device*/
    512,    //528,                             /* 编程页大小 Programming Page Size*/
    0,    //0,                                /* 保留,必须为0 Reserved for future Extension*/
    0xFF,                             /* 擦除后的数值 */
    1000,                             /* 页编程等待时间 */
    6000,                             /* 扇区擦除等待时间 */
    8 * 528, 0x000000,              /* 扇区大小4K ,扇区地址 */
    SECTOR_END    
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值