通過(guò)Open Project,選擇以.uvproj為后綴的文件,打開,即可轉(zhuǎn)換MDK工程為CoIDE工程。
現(xiàn)在這個(gè)功能還有一些限制,比如只支持一種配置模式,只能打開在MDK下打開過(guò)的工程(編譯需要.dep文件),涉及到編譯器的文件需要用戶手動(dòng)修改(MDK和CoIDE的編譯器不同,與編譯器相關(guān)的文件在轉(zhuǎn)換時(shí)沒有被拷貝)等。
但這只是一個(gè)嘗試和開始,我們可以期待這個(gè)功能將來(lái)越做越好。如果用戶在使用中有任何問(wèn)題和建議,歡迎聯(lián)系CooCox!
4. 關(guān)于RAM調(diào)試
CoIDE 1.3.0在build.xml文件中增加了Flash調(diào)試和RAM調(diào)試的選項(xiàng)。
Flash調(diào)試是默認(rèn)的,RAM調(diào)試則還需一些額外的設(shè)置。不同芯片設(shè)置方法也可能不同。
例如:
1)STM32F10X系列芯片
在cmsis_boot文件夾,system_stm32f10x.c文件,SystemInit()函數(shù)中,有這樣的語(yǔ)句
#ifdef VECT_TAB_SRAM
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
所以只需打開build.xml文件,選擇Debug in RAM,并在Defined Symbols中添加VECT_TAB_SRAM宏即可。
2)LPC17xx系列芯片
在cmsis_boot文件夾,system_LPC17xx.c文件,SystemInit()函數(shù)中,有這樣的語(yǔ)句
#if (__RAM_MODE__==1)
SCB->VTOR= 0x10000000 & 0x3FFFFF80;
#else
SCB->VTOR= 0x00000000 & 0x3FFFFF80;
#endif
所以只需選擇Debug in RAM,并在system_LPC17xx.c文件中加入語(yǔ)句#define
__RAM_MODE__ 1即可。
3)找不到如1)2)中語(yǔ)句的芯片如LM3S系列
選擇Debug in RAM后,在cmsis_boot文件夾,system_lm3s.c文件,SystemInit()函數(shù)中,添加語(yǔ)句
SCB->VTOR = 0x20000000 | 0x0; /* Vector Table Relocation in Internal SRAM. */
由于VTOR定義在core_cm3.h文件中,還需添加頭文件包含語(yǔ)句#include "core_cm3.h"。
中文版用戶手冊(cè)及PDF版用戶手冊(cè)也即將更新,敬請(qǐng)關(guān)注。
作者: Chocore 時(shí)間: 2011-9-21 16:52
標(biāo)題: 【重要說(shuō)明之二】CoIDE 1.3.0的J-link Edit Scripts,Other-adapter,及Include Paths
1.關(guān)于J-link Edit Scripts & Other-adapter
CoIDE 1.3.0中,J-link的調(diào)試啟動(dòng)腳本(包括復(fù)位方式,是否運(yùn)行到main)已經(jīng)固化到代碼里了,所以腳本編輯框是空的,用戶編輯腳本時(shí)只需填充GDB設(shè)置腳本。
CoIDE 1.3.0移除了調(diào)試配置中的Other-adapter項(xiàng)。該項(xiàng)是參照J-link的配置設(shè)置的,如果有需要,用戶可以將J-link項(xiàng)當(dāng)做Other-adpter項(xiàng)使用。
例如有用戶用Other-adpter實(shí)現(xiàn)了在CoIDE中使用LPC-link(LPCXpresso),詳情見http://www.coocox.org/Forum/topic.php?id=741
2. 關(guān)于Include Paths
有用戶反饋如果Include Paths中的文件不在工程目錄下,則手動(dòng)添加的包含路徑就不能保存。這是一個(gè)BUG。
避免這一BUG的方法是使用Add Linked File / Add Linked Folder功能(工程名處點(diǎn)擊右鍵,或點(diǎn)擊菜單欄的File),把想?yún)⑴c編譯的文件或文件夾鏈接進(jìn)來(lái)就行。
還有用戶反饋,Build工程時(shí),工程文件夾中的源文件會(huì)全部自動(dòng)編譯鏈接,從而出錯(cuò)。
下一版本的CoIDE會(huì)修復(fù)這兩個(gè)BUG,并添加從工程中移除文件但不刪除文件的功能。
有用戶對(duì)CooCox提出了Wishlist,你是不是也和他有類似的想法呢?歡迎提出你的問(wèn)題或建議!
你還可以加入CooCox工具群167693982 / CoOS群77814606參與交流討論。
PS:最新消息,CoIDE用戶手冊(cè)在線版已全部更新~
作者: tlk632 時(shí)間: 2011-9-24 23:41
沒用過(guò),嘗試一下
作者: Chocore 時(shí)間: 2011-9-28 18:54
標(biāo)題: 【總要有個(gè)規(guī)范才放心】開源許可證GPL、BSD、MIT、Mozilla、Apache和LGPL的區(qū)別
如先前所說(shuō),CooCox工具均是免費(fèi)的,其中開源的有CoOS和Colink / CoLinkEx硬件電路。
“免費(fèi)”和“開源”這樣的詞,總會(huì)讓人既躍躍欲試,又有所顧慮:真的可以隨意用?后續(xù)會(huì)不會(huì)有什么麻煩?商用也行嗎?
為了讓用戶完全放心,CooCox將規(guī)范用戶協(xié)議。新的協(xié)議即將發(fā)布,原始協(xié)議見http://www.coocox.com/CN/policy.htm
下面這篇文章轉(zhuǎn)載自CooCox新浪官博。
因CooCox用戶數(shù)及影響力越來(lái)越大,CooCox團(tuán)隊(duì)也逐漸提高了對(duì)軟件及代碼協(xié)議的重視。在收集整理的過(guò)程中,一些歸納好的信息和大家分享一下。
首先借用有心人士的一張相當(dāng)直觀清晰的圖來(lái)劃分各種協(xié)議:
以下是上述協(xié)議的簡(jiǎn)單介紹。
BSD開源協(xié)議
BSD開源協(xié)議是一個(gè)給予使用者很大自由的協(xié)議。基本上使用者可以“為所欲為”,可以自由的使用、修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。
但“為所欲為”的前提當(dāng)你發(fā)布使用了BSD協(xié)議的代碼,或則以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時(shí),需要滿足三個(gè)條件:
1. 如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來(lái)代碼中的BSD協(xié)議。
2. 如果再發(fā)布的只是二進(jìn)制類庫(kù)/軟件,則需要在類庫(kù)/軟件的文檔和版權(quán)聲明中包含原來(lái)代碼中的BSD協(xié)議。
3. 不可以用開源代碼的作者/機(jī)構(gòu)名字和原來(lái)產(chǎn)品的名字做市場(chǎng)推廣。
BSD協(xié)議鼓勵(lì)代碼共享,但需要尊重代碼作者的著作權(quán)。BSD由于允許使用者修改和重新發(fā)布代碼,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是對(duì)商業(yè)集成很友好的協(xié)議。而很多的公司企業(yè)在選用開源產(chǎn)品的時(shí)候都首選BSD協(xié)議,因?yàn)榭梢酝耆刂七@些第三方的代碼,在必要的時(shí)候可以修改或者二次開發(fā)。
Apache License 2.0
Apache License是著名的非盈利開源組織Apache采用的協(xié)議。該協(xié)議和BSD類似,同樣鼓勵(lì)代碼共享和尊重原作者的著作權(quán),同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)。需要滿足的條件也和BSD類似:
1. 需要給代碼的用戶一份Apache License。
2. 如果你修改了代碼,需要再被修改的文件中說(shuō)明。
3. 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來(lái)代碼中的協(xié)議,商標(biāo),專利聲明和其他原來(lái)作者規(guī)定需要包含的說(shuō)明。
4. 如果再發(fā)布的產(chǎn)品中包含一個(gè)Notice文件,則在Notice文件中需要帶有Apache License。你可以在Notice中增加自己的許可,但不可以表現(xiàn)為對(duì)Apache License構(gòu)成更改。
Apache License也是對(duì)商業(yè)應(yīng)用友好的許可。使用者也可以在需要的時(shí)候修改代碼來(lái)滿足需要并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售。
GPL
我們很熟悉的Linux就是采用了GPL、GPL協(xié)議和BSD, Apache License等鼓勵(lì)代碼重用的許可很不一樣。GPL的出發(fā)點(diǎn)是代碼的開源/免費(fèi)使用和引用/修改/衍生代碼的開源/免費(fèi)使用,但不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售。這也就是為什么我們能用免費(fèi)的各種linux,包括商業(yè)公司的linux和linux上各種各樣的由個(gè)人,組織,以及商業(yè)軟件公司開發(fā)的免費(fèi)軟件了。
GPL協(xié)議的主要內(nèi)容是只要在一個(gè)軟件中使用(“使用”指類庫(kù)引用,修改后的代碼或者衍生代碼)GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議,既必須也是開源和免費(fèi)。這就是所謂的“傳染性”。GPL協(xié)議的產(chǎn)品作為一個(gè)單獨(dú)的產(chǎn)品使用沒有任何問(wèn)題,還可以享受免費(fèi)的優(yōu)勢(shì)。
由于GPL嚴(yán)格要求使用了GPL類庫(kù)的軟件產(chǎn)品必須使用GPL協(xié)議,對(duì)于使用GPL協(xié)議的開源代碼,商業(yè)軟件或者對(duì)代碼有保密要求的部門就不適合集成/采用作為類庫(kù)和二次開發(fā)的基礎(chǔ)。
其它細(xì)節(jié)如再發(fā)布的時(shí)候需要伴隨GPL協(xié)議等和BSD/Apache等類似。
LGPL
LGPL是GPL的一個(gè)為主要為類庫(kù)使用設(shè)計(jì)的開源協(xié)議。和GPL要求任何使用/修改/衍生之GPL類庫(kù)的軟件必須采用GPL協(xié)議不同。LGPL 允許商業(yè)軟件通過(guò)類庫(kù)引用(link)方式使用LGPL類庫(kù)而不需要開源商業(yè)軟件的代碼。這使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫(kù)引用并發(fā)布和銷售。
但是如果修改LGPL協(xié)議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議。因此LGPL協(xié)議的開源代碼很適合作為第三方類庫(kù)被商業(yè)軟件引用,但不適合希望以LGPL協(xié)議代碼為基礎(chǔ),通過(guò)修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用。
GPL/LGPL都保障原作者的知識(shí)產(chǎn)權(quán),避免有人利用開源代碼復(fù)制并開發(fā)類似的產(chǎn)品。
MIT
MIT是和BSD一樣寬泛的許可協(xié)議,作者只想保留版權(quán),而無(wú)任何其他了限制。也就是說(shuō),你必須在你的發(fā)行版里包含原許可協(xié)議的聲明,無(wú)論你是以二進(jìn)制發(fā)布的還是以源代碼發(fā)布的。
MPL
MPL是The Mozilla Public License的簡(jiǎn)寫,是1998年初Netscape的 Mozilla小組為其開源軟件項(xiàng)目設(shè)計(jì)的軟件許可證。MPL許可證出現(xiàn)的最重要原因就是,Netscape公司認(rèn)為GPL許可證沒有很好地平衡開發(fā)者對(duì)源代碼的需求和他們利用源代碼獲得的利益。同著名的GPL許可證和BSD許可證相比,MPL在許多權(quán)利與義務(wù)的約定方面與它們相同(因?yàn)槎际欠?/font>OSIA 認(rèn)定的開源軟件許可證)。但是,相比而言MPL還有以下幾個(gè)顯著的不同之處:
◆ MPL雖然要求對(duì)于經(jīng)MPL許可證發(fā)布的源代碼的修改也要以MPL許可證的方式再許可出來(lái),以保證其他人可以在MPL的條款下共享源代碼。但是,在MPL 許可證中對(duì)“發(fā)布”的定義是“以源代碼方式發(fā)布的文件”,這就意味著MPL允許一個(gè)企業(yè)在自己已有的源代碼庫(kù)上加一個(gè)接口,除了接口程序的源代碼以MPL 許可證的形式對(duì)外許可外,源代碼庫(kù)中的源代碼就可以不用MPL許可證的方式強(qiáng)制對(duì)外許可。這些,就為借鑒別人的源代碼用做自己商業(yè)軟件開發(fā)的行為留了一個(gè)豁口。
◆ MPL許可證第三條第7款中允許被許可人將經(jīng)過(guò)MPL許可證獲得的源代碼同自己其他類型的代碼混合得到自己的軟件程序。
◆ 對(duì)軟件專利的態(tài)度,MPL許可證不像GPL許可證那樣明確表示反對(duì)軟件專利,但是卻明確要求源代碼的提供者不能提供已經(jīng)受專利保護(hù)的源代碼(除非他本人是專利權(quán)人,并書面向公眾免費(fèi)許可這些源代碼),也不能在將這些源代碼以開放源代碼許可證形式許可后再去申請(qǐng)與這些源代碼有關(guān)的專利。
◆ 對(duì)源代碼的定義
而在MPL(1.1版本)許可證中,對(duì)源代碼的定義是:“源代碼指的是對(duì)作品進(jìn)行修改最優(yōu)先擇取的形式,它包括:所有模塊的所有源程序,加上有關(guān)的接口的定義,加上控制可執(zhí)行作品的安裝和編譯的‘原本’(原文為‘Script’),或者不是與初始源代碼顯著不同的源代碼就是被源代碼貢獻(xiàn)者選擇的從公共領(lǐng)域可以得到的程序代碼!
◆ MPL許可證第3條有專門的一款是關(guān)于對(duì)源代碼修改進(jìn)行描述的規(guī)定,就是要求所有再發(fā)布者都得有一個(gè)專門的文件就對(duì)源代碼程序修改的時(shí)間和修改的方式有描述。
英文原文:http://www.mozilla.org/MPL/MPL-1.1.html
作者: Chocore 時(shí)間: 2011-10-13 15:59
標(biāo)題: 【學(xué)習(xí)筆記之Semihosting】CoIDE 1.3.1即將發(fā)布,新增支持Semihosting功能
CooCox將于下周發(fā)布CoIDE 1.3.1,除修復(fù)之前提過(guò)的部分BUG外,還將增加Semihosting等功能。
Ps:CoIDE中新唐庫(kù)已升級(jí)到最新版,新唐組件也已更新。點(diǎn)擊組件頁(yè)右上角刷新按鈕,有更新的組件右側(cè)會(huì)顯示Update,點(diǎn)擊即可更新。
下面是Semihosting學(xué)習(xí)筆記。
1、ARM公司對(duì)Semihosting的中文解釋是半主機(jī)機(jī)制。為什么叫半主機(jī)呢?主要是指應(yīng)用程序的代碼運(yùn)行在目標(biāo)系統(tǒng)上,當(dāng)需要類似PC平臺(tái)下的控制臺(tái)輸入輸出時(shí),會(huì)調(diào)用Semihosting去利用PC上的控制臺(tái)輸入輸出設(shè)備:如打開關(guān)閉文件,PC顯示器輸出,鍵盤輸入等等。
2、Semihosting在ADS1.2的開發(fā)環(huán)境下,只能在以下調(diào)試代理上運(yùn)行,ARMulator, RealMonitor, Multi-ICE以及Angle。這就是為什么周工的EasyJTAG不支持Semihosting的原理,因?yàn)樗粚儆谏鲜鏊姆N調(diào)試代理中的任何一種。
3、Semihosting是一段功能代碼,這段功能代碼主要運(yùn)行在PC上,并由調(diào)試工具上的固件來(lái)激活調(diào)用。而周工的EasyJTAG沒有實(shí)現(xiàn)這個(gè)激活調(diào)用功能。
4、對(duì)于開發(fā)用戶來(lái)說(shuō),Semihosting是目標(biāo)系統(tǒng)通過(guò)調(diào)用SWI
0x123456或 SWI 0xAB來(lái)調(diào)用的。前者ARM狀態(tài)下的專用操作號(hào),后者是THUMB狀態(tài)的專用操作號(hào)。當(dāng)開發(fā)者的軟硬件調(diào)試工具配置正確時(shí),可以正確執(zhí)行Semihosting功能。打個(gè)比方說(shuō),你在ARMulator下仿真指令
MOV
R1, 0x18
SWI
0x123456
ARMulator會(huì)正確終止你的程序執(zhí)行。
而在EasyJTAG下仿真時(shí),卻會(huì)跳入0x08的異常向量入口處。
Semihosting主要是針對(duì)I/O操作的,在嵌入式開發(fā)過(guò)程當(dāng)中,通過(guò)Semihosting,可以把輸入輸出定向到HOST上,利用HOST的輸入和輸出。
從用戶的角度來(lái)看,printf好像和普通的一樣,關(guān)鍵的區(qū)別在于printf的實(shí)現(xiàn)。一般的調(diào)試器都提供兩個(gè)版本的IO庫(kù),一個(gè)式標(biāo)準(zhǔn)的庫(kù),另外一個(gè)是支持Semihosting的庫(kù)。其實(shí)現(xiàn)有區(qū)別。下面以printf舉例說(shuō)明其原理:
支持Semihosting的printf的實(shí)現(xiàn)和標(biāo)準(zhǔn)的printf不同,支持Semihosting的printf用SWI指令來(lái)通知仿真器。仿真器在地址0x8處設(shè)置斷點(diǎn),但SWI指令執(zhí)行后,仿真器可以捕獲到該SWI指令。根據(jù)SWI的number來(lái)判斷這個(gè)SWI是不是Semihosting請(qǐng)求,如果是,再根據(jù)具體的Semihosting number響應(yīng)用戶的Semihosting請(qǐng)求,完成用戶的Semihosting請(qǐng)求后,返回到SWI的后面一條指令,繼續(xù)執(zhí)行。所以,對(duì)用戶來(lái)說(shuō),這是透明的。
/**********
文檔:《基于ARM的Semihosting的分析與實(shí)現(xiàn)》
作者: Chocore 時(shí)間: 2011-10-14 17:54
標(biāo)題: 【再上層樓】CooCox優(yōu)化了CoX——基于ARM Cortex-M處理器的設(shè)備驅(qū)動(dòng)統(tǒng)一接口
9月底,CooCox發(fā)布了CoX 2.0.0。
什么是CoX呢?CoX是基于ARM Cortex-M處理器的設(shè)備驅(qū)動(dòng)統(tǒng)一接口。從下面這張圖可以直觀地看出使用CoX的好處——方便移植。
另外,要使用CooCox提供的外圍驅(qū)動(dòng),即Repository頁(yè)DRIVER.COX標(biāo)簽下的組件,也需使用CoX。
CoX 1.0.0是2010年9月發(fā)布的,CooCox將它成功地移植到了多種MCU上,如LPC11xx, NUC1xx等等。
雖然CoX 1.0.0實(shí)現(xiàn)了外設(shè)的通用功能,但它還存在如下缺點(diǎn):
w 不支持中斷
w API功能不全面。只實(shí)現(xiàn)了一些通用功能,沒有充分實(shí)現(xiàn)特殊專用芯片的功能。
w 未囊括所有外設(shè)。使用某些外設(shè)時(shí),用戶需要借助其他廠商庫(kù),從而增大代碼量,甚至出現(xiàn)代碼邏輯沖突。
鑒于此,我們重寫了CoX。我們準(zhǔn)備了將近一年的時(shí)間,每定義一個(gè)接口前都閱讀并比較了數(shù)份芯片制造商手冊(cè)。新版本的CoX不僅解決了上面提到的問(wèn)題,并且添加了一些新功能。
CoX 2.0.0特征:
w 基于BSD協(xié)議,免費(fèi)&開源
w 統(tǒng)一標(biāo)準(zhǔn)的外設(shè)接口(功能,中斷……),包含強(qiáng)制和非強(qiáng)制接口,適用范圍更廣
w 滿足不同MCU私有特性,實(shí)現(xiàn)各類外設(shè)全功能API
w 輕量級(jí)接口,無(wú)損CodeSize和Speed
w 豐富的Doxygen規(guī)范幫助文檔,包含電路圖
詳情參見http://www.coocox.org/Cox.html
作者: uzufk 時(shí)間: 2011-10-18 22:53
看看這個(gè)是什么好東東!
作者: Chocore 時(shí)間: 2011-10-29 16:32
標(biāo)題: 【CoIDE換血升級(jí)】支持Semihosting,改版GCC/CoX,支持NUC122&更新芯唐組件及例程
日前,CooCox發(fā)布了CoIDE V1.3.1。與1.3.0相比,1.3.1又有哪些進(jìn)步呢?
1. 支持Semihosting功能
經(jīng)過(guò)簡(jiǎn)單三步配置,調(diào)試時(shí)函數(shù)printf()可輸出到Semihosting窗口,直觀方便~
1)在組件頁(yè)勾選Semihosting,在調(diào)試配置窗口勾選Enable Semihosting
2)在printf.c的Printchar函數(shù)中加入SH_SendChar(c);,包含頭文件"semihosting.h”
3)在需要的地方添加printf("Hello world!\n\r");,包含頭文件
Ps: 大部分芯片配置如上所述,少數(shù)芯片如Atmel的SAM3U系列配置略有不同,可View Semihosting組件的例程查看說(shuō)明。
2. 支持NUC122系列芯片,更新了Nuvoton NUC1xx,M051系列的廠商庫(kù)組件和例子
CoIDE對(duì)芯唐的支持進(jìn)一步加強(qiáng)。
3. CoX升級(jí)為新版本
繼CooCox發(fā)布CoX 2.0版本后,基于CoX的組件也將逐步更新?梢钥次仪耙黄訉(duì)CoX的介紹。
4. GCC編譯器替換為CooCox重編譯版本
如果說(shuō)編譯器是IDE的血液,那本次CoIDE可謂換血升級(jí)了。
隨著CodeSourcery被收購(gòu),為避免版權(quán)糾紛,GCC版本的替換勢(shì)在必行。CooCox重編譯的GCC編譯器經(jīng)過(guò)測(cè)試,工作穩(wěn)定可靠,用戶可放心使用。
除此之外,新版CoIDE還修正了之前提到的Include Paths的BUG。下個(gè)月計(jì)劃發(fā)布的版本將添加選擇工程內(nèi)參與編譯文件的功能,敬請(qǐng)期待~
欲下載CoIDE或了解更多信息,請(qǐng)?jiān)L問(wèn)http://www.coocox.org/cn/CooCox_CoIDE.html
作者: Chocore 時(shí)間: 2011-11-13 20:44
標(biāo)題: 【管腳配置與代碼自動(dòng)生成工具】CoSmart升級(jí)到1.2.0啦~新唐用戶不可錯(cuò)過(guò)
管腳配置與代碼自動(dòng)生成工具CooCox CoSmart目前已升級(jí)到V1.2.0。
CoSmart V1.2.0增強(qiáng)
-----------------------------
增加:對(duì)一些沒有引腳的外設(shè)如DMA,RCC等也支持配置功能
增加:支持NUC100,NUC120,NUC130,NUC140及M051系列的芯片
改善:支持保存引腳選擇,模塊配置為cos文件
改善:對(duì)耗時(shí)較長(zhǎng)的操作,顯示進(jìn)度條
改善:切換芯片或者配置文件后,清空source窗口中顯示的代碼
改善:勾選外設(shè)過(guò)多時(shí)界面較卡的問(wèn)題
更新:更新NUC1xx系列代碼模板,與Nuvoton的1.05.002 版本的廠商庫(kù)同步
CoSmart功能
--------------------
配置管腳復(fù)用設(shè)置
分析管腳配置沖突
指明I/O引腳特征
生成可用的C代碼
未來(lái)CoSmart會(huì)逐步添加對(duì)ST、NXP等廠商芯片的支持,敬請(qǐng)關(guān)注~!
CoSmart更多信息見http://www.coocox.org/CN/CoSmart.html
作者: Chocore 時(shí)間: 2011-11-21 11:04
標(biāo)題: 【開發(fā)者總動(dòng)員】CoX在Github上落戶啦~快加入CoX開源項(xiàng)目,暢享資源&助力開發(fā)
之前給大家介紹了CooCox歷時(shí)一年的嘔心瀝血之作CoX。
今天要帶來(lái)的好消息是CooCox在Github上創(chuàng)建了CoX倉(cāng)庫(kù),您可以通過(guò)Git系統(tǒng)方便地得到CoX相關(guān)資源或為CoX的發(fā)展出力。CoX的Github主頁(yè):https://github.com/coocox/cox
什么是Github和Git?
Github為使用Git版本控制系統(tǒng)的軟件開發(fā)項(xiàng)目提供基于互聯(lián)網(wǎng)的主機(jī)托管業(yè)務(wù)。
Git是由Github提供的快速、高效、分布式的版本控制系統(tǒng),適用于軟件協(xié)作開發(fā)。
與其他版本控制系統(tǒng)相比,Git的優(yōu)勢(shì):
1. 直接記錄快照,而非差異比較,十分方便分支及合并
2. 近乎所有操作都是本地執(zhí)行,無(wú)網(wǎng)絡(luò)也能提交更新,處理速度飛快
3. 時(shí)刻保持?jǐn)?shù)據(jù)完整性
4. 多數(shù)操作僅添加數(shù)據(jù),一旦提交快照后就不用擔(dān)心數(shù)據(jù)丟失
如何貢獻(xiàn)?
CooCox使用集成管理員工具流模式進(jìn)行開發(fā)。
由于 Git 允許使用多個(gè)遠(yuǎn)程倉(cāng)庫(kù),開發(fā)者便可以建立自己的公共倉(cāng)庫(kù),往里面寫數(shù)據(jù)并共享給他人,而同時(shí)又可以從別人的倉(cāng)庫(kù)中提取他們的更新過(guò)來(lái)。這種情形通常都會(huì)有個(gè)代表著官方發(fā)布的項(xiàng)目倉(cāng)庫(kù)(blessed repository),開發(fā)者們由此倉(cāng)庫(kù)克隆出一個(gè)自己的公共倉(cāng)庫(kù)(developer public),然后將自己的提交推送上去,請(qǐng)求官方倉(cāng)庫(kù)的維護(hù)者拉取更新合并到主項(xiàng)目。維護(hù)者在自己的本地也有個(gè)克隆倉(cāng)庫(kù)(integration manager),他可以將你的公共倉(cāng)庫(kù)作為遠(yuǎn)程倉(cāng)庫(kù)添加進(jìn)來(lái),經(jīng)過(guò)測(cè)試無(wú)誤后合并到主干分支,然后再推送到官方倉(cāng)庫(kù)。工作流程如下圖:
- 項(xiàng)目維護(hù)者可以推送數(shù)據(jù)到公共倉(cāng)庫(kù) blessed repository。 2. 貢獻(xiàn)者克隆此倉(cāng)庫(kù),修訂或編寫新代碼。
- 貢獻(xiàn)者推送數(shù)據(jù)到自己的公共倉(cāng)庫(kù) developer public。 4. 貢獻(xiàn)者給維護(hù)者發(fā)送郵件,請(qǐng)求拉取自己的最新修訂。
- 維護(hù)者在自己本地的 integration manger 倉(cāng)庫(kù)中,將貢獻(xiàn)者的倉(cāng)庫(kù)加為遠(yuǎn)程倉(cāng)庫(kù),合并更新并做測(cè)試。
- 維護(hù)者將合并后的更新推送到主倉(cāng)庫(kù) blessed repository。
作者: Chocore 時(shí)間: 2011-11-24 18:01
標(biāo)題: 【感恩Day,減負(fù)Day】CooCox CoAssistant,讓寄存器信息一目了然~
編程時(shí)還在隨時(shí)隨地開著User Manual文檔嗎?你out啦!
查個(gè)寄存器,還得在一份幾百頁(yè)的手冊(cè)中前找后找,累不累啊?難得今天感恩節(jié),從現(xiàn)在開始,給自己辛苦操勞的眼睛也減減負(fù)吧~
CooCox CoAssistant是一款簡(jiǎn)單實(shí)用的寄存器助手,專為進(jìn)行ARM Cortex M3和M0開發(fā)的嵌入式軟硬件工程師設(shè)計(jì)。
推薦理由:
1. 免費(fèi)輔助工具
CooCox家的系列工具都是免費(fèi)的(部分工具開源),這個(gè)就不多說(shuō)了。初次聽說(shuō)的筒子可以查看我以前的帖子或訪問(wèn)CooCox官網(wǎng)自行了解。
2. 有CoIDE集成版和在線版,雙重選擇
在CoIDE中選擇View > Peripherals 即可打開寄存器助手。
助手詳細(xì)介紹及在線版入口,見http://www.coocox.org/CN/CoAssistant.htm
3. 直觀的呈現(xiàn)寄存器細(xì)節(jié)信息
通過(guò)助手,你可以方便地獲取這些信息:
芯片所有寄存器組,寄存器組基地址及描述,寄存器組所有寄存器,單個(gè)寄存器的描述信息、訪問(wèn)類型、偏移值、復(fù)位值,及各位域的詳細(xì)信息。
單步調(diào)試時(shí),值有變化的寄存器還會(huì)以醒目的紅色顯示。
4. 支持多種方式修改寄存器值,且修改的值在硬件上實(shí)時(shí)反應(yīng)
1)修改寄存器的二進(jìn)制或十六進(jìn)制值,各位域值也將快速對(duì)應(yīng)轉(zhuǎn)換。
例如在調(diào)試暫停時(shí),我修改GPIOC_ODR的值0x00000240為0x00000200,反應(yīng)到硬件上PC6的LED燈熄滅,PC9的LED燈仍亮。
2)對(duì)有枚舉類型的位域,可以通過(guò)單擊位域or通過(guò)位域選項(xiàng)的下拉框,選擇該位域的值
CoAssistant目前支持Nuvoton,Energy Micro,和NXP的大部分芯片,下一版本的CoIDE還將添加對(duì)STM32F100系列及LPC11C1x系列芯片的支持,敬請(qǐng)關(guān)注~
觀望百次不如動(dòng)手一試,你還在猶豫什么呢?
作者: chinajiagege 時(shí)間: 2011-11-24 20:59
好東西就要支持下哈。
作者: Chocore 時(shí)間: 2011-12-5 16:41
標(biāo)題: 【開發(fā)必備】寄存器助手CoAssistant新增支持STM32F10x系列
感恩節(jié)給大家介紹了寄存器助手CooCox CoAssistant。
今天要帶來(lái)的好消息是——CoAssitant日前更新了Nuvoton的NUC1xx系列寄存器數(shù)據(jù),并添加了對(duì)STM32F10x系列芯片的支持。
查看CoAssistant目前支持的芯片 或 使用在線版CoAssitant
請(qǐng)?jiān)L問(wèn):http://www.coocox.org/CN/CoAssistant.htm
作者: jixzang 時(shí)間: 2011-12-7 10:53
謝謝樓主分享。
作者: Chocore 時(shí)間: 2011-12-10 16:50
標(biāo)題: 【永不止步】CoFlash支持Mini51及NUC122系列啦~新唐巡回研討會(huì)你報(bào)名了沒?
CooCox于本周發(fā)布了CoFlash V1.4.0。
新版CoFlash添加了對(duì)新唐Mini51系列及NUC122系列芯片的支持,具體有:
Mini51LAN, Mini51ZAN, Mini52LAN, Mini52ZAN, Mini54LAN, Mini54ZAN
NUC122LC1AN, NUC122LD2AN, NUC122SC1AN, NUC122SD2AN, NUC122ZC1AN, NUC122ZD2AN
此外,本次發(fā)布的CoFlash還進(jìn)一步改善了Flash燒寫速度,添加了復(fù)位模式選擇功能,歡迎體驗(yàn)~
從雙十二開始,新唐 NuMicro Mini51 技術(shù)巡回研討會(huì)將陸續(xù)于全國(guó)十個(gè)城市舉辦。會(huì)上將贈(zèng)送CooCox工具組特別制作的光盤和彩頁(yè),CoFans&新唐用戶都不可錯(cuò)過(guò)哦~活動(dòng)介紹見http://www.nuvoton.com/nuvotonMOSS/event/Mini51/Microsite.aspx。
欲了解CooCox更多信息及動(dòng)態(tài),請(qǐng)?jiān)L問(wèn)http://www.coocox.org/CN/。
作者: Chocore 時(shí)間: 2012-1-4 18:09
標(biāo)題: 【MDK調(diào)試插件】CoMDKPlugin已更新至V1.4.0,CoLinkEx固件及驅(qū)動(dòng)需升級(jí)
與CoFlash V1.4.0同時(shí)發(fā)布的還有MDK調(diào)試插件CoMDKPlugin V1.4.0。
新設(shè)備支持方面CoMDKPlugin與CoFlash同步,均添加了對(duì)如下芯片的支持:
Mini51LAN, Mini51ZAN, Mini52LAN, Mini52ZAN, Mini54LAN, Mini54ZAN
NUC122LC1AN, NUC122LD2AN, NUC122SC1AN, NUC122SD2AN, NUC122ZC1AN, NUC122ZD2AN
CoLinkEx方面,不僅提升了Flash燒寫速度,還新增支持在MDK中的trace功能。
從12月起,所有新版的CooCox軟件,支持下載和調(diào)試功能的,都要求CoLinkEx使用新版本的固件和驅(qū)動(dòng)了。
新版的固件和驅(qū)動(dòng)的下載頁(yè)面:http://www.coocox.com/CN/Colinkex.htm
固件更新方法如下:
1. 短接JP1。
2. 上電(ColinkEX連接到PC)。
3. 等待PC枚舉出卷標(biāo)為"CRP2 ENABLD"的可移動(dòng)磁盤,如果沒有出現(xiàn),請(qǐng)多按幾次復(fù)位鍵(BP1)或重新上電。
4. 把CRP2 DISABLD可移動(dòng)磁盤中的firmware.bin刪除。
5. 把下載好的CoLinkEx固件復(fù)制到此可移動(dòng)磁盤中。
6. 斷開JP1,重新上電后即可使用
推薦的驅(qū)動(dòng)更新方法如下:
1. 根據(jù)使用的Windows系統(tǒng)的版本下載驅(qū)動(dòng)
2. 卸載舊驅(qū)動(dòng)
3. 連上固件更新后的CoLinkEx
4. 安裝新版驅(qū)動(dòng)。
CoLinkEx安裝好后,設(shè)備管理器中可以看到CoLinkEx Debug Interface,USB Composite device和一個(gè)CooCox 虛擬串口。
作者: Chocore 時(shí)間: 2012-1-13 14:56
標(biāo)題: 【免費(fèi)驅(qū)動(dòng)源碼】CooCox已實(shí)現(xiàn)NUC122外設(shè)庫(kù)
之前給大家介紹過(guò)CooCox專注打造的CoX庫(kù)&驅(qū)動(dòng)(見前面的【再上層樓】CooCox優(yōu)化了CoX——基于ARM Cortex-M處理器的設(shè)備驅(qū)動(dòng)統(tǒng)一接口)。
除了GitHub開源項(xiàng)目,正在籌備中的組件平臺(tái)也是CooCox提供給開發(fā)者的又一大參與渠道。CooCox希望能通過(guò)組件平臺(tái)簡(jiǎn)化開發(fā)流程,方便更多開發(fā)者的加入。
目前CoX開發(fā)的主力還是CooCox工程師。上周,基于NUC122系列的CoX外設(shè)庫(kù)已經(jīng)實(shí)現(xiàn)。
在CoIDE中刷新NUC122的組件頁(yè),PERIPHERAL.COX分支即為NUC122的通用外設(shè)驅(qū)動(dòng),勾選即可用。
用戶還可以從http://www.coocox.org/COX.html獲取免費(fèi)驅(qū)動(dòng)源碼及配套文檔。
------------------
如果您有任何CooCox工具相關(guān)問(wèn)題和建議,歡迎到論壇或QQ群提(CooCox工具群167693982,CooCox_CoOS群77814606),在線答疑時(shí)間為周一到周五8:30~18:00。
【論壇近期FAQ】
CoIDE如何輸出浮點(diǎn)數(shù)
CoIDE如何設(shè)置heap size
作者: yang_gh 時(shí)間: 2012-1-30 15:50
用用看先
作者: Chocore 時(shí)間: 2012-3-18 22:57
標(biāo)題: 【FAQ】如何在CoIDE中使用C++
CooCox論壇上時(shí)不時(shí)有人問(wèn):CoIDE是否支持C++?
CoIDE默認(rèn)支持C語(yǔ)言,工程中的*.cpp或*.C(大寫的C,會(huì)默認(rèn)為cpp文件)不參與編譯。這讓不少慣用C++的用戶覺得可惜。
好在這個(gè)世界上解決問(wèn)題的方法永遠(yuǎn)比問(wèn)題多得多,感謝用戶Yury Kuchura的貢獻(xiàn)和分享,現(xiàn)在只需要幾處改動(dòng),CoIDE中就能使用C++了。步驟如下:
1. 修改build.xml文件,使*.cpp文件能被編譯
2. 修改link.ld文件,使連接時(shí)C++所需的段能被識(shí)別
/* Section Definitions */
SECTIONS
{
.text :
{
KEEP(*(.isr_vector .isr_vector.*))
*(.text .text.* .gnu.linkonce.t.*)
*(.glue_7t) *(.glue_7)
*(.rodata .rodata* .gnu.linkonce.r.*)
/* C++ Static constructors/destructors (eabi) */
. = ALIGN(4);
KEEP(*(.init))
. = ALIGN(4);
__preinit_array_start = .;
KEEP (*(.preinit_array))
__preinit_array_end = .;
. = ALIGN(4);
__init_array_start = .;
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
__init_array_end = .;
. = ALIGN(4);
KEEP(*(.fini))
. = ALIGN(4);
__fini_array_start = .;
KEEP (*(.fini_array))
KEEP (*(SORT(.fini_array.*)))
__fini_array_end = .;
/* C++ Static constructors/destructors (elf) */
. = ALIGN(4);
_ctor_start = .;
KEEP (*crtbegin.o(.ctors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*crtend.o(.ctors))
_ctor_end = .;
. = ALIGN(4);
KEEP (*crtbegin.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*crtend.o(.dtors))
} > rom
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > rom
…
…
/* stack section */
.co_stack (NOLOAD):
{
. = ALIGN(8);
*(.co_stack .co_stack.*)
} > ram
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > rom
__exidx_end = .;
. = ALIGN(4);
_end = . ;
}
3. 修改啟動(dòng)代碼,使構(gòu)造和析構(gòu)函數(shù)能被正確調(diào)用
…
extern unsigned long __preinit_array_start;
extern unsigned long __preinit_array_end;
extern unsigned long __init_array_start;
extern unsigned long __init_array_end;
extern unsigned long _ctor_start;
extern unsigned long _ctor_end;
static void call_constructors(unsigned long *start, unsigned long *end) __attribute__((noinline));
static void call_constructors(unsigned long *start, unsigned long *end)
{
unsigned long *i;
void (*funcptr)();
for ( i = start; i < end; i++)
{
funcptr=(void (*)())(*i);
funcptr();
}
}
…
void Default_Reset_Handler(void)
{
…
/* Setup the microcontroller system. */
SystemInit();
//Initialize CoOS (in order the new/delete operators to work properly
//prior to calling constructors). Comment it out if you don't use CoOS!
CoInitOS();
//Call C++ global constructors
call_constructors(&__preinit_array_start, &__preinit_array_end);
call_constructors(&__init_array_start, &__init_array_end);
call_constructors(&_ctor_start, &_ctor_end);
/* Call the application's entry point.*/
main();
}
4. 在組件頁(yè)勾選C Library和Retarget printf,之后注釋掉printf.c文件中的如下語(yǔ)句,以避免重定義_impure_ptr
struct _reent *_impure_ptr = &r;
5. 在工程配置(Project configuration)中添加Linked Libraries libstdc++和libsupc++,它們可以從GCC tool chain的庫(kù)中找到
來(lái)源:
http://www.coocox.org/Forum/topic.php?id=730
http://www.coocox.org/Forum/topic.php?id=873
例程:
103vb_cpp.zip
(220.71 KB)
2012-3-18 22:57 上傳
點(diǎn)擊文件名下載附件
下載積分: 積分 -1
STM32103vb + CoIDE 1.3.1 + 閃燈
說(shuō)明——因CoIDE 1.4.0存在bug“修改build.xml文件后無(wú)法保存”,故使用CoIDE 1.3.1版本。此bug在新版CoIDE中將被修復(fù)。
歡迎大家常來(lái)CooCox論壇交流討論~
作者: zhengtiantong 時(shí)間: 2012-3-30 19:38
很好,很強(qiáng)大
作者: 100home 時(shí)間: 2012-4-2 22:26
及時(shí)雨
作者: Chocore 時(shí)間: 2012-4-10 10:14
標(biāo)題: 【與時(shí)俱進(jìn)】CoIDE 1.4.1支持Cortex M4和ARM GCC啦
Cortex M4芯片上市以來(lái),論壇上用戶要求CooCox支持M4的呼聲一直很高。經(jīng)過(guò)一段時(shí)間的奮戰(zhàn),在本月最歡樂(lè)的日子,CooCox發(fā)布了CoIDE 1.4.1版本,滿足了用戶的這一需求^_^
為了盡早支持M4,新版CoIDE沒有移植廠商庫(kù),所以在勾選包含啟動(dòng)代碼(startup code)的CMSIS BOOT和專用于M4的CMSIS core之后,用戶還需手動(dòng)從廠商庫(kù)添加需要的外設(shè)組件。
之后CooCox會(huì)逐步添加STM32F4的Peripheral components(外設(shè)組件)到Repository View,并添加其他的M4的芯片。目前STM32F4以外的M4芯片用戶可以選擇ARM (Manufacturers) ---> M4 (Chips)進(jìn)行開發(fā)。
M4芯片的FPU配置
編譯M4前,需選擇合適的FPU。工程配置(Project ---> configuration)中提供了三種選擇:無(wú)FPU,soft FPU ,hard FPU。默認(rèn)配置為soft FPU。
選擇使用FPU后,還需在程序中使能FPU模塊,否則程序運(yùn)行時(shí)會(huì)進(jìn)入hardfault錯(cuò)誤。
將如下代碼添加到啟動(dòng)代碼(如startup_stm32f4xx.c)的Default_Reset_Handler()函數(shù)中,main();之前,使能FPU:
*((volatile unsigned long *) 0xE000ED88) |= (0xF << 20);
或者
__asm(" LDR.W R0, =0xE000ED88\n"
" LDR R1, [R0]\n"
" ORR R1, R1, #(0xF << 20)\n"
" STR R1, [R0]");
除M4外,CoIDE 1.4.1新增的另一大亮點(diǎn)是對(duì)ARM GCC的支持。
ARM GCC是ARM官方新近推出的GCC編譯器,功能強(qiáng)大,推薦用戶使用。
編譯器設(shè)置方法:http://www.coocox.org/cn/CoIDE/Compiler_Settings.html
Colink和CoLinkEx調(diào)試器已支持STM32F4系列芯片,支持M4的CoFlash和MDK插件也即將發(fā)布,敬請(qǐng)關(guān)注~
作者: james_138139 時(shí)間: 2012-8-9 21:46
盡管用不到,還是要支持以下
作者: lsx435372 時(shí)間: 2012-10-10 18:20
看這樣不錯(cuò)啊
作者: jixzang 時(shí)間: 2012-10-23 14:41
不錯(cuò),謝謝樓主
作者: caipeng521 時(shí)間: 2012-12-7 07:56

作者: guluguluchui 時(shí)間: 2012-12-7 21:23
Coos 很好用 ,頂
作者: UltraBird 時(shí)間: 2012-12-11 23:50
不懂
作者: david-xia 時(shí)間: 2013-1-6 09:42
頂。。。。。。。。。。。。。。
作者: taxuelangzi110 時(shí)間: 2013-1-9 19:09
標(biāo)記一個(gè),呵呵。。
作者: loikey 時(shí)間: 2013-1-11 16:19
感覺很好用,試試看
作者: yxd201971 時(shí)間: 2013-1-17 10:48
了解一下
作者: jh_wang 時(shí)間: 2014-9-12 08:33
路過(guò) 看看
歡迎光臨 電子工程網(wǎng) (http://www.54549.cn/) |
Powered by Discuz! X3.4 |