打印

Free 的Cortex-M处理器开发工具 Coocox Tools更新(2011-4)

[复制链接]
6739|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hustzidong|  楼主 | 2010-9-21 20:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hustzidong 于 2011-4-21 19:19 编辑

  针对ARM Cortex-M3和Cortex-M0处理器的一套完全Free、Open的开发工具集CooCox Tools,包括:    实时操作系统CoOS:专门针对ARM Cortex M3、ARM Cortex M0处理器而设计的嵌入式实时多任务操作系统。
   集成开发环境CoIDE:集成了CoBuilder和CoDebugger,适用于编译、烧写及调试Cortex-M3、Cortex-M0处理器嵌入式系统应用。该平台简单易用,能帮助您快速创建一个可运行的嵌入式程序。它为ARM Cortex M系列的开发者提供了一套完整的集成开发环境,包括工程管理、编辑、编译工具、调试器及一个开发者可以分享自己的代码和看法的交流平台。目前支持市面上常见的Cortex-M3、Cortex-M0处理器。
   集成开发环境CoBuilder:专门针对ARM Cortex M3、ARM Cortex M0芯片的,基于组件的嵌入式开发平台。所有的启动代码、外围库、驱动、OS等均被抽象为组件,面向组件的开发方式让嵌入式开发如同搭积木般快捷。用户可以通过CoBuilder上传、下载、交易组件和例程,还可以通过CoBuilder获得ARM Cortex M3/M0开发的所有资料:手册、例程、应用**以及评论等。我们希望将CoBuilder打造成嵌入式开发者的网络交流平台。
    调试器CoDebugger:专门为ARM Cortex M3、ARM Cortex M0而设计的一款免费调试工具,支持目前主流的Cortex M3 、Cortex M0芯片。用户可选择在FLASH或在RAM中调试目标板上的程序。CoDebugger集成了可定制的eclipse风格的图形化用户界面和最常用的调试功能,包括启动,停止调试,程序执行,设置断点,观察变量、表达式、反汇编、内存窗口,单步等等。
    仿真器CoLink:一款针对于ARM Cortex M3、ARM Cortex M0的JTAG、SW硬件调试器。CoDebugger及CoFlash直接支持Colink。同时,Colink也支持其他第三方开发工具:IAR和MDK。

    Flash编程器CoFlash:Windows下针对Cortex M3、Cortex M0芯片的Flash编程软件,支持大部分Cortex M3、Cortex M0芯片。CoFlash除了有一个直观的传统的图形用户界面外,它还支持命令行模式。CoFlash配合Colink使用。另外,用户还能够定义自己的编程算法来支持更多的flash设备。
    以上工具的详细介绍见www.coocox.org,均可免费下载使用,功能仍在不断完善和扩展中,欢迎各位嵌入式爱好者试用并提出宝贵意见!

   目前Coocox支持市面上常见的各种Cortex-M3和Cortex-M0处理器,已经有了不少用户。

相关帖子

沙发
sxhhhjicbb| | 2010-11-19 22:50 | 只看该作者
支持,我看了一下源码,设计和比较合理,希望有一天可以达到vxworks的性能及组件数量

使用特权

评论回复
板凳
zero_up| | 2010-11-19 23:05 | 只看该作者
这个好!
国人也很厉害

使用特权

评论回复
地板
宇宙飞船| | 2010-11-20 00:01 | 只看该作者
楼主正在寻找做验用的白老鼠吧!
哪天,当这个IDE稳定成功以后,肯定会收费。
在没有共享基金的支持下,凭什么要别人免费做你的白老鼠?
坚决抵制中国货!

使用特权

评论回复
5
一级菜鸟| | 2010-11-20 00:09 | 只看该作者
楼主正在寻找做验用的白老鼠吧!
哪天,当这个IDE稳定成功以后,肯定会收费。
在没有共享基金的支持下,凭什么要别人免费做你的白老鼠?
坚决抵制中国货! ...
宇宙飞船 发表于 2010-11-20 00:01


飞船又犯抽了。。。

使用特权

