2010年10月25日 星期一

16W羊膜穿刺柯滄銘

早早就預約滿16週後要去作羊膜穿刺。雖然未達高齡,第一孕期唐氏症篩檢結果機率也好幾千分之一,就連產檢醫師也沒主動建議我去作,只是語帶保留地說:如果擔心就去作沒關係。由於家人多持反對態度,自己又信心不足,直到檢查前一天都還在猶豫,拚命找理由說服自己。後來上網找了許多有關羊膜穿刺的資料,也看了很多網友經驗分享,我知道以目前醫療技術,羊穿是安全性很高的一種產檢,只要找對醫生,就不用過度擔心。我選擇去柯滄銘婦產科作羊穿,早有耳聞他的快、狠、準穿刺技術是公認的一流,連我的產檢醫師聽到我要作羊穿,也直接問我是不是去柯滄銘那裡。

羊膜穿刺當天,我電話預約掛號是下午3點20,我一直問護士需要下午門診時間一開始就去現場排隊嗎?因為網路上許多媽媽都強烈建議要提早到現場用健保卡排隊掛號,以免等太久,但是護士說不用,就照他幫我掛的時間去即可。於是當天我只提早10分鐘到,填完資料約再等10分鐘就輪到我了。當天是週六,理應人很多才對,但是我到現場發現人超少,只有2-3對夫妻在等。跟網路上說的完全不一樣,櫃檯掛完號後要先付清費用才作檢查,總共7850元。

進診間後,護士稍作說明羊膜穿刺是針對染色體作檢查,我只問她:作完要在家裡躺個三天嗎?護士回問我,羊膜穿刺就像抽血一樣,你抽血會在家裡躺三天嗎?我懂她的意思,就是我想太多啦!

躺在檢查床上後,老公可以陪同進去,護士再解說一次作羊膜穿刺是很安全的,一直教我放輕鬆,越放輕鬆越不會痛。柯醫師進來後,先照超音波,告知我懷孕週數、胎兒性別、體重身長、預產期後,護士開始在肚皮上塗碘酒消毒,他們會一直跟你聊天,轉移你的注意力,我只記得醫師下針時說:肥胖是一切疾病的根源。我想他會這麼說是因為:我太胖啦! 他可能很少看過才16週就這麼胖的孕婦,醫師一直說並不是媽媽吃多少,胎兒就吸收多少。雖然我眼前有液晶螢幕可看到抽羊水過程,但是我根本無心在看,我怕越看越緊張,好像不到一分鐘就抽完羊水,我又問一次醫師,需要在家裡躺個三天休息嗎?醫師說不用,還一派輕鬆地叫我去逛街。護士有提醒不要提重物,但可以抱小孩,他說抱小孩用腹肌肌肉,跟子宮無關。

整個過程連同等待時間約莫30分鐘,真的不覺得痛,只覺得內褲被碘酒黏在肚皮上,有點癢。建議穿深色衣褲,因為會塗很多碘酒在肚皮上。離開診所時還不到四點,跟我預計要花費的時間快很多。

護士說報告約要7-10個工作天才會出來,我真的等了2週才等到報告,收到報告前1-2天,如果無異常現象,診所會先用手機簡訊通知,短短幾個字-「正常男性染色體」,讓我一解等報告時的焦慮。

2010年10月21日 星期四

寫驅動程式的工作流程

常聽別人說寫驅動程式很簡單,但自己卻偶而才有這種感覺,因此整理至今為止,
在寫驅動程式可能需要注意,檢查的部份,若有新的心得再繼續更新修正與補充。

standard operating procedure(sop), work flow to write a device driver:

hardware
1. power on? reset timing sequence. study device spec, platform cpu/soc spec.
2. bus interface: host and device part, study bus spec
3. clock for device or device interface bus, study bus spec
4. power pin voltage in device datasheet spec?, study device spec

use multimeter(三用電表) to check voltage, current or resistance
use oscilloscope (示波器) to study and check clock timing, signal sequence and timing,
use Logic Analyzer(邏輯分析儀) to study and check bus protocol

software

5. board initial code:
struct machine_desc in arch/arm/include/asm/mach/arch.h
for example:
arch/arm/mach-s3c64xx/mach-smdk6410.c
search for MACHINE_START()
.init_irq for irq initialization
.map_io for memory mapped address space
.init_machine for board initial startup code and some early driver power on

6. gpio setting or multi-function pin, study soc spec, device spec

gpio_request() to reserve our gpio pins to prevent other drivers' disturbance

memory mapped i/o chip select timing setting, study device read/write timing
and SoC memory mapped timing sequence, memory mapped address space
assignment (resource in platform device)

use iotable_init() to define .virtual, .pfn, .length, .type in struct map_desc
irq(interrupt pin) from gpio pin (use gpiolib and resource in platform device)

use gpio_to_irq(), set_irq_handler(), enable platform interrupt vectors
assign platform_driver name to corresponding platform_device

use platform_add_devices() to add platform device drivers

7. device power/reset sequence, study device spec

8. device initial command, study device spec, sample driver reference

9. device register read/write verify, device register interace
(memory mapped i/o chip select setting, bus procotol spec, device init
command)

10. device setting command, study device spec

11. device driver export device node in /dev, information in /sys, /proc

12. make device nodes in /dev, by driver or mknod
check device file major/minor number in ~linux/Documentation/devices.txt

13. library cross compile, setting matched to /dev path?
export CC=/path/to/cross/tools; ./configure --build=x86-linux,
--host=arm-linux

14. application cross compile, set correct link path to library(prefix)
export CC=/path/to/cross/tools; ./configure --build=x86-linux,
--host=arm-linux --with_lib=/path/to/cross/compiled/lib

inspired by jserv: 分享是最好的記憶

希望人人都會寫驅動程式,只要有硬體設備,Linux 都可以支援。