目前日期文章:200908 (13)

瀏覽方式: 標題列表 簡短摘要

來源: Linux 使用 USB 裝置筆記

USB規格簡介

USB Univeral Serial Bus (通用串列匯流排),常見的外部匯流排,支援熱插拔 (hot plugable),一個 USB 最多可以連接127個裝置。

目前規格包括:

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

device透過bus來跟系統做communication。系統上有好幾種bus,cpu bus,pci bus等,每種bus的spec不用,因此不會隨便接。platform device是linux下,一種與cpu bus連接的機制,因此其特色就是direct addressing。其與傳統的linux device driver在資源管理上有些優勢: 藉由將自己本身的資源向kernel註冊,由kernel來做統一管理。其方式為使用platform device所提供的api,這樣在可移植性和安全性上也會有一些好處。

下面以framebuffer device做例子,說明如何註冊device與driver。

Platform device

include/linux/platform_device.h

這個檔案描述了一個device的結構,其中比較重要的是name和resource。

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

了解framebuffer driver,skeletonfb.c有著一個framebuffer基本的架構,值得參考。筆記如下:

顯卡可支援多螢幕,因此可能有多個display。而每個display可有自己的data,因此每個display都是一個framebuffer device,意即各有其fb_info。fb_info中的par是硬體相關的state,硬體只有一份,因此這些state對每個display來說是共享的。任一個display做了改變 (如resolution,var->xres和var->yres),其他的display都可得知此狀況。以下是framebuffer driver需要或不需要實作的function:

int xxxfb_init(void):

    在linux kernel 2.6後引入platform的概念,讓driver更加容易實作。這個function的功能是向platform註冊這支driver,即執行platform_driver_register()。如int __init   s3c2410fb_init(void)

static int xxxfb_open(struct fb_info *info, int user) / static int xxxfb_release(struct fb_info *info, int user):

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

來源: LCD Driver 筆記 - Frame Buffer

什麼是framebuffer 設備:
framebuffer 是一種能夠提取圖形的硬件設備,是用戶進入圖形界面很好的接口。
有了framebuffer,用戶的應用程序不需要對底層的驅動的深入瞭解就能夠做出很好的圖形。
對於用戶而言,它和 /dev 下面的其他設備沒有什麼區別,用戶可以把 framebuffer 看成一塊內存,既可以向這塊內存中寫入數據,也可以從這塊內存中讀取數據。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

來源: FCLK, HCLK, PCLK

 

因應不同的硬體元件
有不同的 clock
arm裡面

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

來源: UART

通用非同步收發傳輸器Universal Asynchronous Receiver/Transmitter,通常稱作UART,讀音/ˈjuːɑrt/)是一種非同步收發傳輸器,是電腦硬體的一部分,將資料由序列傳輸Serial communication)與平行傳輸Parallel communication)間作傳輸轉換。UART通常用在與其他通訊協定(如EIA RS-232)的連結上。

 

 

UART is an asynchronous communication protocol. A complete UART signal package must consists of START, DATA, Parity check, STOP, Buad, and TXD segments.
 

 

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

來源: SPI (Serial Peripheral Interface Bus) & IIC (Inter Integrated Circuit)

SPI是現在所謂的RS232功能,這種功能大都使用硬體的方式來處理,使用者只需要將速度..等參數設定好之後,對SBUF丟資料即可,這種傳輸方式最大的缺點是速度不高,最高只有119200bps,一般是拿來做控制的信號傳輸使用而已,不能夠傳大量的資料,因為很慢!這種型態可以拿來做同步雙向傳輸使用,其內部的頻率是以counter來計算的,例如頻率是9600bps,就是每 9600分之一秒自動傳送一個bit,沒有其他的信號來觸發傳送.

以上是UART而非SPI, 感謝讀者指出。

所謂I2C就是一般常見到的IIC, Inter Integrated Circuit. 最早的版本是PHILPS公司在1992所設計的串列匯流排介面,利用兩條訊號控制線來進行資料傳輸,其中兩條訊號控制線分別為:
SCL(Serial Clock) : 作為資料傳輸時的參考時脈