评论回复
6
john_lee| | 2010-11-22 01:09 | 只看该作者
本帖最后由 john_lee 于 2010-11-22 01:27 编辑

虽然我并不赞同飞船的说法,但我觉得这个CoOS可能有些瑕疵。

这是CoOS中的一个函数(摘录自CoOS源码,本人一字未改):
 
/**
*******************************************************************************
* @brief      Pend for a mail  
* @param[in]  id       Event ID.  
* @param[in]  timeout  The longest time for writting mail.
* @param[out] perr     A pointer to error code.   
* @retval     NULL
* @retval     A pointer to mail accept.  
*
* @par Description
* @details    This function is called to wait for a mail.      
* @note
*******************************************************************************
*/
void* CoPendQueueMail(OS_EventID id,U32 timeout,StatusType* perr)
{
    P_ECB   pecb;
    P_QCB   pqcb;
    P_OSTCB curTCB;
    void*   pmail;
    if(OSIntNesting > 0)                /* If the caller is ISR               */
    {
        *perr = E_CALL;
        return NULL;
    }
#if CFG_PAR_CHECKOUT_EN >0
    if(id >= CFG_MAX_EVENT)         
    {
        *perr = E_INVALID_ID;           /* Invalid event id,return error      */
        return NULL;
    }
#endif
    pecb = &EventTbl[id];
#if CFG_PAR_CHECKOUT_EN >0
    if(pecb->eventType != EVENT_TYPE_QUEUE) /* The event type is not queue    */
    {
        *perr = E_INVALID_ID;
        return NULL;
    }
#endif
    if(OSSchedLock != 0)                /* Judge schedule is locked or not?   */
    {
        *perr = E_OS_IN_LOCK;           /* Schedule is locked,return error    */         
        return NULL;         
    }
    pqcb = (P_QCB)pecb->eventPtr;       /* Point at queue control block       */
  
    if(pqcb->qSize != 0)            /* If there are any messages in the queue */
    {
        /* Extract oldest message from the queue                              */
        pmail = *(pqcb->qStart + pqcb->head);   
        pqcb->head++;                   /* Update the queue head              */
        pqcb->qSize--;          /* Update the number of messages in the queue */  
        if(pqcb->head == pqcb->qMaxSize)/* Check queue head                   */
        {
            pqcb->head = 0;
        }
        *perr = E_OK;
        return pmail;                   /* Return message received            */
    }
    else                                /* If there is no message in the queue*/
    {
        curTCB = TCBRunning;
        if(timeout == 0)                /* If time-out is not configured      */
        {
            /* Block current task until the event occur                       */
            EventTaskToWait(pecb,curTCB);
            
            /* Have recived message or the queue have been deleted            */
            pmail = curTCB->pmail;              
            curTCB->pmail = NULL;
            *perr = E_OK;
            return pmail;               /* Return message received or NULL    */
        }
        else                            /* If time-out is configured          */
        {
            OsSchedLock();
            
            /* Block current task until event or timeout occurs               */           
            EventTaskToWait(pecb,curTCB);      
            InsertDelayList(curTCB,timeout);
            OsSchedUnlock();
            if(curTCB->pmail == NULL)   /* If time-out occurred               */
            {
                *perr = E_TIMEOUT;
                return NULL;
            }
            else                        /* If event occured                   */
            {
                pmail = curTCB->pmail;
                curTCB->pmail = NULL;
                *perr = E_OK;
                return pmail;           /* Return message received or NULL    */
            }   
        }
    }
}
这个函数中,pqcb的head, qSize应该属于临界资源,但我没有看到任何保护这些资源的机制。

可以想象一下,一个任务(A)执行到了这一步:

        pqcb->qSize--;
假设qSize的当前值为2,当qSize的值从RAM中装载到寄存器后,这时出现了一个中断,这个中断READY了另外一个任务(B),而这个任务(B)又执行了对此队列的post mail动作,在那里,qSize被+1变为了3, 当调度器将CPU重新交给了任务(A)时,任务(A)并不知道qSize在RAM中的值已经发生了变化,而继续用已经装载到寄存器中的旧值2进行-1, 得到了一个值1(当然这是错误的),并且写回到qSize中。

