查看: 10505|回复: 2

COOCOX系列课程之ColinkEx & Coflash

[复制链接]

该用户从未签到

发表于 2012-9-20 09:33:56 | 显示全部楼层 |阅读模式
分享到:

今天就介绍第三部分,CoLinkEx+CoFlash使用指导。
在讲使用之前,先简单介绍下colinkex是什么:
CooCox CoLinkEx是一款支持SW调试的仿真器,它可以调试ARM Cortex MCU设备。CoLinkEx直接支持CoIDE和CoFlash,并与Keil Realview MDK,IAR Embedded Workbench无缝集成。
CoLinkEx有一下特点:
        支持Cortex M设备
        支持SW调试
        支持JTAG调试
        支持CoFlash,CoIDE,MDK和IAR
支持的器件:包括主流的M0和M3,这里不一一列举,你可以通过,coide或者coflash查看。
CoLinkEx适用于:
        Keil RealView MDK 4.03 或更高版本 (MDK 4.13a除外)
        IAR Embedded Workbench 5.50 或更高版本
        CooCox CoFlash
        CooCox CoIDE

CooCox CoLinkEx是个开源硬件,你可以从官网购买,或者你不想花费这个费用,或者想自己学习学习,也可以自己DIY。
购买的话你可以给market@coocox.com 发一封邮件
当然,肯定很多人都比较关注如何DIY,进入http://www.coocox.com/CN/CoLinkGuide/CoLinkDIY.htm 页面,这里面有DIY的全套资料。电路图原件清单,PCB,固件内容等等,CoLinkEx的原理图用orcad画的,PCB用PADS。
怎样更新CoLinkEx固件?
短接JP1。
上电(ColinkEX连接到PC)。
等待PC枚举出卷标CRP2 ENABLD(或CRP DISABLD)的可移动磁盘,如果没有出现,请多按几次复位键(BP1)或重新上电。
把CRP2 ENABLD(或CRP DISABLD)可移动磁盘中的firmware.bin删除。
把下载好的CoLinkEx固件复制到此可移动磁盘中。
断开JP1,重新上电后即可使用

这里不多说,DIY这东西,多说没用,要动手实践,有问题邮件联系,master@CooCox.com
或者QQ群去提问:167693982

下面讲使用
这次课和其他的课有点不一样,上两次都是软件的课,从网上下载安装一个软件就可以开始使用了,这次课,内容与硬件相关,需要结合硬件来讲,那么我就以Cookie板为例来讲解吧。为什么以Cookie板来讲解呢?
因为Cookie集成了CoLinkEx。那么我们看看Cookie的图片吧,相信很多人都看过了,
昨天 09:36 上传
下载附件
当然,大家有任何colinkex都可以用,单个colinkex,colinkex和LPC1114的拼版,colinkex和LPC11C1x的拼版都行。
需要做以下准备工作,
如果没有安装CoCenter,先安装,方法以前的课程讲过。
安装完成打开登录CoCenter。
打开CooCox CoCenter如图,它会自动检测电脑上是否安装了coocox的相应软件,目前管理软件列表里面有CoIDE, CoFlash, CoSmart, CoOS,  ColinkEx for MDK插件,ColinkEx的USB驱动。
昨天 09:42 上传
下载附件
本次课程需要用到的就是coide、CoFlash、ColinkEx for MDK插件,ColinkEx的USB驱动。需要先下载安装这些。
安装ColinkEx的USB驱动需要注意以下问题:选择 ColinkExUsbDriver 版本

准备好这些之后,我们开始讲colinkex在coide的应用:

Coide的应用很简单,很方便,用colinkex的话,只需要在调试配置里面设置一下就可以了。如图:

昨天 09:56 上传
下载附件
OK,你现在就可以用coide来下载调试了。
在MDK中调试,开始之前要先安装CoMDKPlugin
CoMDKPlugin是一款在keil Realview MDK环境下调试ARM Cortex MCU芯片的软件。

要在Keil Realview MDK下使用Colink, CoLinkEx or NuLink & NuLinkMe,您只需要关注以下几步:
步骤:
1.        在Keil RealView MDK下打开您的工程。
2.        配置对话框中Debug -> Use选择"CooCox Debugger"。

3.        点击Settings,Adapter选择"Colink或者ColinkEx"。如果您使用NuLink或NuLinkMe,Adapter应该选择"Nulink"。


4.        如果您想在Flash中调试您的程序,您还需要配置Utilities选项,选择"CooCox Debugger"。