kezeodsnx 發表在 痞客邦 PIXNET 留言(3) 人氣()

變數的宣告,會配置其所需的記憶體。每種變數所需的大小不一樣,比如說char是1 bytes,int 是4 bytes,double則是8 bytes。如果是這樣,那這些大小在記憶體中是如何擺放呢?是直覺的一個接一個放嗎?其實不然。這牽扯到performance / efficiency的問題! 在32 bits的架構上,一次的資料存取也就是32 bits (4 bytes)。而這4 bytes 不是隨便從哪個點抓都可以,而是以4 bytes為單位,不管需要的是其中那個byte,就抓那4個bytes。比如說,抓第0,4,8 ,12....等,而不會是從3,7,9開始抓4個bytes。

這代表什麼呢?這表示了對齊 (alignment)的重要,因為會影響到幾次才抓的完。如果要抓一個4 bytes 的int,而這個int是從6擺到10,那就表示要抓兩次,自然效能較差了。因此,在struct的宣告是存在對齊這件事的。見下例:

#include <stdio.h>

int main(int argc, char* argv[])

kezeodsnx 發表在 痞客邦 PIXNET 留言(3) 人氣()

網路抓來的範例程式再加點小修改,client連上server後,server送"Hi client!"給client。client收到後,再回傳"receiveack"給server表示收到。

server程式:


#include <sys/types.h>
#include <sys/socket.h>

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

netdb相關程式

主要是在建立socket時,會需要一些參數,而這些參數會存在系統中,可藉由下列fucntion查詢系統的設定檔,然後餵給socket API。

介紹如下的function:

struct hostent *gethostbyname(const char *name);

struct servent *getservbyname(const char *name, const char *proto);

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

這系列是閱讀 The Linux socket TCP/IP protocols network programming tutorials所記錄的筆記,這份tutorial寫的相當好,如果有不清楚的地方,建議大家看看原文,寫的非常詳細,這裡只節錄重點。

 

Socket

1. socket是IPC所使用的一種API。

2. 也稱為Berkeley Socket或BSD Socket

3. Connection-oriented socket (TCP)

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

廢言

android 的應用程式,對我來說,都是玩票性質。為了做表面功夫,每個禮拜都有東西可以present,也只好做一些自己沒什麼興趣的事了。不過老板也有他的道理,現在不是喜不喜歡,願不願意的問題,而是在"高層"那些不懂技術的beta user的眼中,要了解自己在他們心中有沒有value。說穿了,這不只是你為公司做了多少事,牲犧了多少自我,更是你的表面功夫,嘴炮能力的高低。隨便講個比例,辛辛苦苦的完成了一個projcect,在老板眼中可能可以拿到三成的value。如果就此打住,那你就是這樣了,公司不會感謝你,不景氣的時候,你仍然是裁員名單的正取生。但如果嘴炮能力夠,懂得吹噓,才有可能拿到那佔大部份的七成。更有甚者,會有另一票完全沒辛苦過的人,會來搶這七成。這是事實,也是人性。只是得問問自己,要站在哪個點上?有多sophiticated?某種程度上,我的確是變了,讓我有點討厭自己。

 

引言

在Android 1.5 SDK提供了AppWidget的功能,因此可以在桌面上擺放各式各樣的widget。Widget的特色是interactive,包括對使用者或是framework。使用者可以暫停一個music player; framework可以定期更新widget的內容。相較於應用程式,是活潑多了! 也因為此特色,widget都應該是一個broadcast receiver,待會要介紹的,也是最陽春的widget,被強迫要深入時,再來update。

kezeodsnx 發表在 痞客邦 PIXNET 留言(2) 人氣()

還是在.bashrc

需求是: 希望在一般user和root的提示符號顏色不同,並且不要提示一大串user@ubuntu等hostname什麼的。

1. unmark "force_color_prompt=yes"

2.

if [ "$color_prompt" = yes ]; then

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()