系统将在此后的某个时刻崩溃。

使用特权

评论回复
7
ejack| | 2010-11-22 07:13 | 只看该作者
原来是武大郎搞的……

整页都宣称free、open,却只字不提遵循何种协议。典型的商人发家期……

使用特权

评论回复
8
hustzidong|  楼主 | 2010-12-19 18:58 | 只看该作者
4# 宇宙飞船

是否收费,用历史来证明吧。

使用特权

评论回复
9
Simon21ic| | 2010-12-20 02:36 | 只看该作者
国产的还是支持一下,做得好的话,为什么不能收费?

使用特权

评论回复
10
天凉好个秋| | 2010-12-21 18:02 | 只看该作者
科技无国界,何以用国产分类?

软件有好坏,用者自己知,

试用了一下,发现coocox的确好,尤其是自动生成驱动代码方面,大大减少了输入代码的工作

使用特权

评论回复
11
hustzidong|  楼主 | 2010-12-23 08:55 | 只看该作者
谢谢支持! 您的支持是我们继续努力的动力!

使用特权

评论回复
12
ARM_Cortex| | 2011-1-18 11:29 | 只看该作者
7# ejack

你没看到这页吧http://www.coocox.org/policy.htm
CooCox CoOS is free and open-source, it is licensed under the Berkeley Software Distribution (BSD) and can be used in commercial applications under this license.
CooCox Colink, CoBuilder, CoDebugger and CoFlash are all free but not open-source, they can be downloaded, installed and used for free in non-commercial or commercial applications.


还有你可以看一下CooCox的商业模式,不是靠也没有考虑过靠卖软件赚钱。http://www.coocox.org/BusinessModel.htm

使用特权

评论回复
13
kiya_21| | 2011-2-21 15:25 | 只看该作者
  针对ARM Cortex-M3和Cortex-M0处理器的一套完全Free、Open的开发工具集CooCox Tools,包括:    实时操作系统CoOS:专门针对ARM Cortex M3、ARM Cortex M0处理器而设计的嵌入式实时多任务操作系统。
   集成开发环 ...
hustzidong 发表于 2010-9-21 20:34


楼主做的蛮好的,起码看上去挺像那么回事的。

使用特权

评论回复
14
hustzidong|  楼主 | 2011-4-6 16:15 | 只看该作者
Thanks!

使用特权

评论回复
15
lfjwfm| | 2011-4-7 22:30 | 只看该作者
支持并mark

使用特权

评论回复
16
hustzidong|  楼主 | 2011-4-20 21:27 | 只看该作者
好久没有更新CoOS了,这次主要是修正几个Bug,后续会添加一些针对M0和M3的新特色。


CooCox CoOS V1.1.4      4/20/2011

[CooCox CoOS-问题的解决]
修正:在创建任务的函数中,用户设置堆栈的大小和时间片的大小等数值超出范围时,系统出错的bug。
修正:修改信号量使能错位的问题,使能错位的bug。
修正:CoPEND类函数关于加锁不完整导致一些全局变量没有保护的bug。
修正:NULL、TRUE、FALSE等常量宏定义与其他厂商库中的相关变量定义冲突的bug

使用特权

