星期六, 1月 21, 2006

採草莓


採草莓
Originally uploaded by 77shell.

星期二, 1月 10, 2006

FreeRTOS Memory operation

FreeRTOS的kernel主要有3個檔案。
1.   Tasks.c
2.   Queue.c
3.   List.c

三種記憶體操作方式
Scheme1. (heap_1.c)

當memory被allocated之後就不允許被free了。

非常試適合小系統使用,Ex: PIC, 8051。
某些條件下的system是可以使用這種memory的配置模式。
永遠不會執行function, vTaskDelete(), vQueueDelete,
也就是scheduler()開始之後不會有task劊造或刪除。
Scheme2.(heap_2.c)

用在一般的嵌入系統,可以動態的產生新的task, queue
相對也可以deletes task, queue.
Scheme3.(heap_3.c)

只是把標準malloc(), free()包裝起來而已。
 

星期二, 1月 03, 2006

Semaphore的使用

# Using a semaphore to get permission to access a printer.
可以把semaphore包裝(Encapsulate semaphore)在驅動printer的函數中,
Task-1呼叫該函數時並不會知道是否存取了semaphore.
Task-2也同時呼叫該函數時因為semaphore的已被Pend,
必須等待一段時間才能存取semaphore.

Pseudo code:
void Driver(char *string)
{
Acquire port's semaphore.
Send command to device.
if(GetSemaphore() != True)
{
Wait a while.
if(GetSemaphore() != True)
{
Release semaphore.
return (error code).
}
Release semaphore.
}
else
{
Release semaphore.
}


# Synchronization, I--> Unilateral rendezous.
II-> Bilateral rendezous.

星期日, 1月 01, 2006

舅舅的婚禮

喜宴結束後,大家回到家裡聊天..
2005家裡的大事,他終於結婚了!