5.        调试您的工程。
在IAR中调试:
需要先安装CoIARPlugin,CoIARPlugin是一款在IAR Embedded Workbench环境下调试ARM Cortex MCU芯片的软件。
这个只能通过页面http://www.coocox.com/CN/CoLinkGuide/CoIARPlugin.htm 下载,由于这个插件很久没有更新,与最新的colinkex固件有冲突,需要用的话可以更换一下固件,方法上面讲过。
在IAR Embedded Workbench下使用Colink, CoLinkEx or NuLink & NuLinkMe,您只需要关注以下几步:
步骤:
1.        在IAR Embedded Workbench下打开您的工程。
2.        右击您的工程,选择"Options..."。
昨天 10:01 上传
下载附件
3.        在Category中点击"Debugger"选项,"Driver"菜单中选择RDI。
昨天 10:02 上传
下载附件
4.        在Category中点击"RDI",在"Manufacturer RDI driver"菜单中选择CoRDI.dll 文件。
昨天 10:02 上传
下载附件
.        在菜单栏的RDI选项中打开配置对话框,"Debug Target"选择Colink,CoLinkEx或 Nulink。
昨天 10:03 上传
下载附件
6.        此时,您可以在IAR下调试您的工程了。
Colinkex差不多就介绍这些,中间休息一下,提问时间
下面接着介绍coflash


CooCox CoFlash是Windows下针对Cortex M系列芯片的Flash编程软件,支持大部分Cortex M系列芯片。CoFlash除了有一个直观的传统的图形用户界面外,它还支持命令行模式。CoFlash配合Colink,CoLinkEx,Nulink等调试器使用。另外,用户还能够定义自己的编程算法来支持更多的flash设备。

特征:
        免费
        支持大多数常见的Cortex M系列微处理器
        支持用户自定义的flash编程算法
        直观的图形用户界面及命令行模式
        支持编程.bin或.elf文件
        保存用户的最后一次配置
其他详情,请查看 http://www.coocox.com/CN/CoFlash_Programmer.htm

支持的调试器如图:
昨天 10:11 上传
下载附件
要使用coflash,你有至少一个调试器,需要注意的是:并不是所有的调试器,都支持左边的所有芯片。
Coflash支持图形化界面和命令行模式,两种方式,下面我主要从图形化界面来讲:
Cookie板子为例,芯片当然选择M0516ZN,调试器选择colinkex,其他的配置可以采用默认值。配置好之后进入command页面进行具体操作。

CoFlash 图形用户界面的功能:
        配置
        编程    擦除    校验    空白检测

配置
在使用CoFlash进行flash编程之前,需要进行以下配置:
1.        在MCU树形列表中选择你所使用的MCU;
2.        配置 USB调试器;
3.        添加/移除flash算法(支持多算法),非必选操作。
昨天 10:23 上传
下载附件
编程flash设备
1.        在Flash Sector Map框中选择flash算法,配置扇区;
2.        在Data File框中,选择映像文件,目前仅支持.bin或.elf文件;
3.        (可选)选择Auto Erase在编程之前擦除flash芯片;
4.        (可选)选择Auto Verify在编程之后进行验证;
5.        (可选)选择Run After Program在编程之后复位MCU;
6.        (可选)在Flash Offset中,指定数据存放的起始偏移地址;
7.        点击Program按钮。

擦除
可以擦除单个或多个扇区。
1.        在下拉选框中选择flash算法。(多个算法时)
2.        在Flash Sector Map中选择想要擦除的扇区。
3.        点击Erase按钮。

校验flash中的内容
将flash里的内容与所要烧写的文件进行比较。
1.        在Data File中,输入映像文件,只支持.bin或.elf文件。
2.        点击Verify 按钮。
昨天 10:26 上传
下载附件
空白检测
可以检测一个或多个扇区。
1.        在下拉选框中选择flash算法。(多个算法时)
2.        在Flash sector map中选择想要检测的扇区。
3.        点击Blank Check 按钮。

什么是flash编程算法
flash编程算法就是一小段代码,它用来把程序写入到flash存储器中,并处理一些设备信息。

CoFlash的机制

程序运行时将执行以下步骤:
1.        CoFlash将flash引导程序下载到目标板的RAM中。
2.        CoFlash读取应用程序代码,并把它们写入到RAM中(映像数据的缓冲区)。
3.        CoFlash开始执行flash驱动程序。
4.        Flash驱动程序把RAM里的映像数据烧写到flash存储器中。
5.        Flash编程结束。

设置使用自己的flash编程算法
        命令行模式:通过”--driver=FILE”选项。
        图形用户界面模式:在Config选项卡的Flash Driver框中指定自定义的算法文件。

程序结构


编译自定义的flash引导程序

1.        安装ARMGCC编译器。
2.        复制CoFlash\FlashAlgorithm\source\template文件夹,然后重命名它。
3.        编写自定义的FlashInit, FlashUnInit, FlashEraseChip, FlashEraseSector, FlashProgramPage, FlashVerify函数。
4.        在gccProject/makefile文件中修改FLASH_CHIP的值为目标算法的文件名。
5.        通过命令行进入gccProject目录,然后在命令行运行make命令,这时自定义的算法文件将会出现在FlashAlgorithm目录下面。

flash编程算法的API