评论回复
17
hustzidong|  楼主 | 2011-4-21 19:19 | 只看该作者
Colink plugin for MDK V1.3.1      4/21/2011
  • [Colink plugin-增强]
    • 增加:支持ST:
      STM32F100C4,STM32F100C6,STM32F100C8,STM32F100CB,STM32F100R4,STM32F100R6,STM32F100R8,STM32F100RB,
      STM32F100RC,STM32F100RD,STM32F100RE,STM32F100V8,STM32F100VB,STM32F100VC,STM32F100VD,STM32F100VE,
      STM32F100ZC,STM32F100ZD,STM32F100ZE,
      STM32F101C4,STM32F101C6,STM32F101C8,STM32F101CB,STM32F101R4,STM32F101R6,STM32F101R8,STM32F101RB,
      STM32F101RC,STM32F101RD,STM32F101RE,STM32F101RF,STM32F101T4,STM32F101T6,STM32F101T8,STM32F101TB,
      STM32F101V8,STM32F101VB,STM32F101VC,STM32F101VD,STM32F101VE,STM32F101VF,STM32F101VG,STM32F101ZC,
      STM32F101ZD,STM32F101ZE
      STM32F102C4,STM32F102C6,STM32F102C8,STM32F102CB,STM32F102R4,STM32F102R6,STM32F102R8,STM32F102RB,
      STM32F103RF,STM32F103RG,STM32F103VF,STM32F103VG,STM32F103ZF,STM32F103ZG,
      STM32F105R8,STM32F105RB,STM32F105RC,STM32F105V8,STM32F105VB,STM32F105VC
      Energy:
      EFM32G200F16,EFM32G200F32,EFM32G200F64,EFM32G210F128,EFM32G230F32,EFM32G230F64,EFM32G230F128,
      EFM32G280F32,EFM32G280F64,EFM32G280F128,EFM32G290F32,EFM32G290F64,EFM32G290F128
      NXP:
      LPC1224x101, LPC1224x121, LPC1225x301, LPC1225x321, LPC1226x301, LPC1227x301, LPC1759, LPC1767
    • 修复:大文件烧写失败的bug。
    • 修复:Luminary部分芯片不能下载和调试的bug
    • 修复:SAM3U和LPC17xx的部分RAM地址无法读写问题。
    • 增加:添加速度分析功能。
    • 增加:添加校验选项。(Nuvoton的芯片暂不支持)
    • 增强:提高下载和调试速度。

使用特权

评论回复
18
hustzidong|  楼主 | 2011-5-4 18:11 | 只看该作者
CooCox CoIDE V1.2.4      4/29/2011

  • [CooCox CoIDE-增强]
    • 增加:支持NGX,picoJTAG和KT-Link调试器
    • 增加:添加例子到工程中时,采用C语法解析树分析例子文件,提高正确率
    • 修复:CoIDE的workspace路径不能用户设定的bug
    • 修复:取消CoIDE正在生成帮助文档,关闭CoIDE后,CoIDE启动不了的bug
    • 修复:在某些机器上ST的芯片显示不全的bug
    • 修复:用户不能下载或调试luminary的芯片的bug
    • 修复:SAM3U和LPC17xx系列芯片部分RAM地址不能读写的bug

1# hustzidong

使用特权

评论回复
19
hustzidong|  楼主 | 2011-6-18 17:37 | 只看该作者
CooCox CoIDE V1.2.5      6/17/2011

[CooCox CoIDE-增强]
增加:支持新增芯片TI: LM3S2110,LM3S2276,LM3S2965,LM3S2B93,LM3S3748,LM3S3W26,LM3S5749,LM3S5B91
LM3S6432,LM3S6610,LM3S6918,LM3S8971,LM3S9792,LM3S9B90,LM3S9L97
NXP:LPC1763
增加:支持新唐原版Nu-Link,JTAGKey(FTDI兼容性设备)
增加:用户可以在CoIDE中调用J-Link的GDB程序进行下载和调试
修改:厂商名由Luminary改成TI
修改:更换上传/修改组件时使用的html编辑器
更新:GCC工具链升级

使用特权

评论回复
20
hustzidong|  楼主 | 2011-6-18 17:38 | 只看该作者
Colink plugin for MDK V1.3.2      6/17/2011

[Colink plugin-增强]
增加:支持TI:
LM3S2110,LM3S2276,LM3S2965,LM3S2B93,LM3S3748,LM3S3W26,LM3S5749,LM3S5B91
LM3S6432,LM3S6610,LM3S6918,LM3S8971,LM3S9792,LM3S9B90,LM3S9L97
NXP:LPC1763

增加:支持FTDI兼容性设备:KT-Link,NGX-USB-JTAG,picoJTAG,JTAGKey
修改:删除Nulink(COIDE和CoFlash已经支持新唐原版Nu-Link)
修复:M0芯片调试时寄存器界面存在错误信息的bug

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

251

帖子

1

粉丝