ทำไปทำมามีความก้าวหน้า ก็เลยมาลองเล่น 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 มันพังอยู่คงต้องซื้อบอร์ดใหม่มาลอง
สู้ๆ ครับ ได้ผลอย่างไร เอามาตีแผ่ ด้วยนะครับ
:) :D
ต้องไปทำงานหาเงินมาซื้อบอร์ดใหม่ก่อน ดูแล้วไม่ยากอ่านให้เข้าใจก่อน(แต่ก็เข้าใจยากเหมือนกัน พอดีผมอ่าน cmsis rtos 2 เล่มในนี้มาก่อนก็เลยพอจะเข้าใจ แต่ก็ไม่แน่ไปทำงานอาจมีลืม) ถ้าใครมีบอร์ด ET-STM32F103RB ก็ลองโปรแกรมดูผลได้บอร์ดเดียวกัน ไม่น่าจะมีปัญหา ;D
ขอฝากข้อมูลไว้เพื่อตัดสินใจครับ
เท่าที่เคยเช็คใน Supported Devices
CooCox ไม่รองรับชิบตัวใหม่ๆ เช่น Cortex-M4 โดยเฉพาะค่าย ST มี Cortex-M3 อย่างเดียว ไม่มี Cortex-M0
ของ NXP ยังมี Cortex-M0 / Cortex-M3 แต่ก็ไม่มี Cortex-M4 เหมือนกัน
ถ้าจะใช้ยาวๆ มีทางเลือกที่ยืดหยุ่นมากกว่า ไม่แนะนำ
ให้ไปเล่น FreeRTOS หรือ ChibiOS จะปลอดภัยกว่าครับ
ขอให้กำลังใจในความพยายามที่จะศึกษาครับ
นับว่าท่านได้ก้าวข้ามความลำบากไปบ้างแล้ว (แต่อย่าเพิ่งย่ามใจนะ ยังมีอะไรซ่อนอยู่อีก) และคงไปสู่ความสำเร็จในไม่ช้า
ซึ่งก็ถือเป็นการเริ่มต้นที่ดี
อย่าลืมว่า 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 ที่ดีพอสมควร
ต่อจากนี้อย่างน้อยข้อมูลที่ท่านทำเป็นร่องรอยทิ้งไว้ ย่อมมีประโยชน์ต่อผู้คนภายหลังที่อาจจะนำไปศึกษาต่อ จะได้ไม่ต้องหลงทางกันไปอีก ทำให้เขาเหล่านั้นที่จะลงมือทำตามหลังจากนี้ จะได้มีข้อมูลในการเริ่มต้นทำ เพราะกว่าจะสำเร็จได้ มันต้องมีจุดเริ่มต้นเสมอ
เคยเริ่มต้น 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)
ผมชอบ http://www.tnkernel.com ง่ายดี .. สารพัด MCU มีทุกค่ายดังๆ .. ;D
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 แล้วไม่มี
Quoteผมก็ไม่ได้ใช้ makefile นะครับ ใช้ไม่เป็นเหมือนกัน ในบทความผมให้ RIDE หรือ Eclipse จัดการให้ ส่วน STM32F4Discovey ผมไม่ทราบจริงๆ แต่ดูใน Support Device แล้วไม่มี
อยากรู้เรื่องจังแต่ไม่มีบัตรเครดิต จะไปทำงานที่เชียงใหม่แล้วคงไม่ได้โพสต์อีกหลายวัน :)
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 ก็สมัครได้ครับ
Quoteส่วนหนังสือใน Play Store ไม่จำเป็นต้องใช้บัตรเครดิต ใช้บัตร ATM ที่เป็นเดบิตการ์ด มีตรา VISA หรือ MASTER CARD ก็สมัครได้ครับ
ขอบคุณครับ พอดีผมไม่มีบัตรอะไรเลย จะลองให้เพื่อนที่เชียงใหม่ที่มีบัตรโหลดให้ครับ(มาถึงเจียงใหม่แล้วพอดีโรงแรมเขามีวายฟาย ไม่ขาดการติดต่อ แต่ไม่มีบอร์ด) :)