Flash设备描述符的结构体:
  • struct FlashSector
  • {
  •     unsigned long size;                                  // Sector Size in Bytes
  •     unsigned long addr;                                 // Address of Sector
  • };
  • // Flash Device Info
  • struct FlashDevice
  • {
  •     unsigned long type;                                  // Flash Device Type
  •     unsigned long baseAddr;                            // Flash Device Base Address
  •     unsigned long totalSize;                             // Flash Device Total Size(Bytes)
  •     unsigned long pageSize;                             // Page Size(Bytes)
  •     unsigned char initialVal;                              // Initial Vaule of Erased Memory
  •     struct FlashSector sectors[FLASH_SECTORS_NUM];   // Sectors
  • };
  • struct FlashAlgorithm
  • {
  •     unsigned long version;
  •     // Algorithm Version (FLASH_FRAMEWORK_VERSION << 16 | YourVersion)
  •     char description[FLASH_ALGO_DESC_SIZE];    // Description of the Algorithm
  •     struct FlashDevice deviceInfo;
  • };

复制代码
如果flash设备中的所有扇区的大小都是一样的,那么您只需要指定一次扇区的大小,并设置扇区的起始地址为一个非法的值0xFFFFFFFF,参见模板里的描述。否则,您需要一一列举出所有的扇区的大小和起始地址。
  • FlashInit
  • int FlashInit (unsigned long baseAddr,unsigned long clk, unsigned long operateFuc)
  • * @brief           Initialize before Flash Programming/Erase Functions
  • * @param[in]    baseAddr     Flash device base address.
  • * @param[in]    clk              Flash program clock.
  • * @param[in]    operateFuc  Init for what operation                            (FLASH_OPT_ERASECHIP/FLASH_OPT_ERASESECTORS/FLASH_OPT_PROGRAMPAGE/ FLASH_OPT_VERIFY/ FLASH_OPT_BLANKCHECK).
  • * @param[out]  None
  • * @retval         0                All is OK.
  • * @retval         others         Some error occurs.
  • * @details        This function is called before flash programming/erase.
  • FlashUnInit
  • int FlashUnInit(unsigned long operateFuc)
  • * @brief           Un-Init after Flash Programming/Erase…  Functions
  • * @param[in]    operateFuc    Init for what operation                         (FLASH_OPT_ERASECHIP/FLASH_OPT_ERASESECTORS/FLASH_OPT_PROGRAMPAGE/ FLASH_OPT_VERIFY/ FLASH_OPT_BLANKCHECK).
  • * @param[out]  None
  • * @retval         0                  All is OK.
  • * @retval         others           Some error occurs.
  • * @details        This function is called after flash programming/erase….
  • FlashEraseChip
  • int FlashEraseChip (void)
  • * @brief            Erase the full chip
  • * @param[in]     None
  • * @param[out]   None
  • * @retval          0              All is OK.
  • * @retval          others       Some error occurs.
  • * @details
  • FlashEraseSector
  • int FlashEraseSector (unsigned long sectorAddr)
  • * @brief             Erase the select Sector
  • * @param[in]      sectorAddr   Sector's start address.
  • * @param[out]    None
  • * @retval           0              All is OK.
  • * @retval           others       Some error occurs.
  • * @details
  • FlashProgramPage
  • int FlashProgramPage (unsigned long pageAddr, unsigned long size, unsigned char *buf)
  • * @brief             Proram a page
  • *@param[in]       pageAddr    Page's start address
  • *@param[in]       size           Page size
  • *@param[in]       buf            source buf point
  • *@param[out]     None
  • * @retval           0              All is OK.
  • * @retval           others       Some error occurs.
  • * @details
  • FlashVerify

复制代码
可选的功能。当没有实现该功能时,colink将会直接读取flash存储器里的数据进行校验。
  • int FlashVerify(unsigned long verifyAddr,unsigned long size,unsigned char *buf)
  • * @brief            Page Verify Function
  • * @param[in]     verifyAddr     Verify Start Address(Usually page start address)
  • * @param[in]     size             Verify size
  • * @param[in]     buf              source buf point
  • * @param[out]   None
  • * @retval          0                 Verify pass.
  • * @retval          others          Some error occurs or verify failed.
  • * @details
  • FlashBlankCheck

复制代码
可选的功能。当没有实现该功能时,colink将会直接读取flash存储器里的数据进行空白检测。
  • int FlashBlankCheck (unsigned long checkAddr,unsigned long size)
  • * @brief             Page Blank Check Function
  • * @param[in]      checkAddr    Check Start Address(Usually page start address)
  • * @param[in]      size             Check size
  • * @param[out]    None
  • * @retval           0                Check pass.
  • * @retval           others         Some error occurs or Check failed.
  • * @ details
  • * @note             Sector can be significant.We check the page rather than the sector, having regard to the actual size of the ram.

复制代码
今天的内容就这么多,最后要说的就是,讲的这些内容CooCox的网上上面都有,网址分别是:
http://www.coocox.com/CN/CoFlash_Programmer.htm
http://www.coocox.com/CN/Colinkex.htm
回复

使用道具 举报

  • TA的每日心情
    开心
    2014-8-11 16:59
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-11-15 20:35:29 | 显示全部楼层
    我想问一下,当我用MDK下载程序是出现 Adapter open failed???怎么回事
    而之前是正常的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2024-1-24 10:35:21 | 显示全部楼层
    这个停止更新了,真可惜了。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-20 02:09 , Processed in 0.134804 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.