顯示具有 Mini2440開發版 標籤的文章。 顯示所有文章
顯示具有 Mini2440開發版 標籤的文章。 顯示所有文章

2013年10月15日 星期二

Cross compile bluez for ARM

下載與解壓縮toolschain:
http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.4.3.tgz
$ sudo tar xvf ~/arm-linux-gcc-4.4.3.tgz -C /
設定環境變數:
$ export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
$ export CROSS_COMPILE=arm-none-linux-gnueabi-
$ export ARCH=arm
編譯BlueZ 2.25:
下載與編譯bluez-libs:
$ mkdir bluez-2.25
$ cd bluez-2.25
$ wget http://bluez.sf.net/download/bluez-libs-2.25.tar.gz
$ tar zxvf bluez-libs-2.25.tar.gz
$ cd bluez-libs-2.25
$ ./configure --host=arm-none-linux-gnueabi --prefix=/home/renee/myfs/rootfs \
--enable-shared=no --enable-static=yes
$ make
$ make install

2013年9月10日 星期二

Linux中斷處理

由於IO設備的速度遠慢於CPU,如果CPU要等待IO動作完成並處理的話,效率是非常差的。透過interrupt機制可解決這問題,當IO動作完成後會發出一個asynchronous interrupt,CPU偵測後會暫停手邊的工作,然後喚醒ISR(interrupt service routine)執行,並處理I/O的請求。
  • interrupt的精神:
    1. interrupt handlers不能進入sleep,所以要避免呼叫叫到一些functions,內部潛在包含了進入sleep的function calls。
    2. 當interrupt handlers部分code要進入critical section,請用spinlocks上鎖,而不是mutexs。
    3. interrupt handlers不能與user space進行資料交換。
    4. interrupt handlers必須要儘速執行完畢。為了確保這一點,最好將執行工作切成兩部分,分別是top half與bottom half。handler的top half部分會儘速完成工作,然後可以晚點執行的工作放在bottom half,可以透softirqs與tasklets達到此目的。
    5. interrupt handlers不能重複被呼叫。當一個handler已經在執行,它的對應IRQ必須要被disable,直到handler執行完畢。
    6. interrupt handlers能被更高權限的handlers中斷。如果要避免被高權限的handlers中斷,你可以將interrupt handler標示為fast handler。但如果太多被標示為fast handlers被導致系統performance下降,因為interrupt latency時間會變長。
  • synchronous interrupt(軟體產生):
    1. 當runtime錯誤發生,會發出此interrupt。
    2. software interrupts,例如system calls。

2013年9月7日 星期六

Mini2440我命令你復活吧!

mini2440官方網站:http://www.friendlyarm.net

底下所有步驟完成後,目錄結構如下:
|---home---renee
             |
             |----mini2440------u-boot------(source code)
             |              |           |
             |              |           ----u-boot.bin
             |              |
             |              ----kernel------(source code)
             |                          |
             |                          ----arch----arm----boot----zImage
             |
             |----myfs------rootfs------lib----modules
             |                      |
             |                      ----bin----(busybox tools)
             |                      |
             |                      ----sbin----(busybox tools)
             |                      |
             |                      ----usr------bin----(busybox tools)
             |                               |
             |                               ----sbin----(busybox tools)
             |
             |----tftpboot----uImage