Electoday 2025

ไมโครคอนโทรลเลอร์ => ARM Processors => Topic started by: tha on July 05, 2014, 08:37:21 AM

Title: stm32 Coocox CoOS
Post by: tha on July 05, 2014, 08:37:21 AM
ทำไปทำมามีความก้าวหน้า ก็เลยมาลองเล่น RTOS ดูบ้าง ตัวที่ลองก็ตามที่คุณ AppleIIe แนะนำคือ CoOS http://www.coocox.org/CoOS.htm (http://www.coocox.org/CoOS.htm) ดาวน์โหลด Coocox CoOS User's Guide มาอ่านก็พอจะเข้าใจบ้างเพราะเคยอ่าน RTX RTOS มาบ้างแล้ว คราวนี้ก็เลยดาวน์โหลดโปรแกรมตัวอย่างที่ใช้ GCC compiler กับ stm32f103rb มาลองศึกษาดู พอลอง compile ดู จะไม่ผ่านเกิด build fail ขึ้นตามรูป

(http://s11.postimg.org/sb681lxjj/Co_OS1.jpg) (http://postimg.org/image/sb681lxjj/)

ให้ไปที่ configulation -> output เปลี่ยนไดเรคทอรีของ path of excutable ไปเป็น folder ของตัวอย่างเรา (จะเห็นว่าเขาใช้บอร์ด ET-STM32F103RB ทำเป็นตัวอย่างนี้)

(http://s24.postimg.org/5w5nvcv0h/Co_OS2.jpg) (http://postimg.org/image/5w5nvcv0h/)

คราวนี้ลอง compile ก็จะ build fail อย่างนี้อีก

(http://s18.postimg.org/hmfa25q8l/Co_OS3.jpg) (http://postimg.org/image/hmfa25q8l/)

เนื่องจากฟังชั่น STREXB กับ STREXH ในไฟล์ core_cm3.c ไม่ได้แก้ใขให้เป็นตัวใหม่ ก็ต้องแก้ใขตามนี้ครับ

/**
* @brief  STR Exclusive (8 bit)
*
* @param  value  value to store
* @param  *addr  address pointer
* @return        successful / failed
*
* Exclusive STR command for 8 bit values
*/
uint32_t __STREXB(uint8_t value, uint8_t *addr)
{
   uint32_t result=0;
 
   //__ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
   __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
   return(result);
}

/**
* @brief  STR Exclusive (16 bit)
*
* @param  value  value to store
* @param  *addr  address pointer
* @return        successful / failed
*
* Exclusive STR command for 16 bit values
*/
uint32_t __STREXH(uint16_t value, uint16_t *addr)
{
   uint32_t result=0;
 
   //__ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
   __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
   return(result);
}


http://www.cesareriva.com/fix-registers-may-not-be-the-same-error/ (http://www.cesareriva.com/fix-registers-may-not-be-the-same-error/)

คราวนี้ก็ compile ผ่านแล้ว ตอนนี้ผมก็กำลังทำความเข้าใจกับรายละเอียดของโปรแกรมอยู่ ยังไม่ได้โหลดโปรแกรมเข้าบอร์ดเพราะบอร์ดผม RTC module มันพังอยู่คงต้องซื้อบอร์ดใหม่มาลอง
Title: Re: stm32 Coocox CoOS
Post by: thai_micro on July 05, 2014, 12:42:49 PM
สู้ๆ ครับ ได้ผลอย่างไร เอามาตีแผ่ ด้วยนะครับ
Title: Re: stm32 Coocox CoOS
Post by: man1400 on July 05, 2014, 05:45:29 PM
 :) :D
Title: Re: stm32 Coocox CoOS
Post by: tha on July 05, 2014, 08:53:10 PM
ต้องไปทำงานหาเงินมาซื้อบอร์ดใหม่ก่อน  ดูแล้วไม่ยากอ่านให้เข้าใจก่อน(แต่ก็เข้าใจยากเหมือนกัน พอดีผมอ่าน cmsis rtos 2 เล่มในนี้มาก่อนก็เลยพอจะเข้าใจ แต่ก็ไม่แน่ไปทำงานอาจมีลืม) ถ้าใครมีบอร์ด ET-STM32F103RB ก็ลองโปรแกรมดูผลได้บอร์ดเดียวกัน ไม่น่าจะมีปัญหา  ;D
Title: Re: stm32 Coocox CoOS
Post by: mculover on July 05, 2014, 10:58:32 PM
ขอฝากข้อมูลไว้เพื่อตัดสินใจครับ

เท่าที่เคยเช็คใน Supported Devices
CooCox ไม่รองรับชิบตัวใหม่ๆ เช่น Cortex-M4 โดยเฉพาะค่าย ST มี Cortex-M3 อย่างเดียว ไม่มี Cortex-M0
ของ NXP ยังมี Cortex-M0 / Cortex-M3 แต่ก็ไม่มี Cortex-M4 เหมือนกัน

ถ้าจะใช้ยาวๆ มีทางเลือกที่ยืดหยุ่นมากกว่า ไม่แนะนำ
ให้ไปเล่น FreeRTOS หรือ ChibiOS จะปลอดภัยกว่าครับ
Title: Re: stm32 Coocox CoOS
Post by: AppleIIe on July 06, 2014, 08:54:19 AM
ขอให้กำลังใจในความพยายามที่จะศึกษาครับ
นับว่าท่านได้ก้าวข้ามความลำบากไปบ้างแล้ว (แต่อย่าเพิ่งย่ามใจนะ ยังมีอะไรซ่อนอยู่อีก) และคงไปสู่ความสำเร็จในไม่ช้า
ซึ่งก็ถือเป็นการเริ่มต้นที่ดี

อย่าลืมว่า CooCox CoOS เพิ่งจะมีมาไม่นานนัก มีการปรับปรุงแก้ไขไม่มาก แก้ bug กันมาโดยตลอด ( API ไม่ค่อยมีเพิ่ม Kernel ไม่ค่อยเปลี่ยน ) (ตั้งแต่  V1.0 - August 11 , 2009 http://www.coocox.org/CoOSGuide/CoOSUpdates.htm )  ดังนั้นคิดเห็นว่ามันจะยังไม่สลับซับซ้อนมากนัก
(หากจะเทียบกับตัวอื่นๆ ที่มีมาก่อนหลายปีมาแล้ว บางตัวมากกว่า 10 ปี) ซึ่งอาจจะยังไม่ทำให้ท่านไม่ท้อไปเสียก่อน หากไปเริ่มต้นกับตัวอื่นๆท่านอาจหมดแรงเสียก่อนในการอ่านเอกสารกองโต (ทั้ง API ที่มีมากมาย , Example ของแต่ละเรื่อง รวมไปถึงการตั้งค่าอีกไม่น้อย) แต่โดยหลักๆที่ท่านควรทำความเข้าใจคือ Concept ของ RTOS หากเข้าใจได้ทะลุแล้ว จะเป็นพื้นฐานที่ท่านจะไปสู่ตัวอื่นๆได้โดยไม่ยาก และไม่ต้องไปยึดติดกับตัวหนึ่งตัวใด (ซึ่งแต่ละตัวย่อมมีข้อดีและข้อเสียของมันทั้งในเรื่องทาง Technic , ค่าใช้จ่ายและเวลาในการศึกษา) ซึ่งแม้แต่ CooCox OS ก็น่าจะยังตอบโจทย์ทั่วๆไปได้อยู่ แม้อาจจะมีข้อจำกัดอยู่บ้าง แต่ก็คิดเห็นว่าเป็นการเริ่มต้นเรื่อง RTOS ที่ดีพอสมควร

ต่อจากนี้อย่างน้อยข้อมูลที่ท่านทำเป็นร่องรอยทิ้งไว้ ย่อมมีประโยชน์ต่อผู้คนภายหลังที่อาจจะนำไปศึกษาต่อ จะได้ไม่ต้องหลงทางกันไปอีก ทำให้เขาเหล่านั้นที่จะลงมือทำตามหลังจากนี้ จะได้มีข้อมูลในการเริ่มต้นทำ เพราะกว่าจะสำเร็จได้ มันต้องมีจุดเริ่มต้นเสมอ
Title: Re: stm32 Coocox CoOS
Post by: tha on July 06, 2014, 03:37:54 PM
เคยเริ่มต้น RTOS กับ chibiOS กับบล๊อกของคูณ mculover นั่นแหละ แต่ไม่เป็น makefile พอไม่ได้จับไปนานๆก็ลืม ไปต่อไม่เป็นเพราะผมไม่ได้เรียนโปรแกรมเมอร์มาโดยตรง ใจก็อยากศึกษา chibiOS แบบจริงจังเหมือนกันเพราะมีตัวอย่างและเอกสารให้ พอศึกษาอย่างอื่นด้วยก็ไปไม่ไหว ผมก็เพิ่งเริ่มต้นยังไม่ชำนาญยังไม่รู้ว่าตัวไหนดีที่สุด แต่จะพยายามศึกษา CoOS ให้ชำนาญไปสักตัวก่อน(แค่นี้ก็เป็นปลื้มแล้ว) เพราะดูแล้วไม่ค่อยยากสักเท่าไหร่และก็เป็นตัวฟรีใช้กับ CoIDE ได้(เคยศึกษา RTX and CMSIS RTOS มาแล้วแต่ไม่ได้เอาไปใช้งาน)
CoOS ก็มีคนเอาไปใช้กับ stm32f4discovery ได้นะครับ มีตัวอย่างให้ด้วย http://www.mikrocontroller.net/topic/274191 (http://www.mikrocontroller.net/topic/274191)
โปรเจ็ค Mini-STM32 WAVE Audio Player ก็น่าสนใจครับมีตัวอย่างให้ด้วย http://projectproto.blogspot.com/2010/06/mini-stm32-wave-audio-player.html (http://projectproto.blogspot.com/2010/06/mini-stm32-wave-audio-player.html)
Title: Re: stm32 Coocox CoOS
Post by: wlasoi on July 06, 2014, 05:40:45 PM
ผมชอบ http://www.tnkernel.com  ง่ายดี .. สารพัด MCU มีทุกค่ายดังๆ ..  ;D
Title: Re: stm32 Coocox CoOS
Post by: mculover on July 06, 2014, 06:17:36 PM
Quote from: tha on July 06, 2014, 03:37:54 PM
เคยเริ่มต้น RTOS กับ chibiOS กับบล๊อกของคูณ mculover นั่นแหละ แต่ไม่เป็น makefile พอไม่ได้จับไปนานๆก็ลืม ไปต่อไม่เป็นเพราะผมไม่ได้เรียนโปรแกรมเมอร์มาโดยตรง ใจก็อยากศึกษา chibiOS แบบจริงจังเหมือนกันเพราะมีตัวอย่างและเอกสารให้ พอศึกษาอย่างอื่นด้วยก็ไปไม่ไหว ผมก็เพิ่งเริ่มต้นยังไม่ชำนาญยังไม่รู้ว่าตัวไหนดีที่สุด แต่จะพยายามศึกษา CoOS ให้ชำนาญไปสักตัวก่อน(แค่นี้ก็เป็นปลื้มแล้ว) เพราะดูแล้วไม่ค่อยยากสักเท่าไหร่และก็เป็นตัวฟรีใช้กับ CoIDE ได้(เคยศึกษา RTX and CMSIS RTOS มาแล้วแต่ไม่ได้เอาไปใช้งาน)
CoOS ก็มีคนเอาไปใช้กับ stm32f4discovery ได้นะครับ มีตัวอย่างให้ด้วย http://www.mikrocontroller.net/topic/274191 (http://www.mikrocontroller.net/topic/274191)
โปรเจ็ค Mini-STM32 WAVE Audio Player ก็น่าสนใจครับมีตัวอย่างให้ด้วย http://projectproto.blogspot.com/2010/06/mini-stm32-wave-audio-player.html (http://projectproto.blogspot.com/2010/06/mini-stm32-wave-audio-player.html)

ผมก็ไม่ได้ใช้ makefile นะครับ ใช้ไม่เป็นเหมือนกัน ในบทความผมให้ RIDE หรือ Eclipse จัดการให้ ส่วน STM32F4Discovey ผมไม่ทราบจริงๆ แต่ดูใน Support Device แล้วไม่มี
Title: Re: stm32 Coocox CoOS
Post by: tha on July 07, 2014, 08:29:05 AM
Quoteผมก็ไม่ได้ใช้ makefile นะครับ ใช้ไม่เป็นเหมือนกัน ในบทความผมให้ RIDE หรือ Eclipse จัดการให้ ส่วน STM32F4Discovey ผมไม่ทราบจริงๆ แต่ดูใน Support Device แล้วไม่มี
อยากรู้เรื่องจังแต่ไม่มีบัตรเครดิต จะไปทำงานที่เชียงใหม่แล้วคงไม่ได้โพสต์อีกหลายวัน  :)
Title: Re: stm32 Coocox CoOS
Post by: mculover on July 07, 2014, 04:09:49 PM
Quote from: tha on July 07, 2014, 08:29:05 AM
Quoteผมก็ไม่ได้ใช้ makefile นะครับ ใช้ไม่เป็นเหมือนกัน ในบทความผมให้ RIDE หรือ Eclipse จัดการให้ ส่วน STM32F4Discovey ผมไม่ทราบจริงๆ แต่ดูใน Support Device แล้วไม่มี
อยากรู้เรื่องจังแต่ไม่มีบัตรเครดิต จะไปทำงานที่เชียงใหม่แล้วคงไม่ได้โพสต์อีกหลายวัน  :)

บทความเรื่อง Eclipse อ่านได้จากบล๊อกเลยครับ

ส่วนหนังสือใน Play Store ไม่จำเป็นต้องใช้บัตรเครดิต ใช้บัตร ATM ที่เป็นเดบิตการ์ด มีตรา VISA หรือ MASTER CARD ก็สมัครได้ครับ
Title: Re: stm32 Coocox CoOS
Post by: tha on July 07, 2014, 07:04:17 PM
Quoteส่วนหนังสือใน Play Store ไม่จำเป็นต้องใช้บัตรเครดิต ใช้บัตร ATM ที่เป็นเดบิตการ์ด มีตรา VISA หรือ MASTER CARD ก็สมัครได้ครับ
ขอบคุณครับ พอดีผมไม่มีบัตรอะไรเลย จะลองให้เพื่อนที่เชียงใหม่ที่มีบัตรโหลดให้ครับ(มาถึงเจียงใหม่แล้วพอดีโรงแรมเขามีวายฟาย ไม่ขาดการติดต่อ แต่ไม่มีบอร์ด)  :)