1. 程式人生 > >Linux 下 RT3070 驅動移植

Linux 下 RT3070 驅動移植

RT3070驅動移植

無線網絡卡為RT3070,驅動分為STA驅動和SoftAP驅動兩種,STA驅動支援無線網絡卡工作在STA模式下,而SoftAP的驅動支援無線網絡卡工作在軟AP的模式下,可以作為一個軟的接入點。STA驅動為2010_0831_RT3070_Linux_STA_v2.3.0.0_DPO.bz2。SoftAP的驅動是:2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2。需要移植STA驅動和SoftAP驅動,兩款驅動的移植步驟差不多。下邊首先對STA驅動進行移植。

STA驅動的移植

#tar jxvf 2010_0831_RT3070_Linux_STA_v2.3.0.0_DPO.bz2

cd 2010_0831_RT3070_Linux_STA_v2.3.0.0_DPO

修改原有的Makefile檔案如下(只給出需要修改的部分,“-”表示刪除的行,“+”表示新增的行):

+#Makefile for RT3070 on MBC-SAM9G45

+#2010_11_13 by liyi

RT28xx_MODE = STA

TARGET = LINUX

CHIPSET = 3070

-PLATFORM = PC

+PLATFORM = IXP

ifeq ($(PLATFORM),IXP)

-LINUX_SRC = /project

-CROSS_COMPILE = arm-linux-

+LINUX_SRC = /home/Embest_SAM9G45/linux-2.6.30

+CROSS_COMPILE = /usr/local/arm2007q1/bin/arm-none-linux-gnueabi-

endif

修改os/linux資料夾中的config.mk檔案,需要修改的地方如下(只給出需要修改的部分):

# Support Wpa_Supplicant

- HAS_WPA_SUPPLICANT=n

+HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger

-HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

ifeq ($(PLATFORM),IXP)

- WFLAGS += -DRT_BIG_ENDIAN

+#WFLAGS += -DRT_BIG_ENDIAN

endif

ifeq ($(PLATFORM),IXP)

        EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include

endif

ifeq ($(PLATFORM),IXP)

-         CFLAGS := -v -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale -malignment-traps -msoft-float $(WFLAGS)

-        EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include

-         export CFLAGS       

-

+

endif

修改完成以後,通過以下命令編譯:

make ARCH=arm KBUILD_NOPEDANTIC=1

如果不加KBUILD_NOPEDANTIC=1將出現CFLAGS was changed in …. Fix it to use EXTRA_CFLAGS的錯誤,編譯不能通過。編譯完成後,會在os/linux資料夾中生成rt3070sta.ko的驅動模組。此模組通過下載工具可以下載到/mnt目錄。

在驅動目錄下新建一個資料夾Wireless/RT2870STA,將RT2870STA.dat複製進Wireless/RT2870STAm目錄下,同時將此資料夾拷貝進開發板。從超級終端進入開發板目錄/mnt使用以下命令將Wireless資料夾拷貝到/etc目錄下,將rt3070sta.ko拷貝進/home/root使用者目錄下:

#cp /mnt/Wireless /usr –r

#cp /mnt/rt3070sta.ko /home/root

開啟root目錄,載入驅動模組:

#cd /home/root

#insmod rt3070sta.ko

如果加載出現一下錯誤:

#insmod rt3070sta.ko

insmod: error inserting 'rt3070sta.ko': -1 Unknown symbol in module

#dmesg | grep rt3070

[ 2443.154486] rt2070ap: Unknown symbol usb_alloc_urb

[ 2443.154628] rt2070ap: Unknown symbol usb_free_urb

[ 2443.155032] rt2070ap: Unknown symbol usb_register_driver

[ 2443.155324] rt2070ap: Unknown symbol usb_put_dev

[ 2443.155439] rt2070ap: Unknown symbol usb_get_dev

[ 2443.155652] rt2070ap: Unknown symbol usb_submit_urb

[ 2443.156164] rt2070ap: Unknown symbol usb_control_msg

[ 2443.156553] rt2070ap: Unknown symbol usb_deregister

[ 2443.157013] rt2070ap: Unknown symbol usb_kill_urb

[ 2443.157116] rt2070ap: Unknown symbol usb_buffer_free

[ 2443.157443] rt2070ap: Unknown symbol find_vpid

[ 2443.157675] rt2070ap: Unknown symbol usb_buffer_alloc

則需要在檔案os/linux/usb_main_dev.c檔案的開頭加上如下一行程式碼:

MODULE_LICENSE(“GPL”);

然後重新編譯、重新載入,即可得到正確的結果。

用ifconfig  -a命令檢視網路,如果載入成功,不會有任何提示,同時可以檢視到ra0裝置的存在。

載入上模組過後,可以用相關命令設定無線網絡卡。命令包括iwpriv、iwconfig、iwlist、ifconfig等。比如設定無線網絡卡地址為192.168.1.5:

ifconfig ra0 192.168.1.5

設定無線網路模式為ad-hoc模式:

iwpriv ra0 set NetworkType=Adhoc

設定SSID名為isn313:

iwconf ra0 essid isn313

檢視無線網路:

iwlist ra0 scanning

SoftAP驅動移植

解壓驅動2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2,然後進入目錄:

tar jxvf 2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2

cd 2010_0203_RT3070_SoftAP_v2.4.0.1_DPA

修改Makefile如下(“-”表示刪除的行,“+”表示新增的行):

+#Makefile for RT3070 on MBC-SAM9G45

+#2010_11_13 by liyi

RT28xx_MODE = AP

TARGET = LINUX

CHIPSET = 3070

-PLATFORM = PC

+PLATFORM = IXP

………

ifeq ($(PLATFORM),IXP)

-Linux_SRC = /project………..

-CROSS_COMPILE = arm-linux-

+LINUX_SRC = /home/Embest_SAM9G45/linux-2.6.30

+CROSS_COMPILE = /usr/local/arm2007q1/bin/arm-none-linux-gnueabi-

endif

注意,在2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2驅動中,有三個資料夾,分別為MODULE、NETIF、UTIL,在這三個檔案中均有Makefile,所有的Makefile都需要如上修改,同樣,三個資料夾中的config.mk檔案也都需要修改。

修改config.mk配置檔案。

ifeq ($(PLATFORM),IXP)

- WFLAGS += -DRT_BIG_ENDIAN

+#WFLAGS += -DRT_BIG_ENDIAN

endif

ifeq ($(PLATFORM),IXP)

#WFLAGS += -DRT_BIG_ENDIAN

endif

ifeq ($(PLATFORM),IXP)

CFLAGS := -v -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale -malignment-traps -msoft-float $(WFLAGS)

        EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include

export CFLAGS       

endif

對不起,在修改驅動config.mk檔案的時候,紅色修改部分沒有給全,應該是把CFLAGS和EXTRA_FLAGS中的-mbig-endian選項去掉,因為在ARM中採用的小端模式!特此更正!

所有的config.mk都修改好以後,通過以下命令進行編譯:

make ARCH=arm KBUILD_NOPEDANTIC=1

如果編譯不能通過,請檢查是否所有的資料夾中的Makefile和config.mk都已經修改。編譯通過後,將在三個資料夾中分別生成三個可載入模組:rt3070ap.kortutil3070ap.kortnet3070ap.ko。通過USB介面將這三個模組和rt2870ap.dat檔案下載到開發板目錄下。並將檔案移動到相應位置:

#mkdir /etc/Wireless/

#mkdir /etc/Wireless/RT2870AP/

#cp /mnt/rt2870ap.dat /etc/Wireless/RT2870AP/RT2870AP.dat

#cp /mnt/rt3070ap.ko /home/root

#cp /mnt/rtutil3070ap.ko /home/root

#cp /mnt/rtnet3070ap.ko /home/root

第三行中,在RT2870AP資料夾中的.dat檔名必須是大寫的,否則模組將無法讀取。

移動好後,進入root目錄並載入模組:

#cd /home/root

#insmod rtutil3070ap.ko

#insmod rt3070ap.ko

#insmod rtnet3070ap.ko

#ifconfig ra0 up

此處,載入模組一定要按此順序載入,否則將出現以下錯誤(用dmesg函式可檢視相關錯誤資訊):

#insmod rt3070sta.ko

insmod: error inserting 'rt3070sta.ko': -1 Unknown symbol in module

#dmesg | grep rt3070

[ 1011.612979] rt3070ap: Unknown symbol rausb_buffer_free

[ 1011.613153] rt3070ap: Unknown symbol RtmpOSTaskNotifyToExit

[ 1011.613410] rt3070ap: Unknown symbol rausb_buffer_alloc

[ 1011.613536] rt3070ap: Unknown symbol RTMPFreeNdisPacket

[ 1011.613692] rt3070ap: Unknown symbol AdapterBlockAllocateMemory

[ 1011.613816] rt3070ap: Unknown symbol RTMP_IndicateMediaState

[ 1011.614106] rt3070ap: Unknown symbol RTMP_SetPeriodicTimer

[ 1011.614241] rt3070ap: Unknown symbol os_alloc_mem

[ 1011.614373] rt3070ap: Unknown symbol ClonePacket

[ 1011.614505] rt3070ap: Unknown symbol RTDebugLevel

[ 1011.614646] rt3070ap: Unknown symbol announce_802_3_packet

[ 1011.614780] rt3070ap: Unknown symbol Sniff2BytesFromNdisBuffer

 [ 1011.614916] rt3070ap: Unknown symbol RTMP_OS_Add_Timer

[ 1011.615043] rt3070ap: Unknown symbol rausb_submit_urb

[ 1011.615167] rt3070ap: Unknown symbol RTMP_AllocateFragPacketBuffer

[ 1011.615292] rt3070ap: Unknown symbol rausb_alloc_urb

[ 1011.615491] rt3070ap: Unknown symbol RtmpOSNetPktAlloc

[ 1011.615616] rt3070ap: Unknown symbol VLAN_8023_Header_Copy

[ 1011.615739] rt3070ap: Unknown symbol RTMP_OS_Mod_Timer

[ 1011.615863] rt3070ap: Unknown symbol os_free_mem

[ 1011.616005] rt3070ap: Unknown symbol rausb_control_msg

[ 1011.616079] rt3070ap: Unknown symbol duplicate_pkt_with_TKIP_MIC

[ 1011.616079] rt3070ap: Unknown symbol duplicate_pkt_with_VLAN

[ 1011.616079] rt3070ap: Unknown symbol DuplicatePacket

[ 1011.616079] rt3070ap: Unknown symbol RtmpOSTaskCustomize

[ 1011.616079] rt3070ap: Unknown symbol RTMP_OS_Del_Timer

[ 1011.616079] rt3070ap: Unknown symbol rausb_free_urb

[ 1011.616079] rt3070ap: Unknown symbol get_netdev_from_bssid

[ 1011.616079] rt3070ap: Unknown symbol hex_dump

[ 1011.616079] rt3070ap: Unknown symbol RtmpOSFileOpen

[ 1011.616079] rt3070ap: Unknown symbol RTMPFreeAdapter

[ 1011.616079] rt3070ap: Unknown symbol RtmpOSFSInfoChange

[ 1011.616079] rt3070ap: Unknown symbol wlan_802_11_to_802_3_packet

[ 1011.618201] rt3070ap: Unknown symbol RTMP_GetCurrentSystemTime

[ 1011.618341] rt3070ap: Unknown symbol RTMPAllocateNdisPacket

[ 1011.618498] rt3070ap: Unknown symbol RTMPSendWirelessEvent

[ 1011.618621] rt3070ap: Unknown symbol RTMPL2FrameTxAction

[ 1011.618747] rt3070ap: Unknown symbol rausb_kill_urb

[ 1011.618899] rt3070ap: Unknown symbol RTMP_OS_Init_Timer

[ 1011.619022] rt3070ap: Unknown symbol RTMPusecDelay

[ 1011.619147] rt3070ap: Unknown symbol update_os_packet_info

[ 1011.619312] rt3070ap: Unknown symbol RtmpOSFileRead

[ 1011.619517] rt3070ap: Unknown symbol RtmpOSFileClose

[ 1011.619641] rt3070ap: Unknown symbol RTMP_QueryPacketInfo

[ 1011.619764] rt3070ap: Unknown symbol RtmpOSFileWrite

在載入過程中若出現以下錯誤:

[421.461365] rt3070ap: module license 'RALINK' taints kernel.

[421.461723] Disabling lock debugging due to kernel taint

請修改UTIL/os/linux/usb_main_dev.c檔案,在檔案的開頭加上如下一行程式:

MODULE_LICENSE(“GPL”)

重新編譯:

#make clean

#make KBUILD_NOPEDANTIC=1

然後再重新下載,按順序載入模組即可成功。

模組載入成功後,用一下命令可檢視相關資訊:

#ifconfig –a

eth0      Link encap:Ethernet  HWaddr 3A:1F:34:08:54:54

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

          Interrupt:25 Base address:0xc000

lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:8 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:576 (576.0 B)  TX bytes:576 (576.0 B)

ra0       Link encap:Ethernet  HWaddr 00:00:00:00:00:00

          BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

#iwconfig ra0

ra0       RTWIFI SoftAP  ESSID:"RT2860AP"  Nickname:""

          Mode:Managed  Channel=11  Access Point: 00:0C:43:41:6F:A6

          Bit Rate=150 Mb/s

用ifconfig命令設定ra0的IP地址:

#ifconfig ra0 192.168.1.1

ra0       Link encap:Ethernet  HWaddr 00:0C:43:41:6F:A6

          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:121922 (119.0 KiB)  TX bytes:9072 (8.8 KiB)

至此,一個預設的名為RT2860AP的網路就建立起來了。用iwconfig命令可修改網路的相關引數。如:

#iwconfig ra0 set SSID=”RT_AP”

#iwconfig ra0

ra0       RTWIFI SoftAP  ESSID:"RT_AP"  Nickname:""

          Mode:Managed  Channel=11  Access Point: 00:0C:43:41:6F:A6

          Bit Rate=150 Mb/s

結束後,可以通過以下命令解除安裝模組:

#ifconfig ra0 down

#rmmod rtnet3070ap.ko

#rmmod rt3070ap.ko

#rmmod rtutil3070ap.ko

錯誤解決:

核版本 2.6.35.6 fedora14 rt3070的AP驅動移植到PC機上 轉去PC的核心標頭檔案目錄/lib/modules/`uname-r`/build下make bzImage 遇到報錯: ‘missing-syscall’ 百度後發現這是fedora12-14用標頭檔案make之後的bug 有兩種解決辦法: 1、用rpmbuild工具來make一個核心映像。 2、去kernel.org下載這一版本的核心完整原始碼,貼上.config後make bzImage即可。 核心配置、編譯完成後 轉去AP驅動原始碼目錄,修改makefile使之適合PC環境(核心路徑指向PC核心原始碼目錄) 遇到報錯: implicit declaration of function ' usb_buffer_free' implicit declaration of function ' usb_buffer_alloc' 發現是UTIL/os/linux/rt_usb_util.c檔案中的函式,缺少這兩函式標頭檔案。 百度發現下面文章: http://blog.csdn.net/linfeng999/archive/2011/05/10/6410224.aspx

在linux2.6.34和之前的程式碼中還可以使用usb_buffer_alloc 和 usb_buffer_free 這兩個函式,在2.6.35和之後的核心中
usb_buffer_alloc 和 usb_buffer_free這兩個函式已不在使用了,可以用usb_alloc_coherent 和 usb_free_coherent代替。把驅動裡分配記憶體與釋放記憶體釋放函式修改就好了。


這是rename的patch:

USB: rename usb_buffer_alloc() and usb_buffer_free()

For more clearance what the functions actually do,

  usb_buffer_alloc() is renamed to usb_alloc_coherent()
  usb_buffer_free()  is renamed to usb_free_coherent()

They should only be used in code which really needs DMA coherency.

[added compatibility macros so we can convert things easier - gregkh]

Signed-off-by: Daniel Mack <[email protected]>
Cc: Alan Stern <[email protected]>
Cc: Pedro Ribeiro <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

    說是為了更好的從名字看出這個函式真實做的事情:DMA coherency
    linux提供兩種方式,來保證使用dma時,記憶體和硬體cache的一致性:

1.Coherent DMA mapping
    When using this mapping, the kernel ensures that there will be no cache coherency problems between the memory and the hardware device; this means that every write operation performed by the CPU on a RAM location is immediately visible to the hardware device, and vice versa. This type of mapping is also called "synchronous" or "consistent."

2.Streaming DMA mapping
    When using this mapping, the device driver must take care of cache coherency problems by using the proper synchronization helper functions. This type of mapping is also called "asynchronous" or "non-coherent."

      如果採用第一種方式的話,就是由kernel來保證一致性,驅動程式是不用考慮的,這種方法的缺點是在某些體系結構上,效率很低;如果採用第二種方式的話,那麼是有驅動程式來保證一致性的,所以當驅動要使用dma來進行資料傳輸時,必須首先檢測記憶體和硬體cache的一致性,linux提供了這類方法。

/////////////////////////////////////////////////////////////////////////

修改完之後make即可 無報錯


相關推薦

Linux RT3070 驅動移植

RT3070驅動移植 無線網絡卡為RT3070,驅動分為STA驅動和SoftAP驅動兩種,STA驅動支援無線網絡卡工作在STA模式下,而SoftAP的驅動支援無線網絡卡工作在軟AP的模式下,可以作為一個軟的接入點。STA驅動為2010_0831_RT3070_Linux_S

linux驅動控制gpio的方法

arm linux下寫驅動控制gpio時,有兩種方法: 1. 用ioremap()得到暫存器的地址,然後用iowrite32()或writel()函式寫暫存器控制gpio 1)查datashee

linuxi2c驅動筆記

1. 幾個基本概念 1.1. 裝置模型 由 匯流排(bus_type) + 裝置(device) + 驅動(device_driver) 組成,在該模型下,所有的裝置通過匯流排連線起來,即使有些裝置沒有連線到一根物理總線上,linux為其設定了一個內部的、虛擬的platf

LinuxDMA驅動框架

啟動傳輸 dmaengine_issue_pending呼叫會從第一個描述符開始進行傳輸。如果DMA 裝置驅動有回撥函式的話,會在傳輸完成後執行。 下面介紹一下獲得傳輸描述符的三種方式。 device_prep_dma_memcpy(),明顯是DMA記憶體到記憶體的拷貝 有些DMA支援分散集合模式,即記憶

Linuxmplayer的移植

實驗準備:libmad-0.15.1b.tar.gz,MPlayer-1.0rc4.tar 下載地址如下:https://pan.baidu.com/s/1RSc-NcsgvYQymbCj5oNd_w MP3的移植過程: 一.將開發板與宿主機連線 1.usb轉串列埠驅動下載。將usb

arm-linux的opencv移植

參考:https://blog.csdn.net/gatieme/article/details/49080355, https://blog.csdn.net/luotuo44/article/details/8958990, https://blog.csdn.net/xuluoho

Linux wifi 驅動開發(三)—— SDIO介面WiFi驅動淺析

      SDIO-Wifi模組是基於SDIO介面的符合wifi無線網路標準的嵌入式模組,內建無線網路協議IEEE802.11協議棧以及TCP/IP協議棧,能夠實現使用者主平臺數據通過SDIO口到無線網路之間的轉換。SDIO具有傳輸資料快,相容SD、MMC介面等特點。  

Linux wifi 驅動開發(一)—— WiFi基礎知識解析

 一、WiFi相關基礎概念 1、什麼是wifi        我們看一下百度百科是如何定義的:       Wi-Fi是一種可以將個人電腦、手持裝置(如pad、手機)等終端以無線方式互相連線的技術,事實上它是一個高頻無線電訊號。[1]  無線保真是一個無線網路通訊技術的品牌

很好的linuxGPIO驅動詳解文章

打算跟著友善之臂的《mini2440 linux移植開發指南》來做個LED驅動,雖然LED的原理簡單得不能再簡單了,但是要把kernel中針對於s3c24**的GPIO的一些資料結構,還有函式搞清楚也不是那麼輕鬆的事,所以本文主要簡單地說明下LED驅動中的相關資料結構以及

LinuxPCIe驅動以及DMA機制

1. 驅動程式作用: ·        裝置驅動程式嚮應用程式遮蔽了硬體在實現上的細節,使得應用程式可以像操作普通檔案一樣操作外部裝置。Linux作業系統抽象了對硬體的處理,可以使用和操作檔案相同的,標準的系統呼叫介面來完成開啟,關閉,讀寫喝I/O控制操作,而驅動程式主要任

linuxIIC驅動開發分析

1.IIC規範 IIC(Inter-Integrated Circuit)匯流排是一種由PHILIPS公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。IIC匯流排產生於在80年代,最初為音訊和視訊裝置開發,如今主要在伺服器管理中使用,其中包括單個元件狀態的通訊。例如管理員可對各個元件進行查詢,以

【轉】RT3070驅動移植

STA驅動的移植 #tar jxvf 2010_0831_RT3070_Linux_STA_v2.3.0.0_DPO.bz2 cd 2010_0831_RT3070_Linux_STA_v2.3.0.0_DPO 修改原有的Makefile檔案如下(只給出需要修改的部分,“-”表示刪除的行,“+”表

Linux wifi 驅動開發(二)—— WiFi模組淺析

一、什麼是wifi 模組         百度百科上這樣定義:         Wi-Fi模組又名串列埠Wi-Fi模組,屬於物聯網傳輸層,功能是將串列埠或TTL電平轉為符合Wi-Fi無線網路通訊標準的嵌入式模組,內建無線網路協議IEEE802.11b.g.n協議棧以及TCP

linux的I2C驅動——移植

** 一、簡介 ** 1、I2C是一個一主多從的通訊協議,通訊都是由主裝置發起的。 SCL : 時鐘線,由主端控制; SDA:資料線,主端和從端都可以配置; SCL和SDA的預設電平狀態是高。 2、通訊協

LinuxI2C驅動分析(一)

        最近在做一個基於全志A33晶片的android移植時發現嵌入式裝置很多都用到了I2C匯流排通訊,比如說攝像頭,G-sensor,觸控式螢幕等,為此我覺得很好的理解I2C裝置驅動在今後的嵌入式開發中是非常有好處的,而目前我也是處於學習階段,便將這些學習的過程給

嵌入式linux usb wifi驅動移植

wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT) netlink: Operstate: linkmode=-1, operstate=5 wpa_driver_wext_associate wpa_driver_wext_set_

LinuxSQLite3的移植與使用

SQLite3是一個輕便的檔案型資料庫,非常適合在嵌入式環境使用 我所移植的環境是arm-xilinx-linux-gnueabi 一、準備SQLite3 SQLite3專案地址 https://www.sqlite.org/ 下載source c

wifi RT3070驅動移植 網路轉載

平臺:TI dm6441, ,linux2.6.18, wifi:RT3070 我看wifi模組上沒有寫是鐳凌公司的,因為公司同事是在另一個公司買的,但是當我看模組的驅動手冊時,看到了驅動模組是rt3070sta.ko,狗狗一下後知道了一切。於是:下載了wifi驅

Linuxspi驅動開發(2)

Linux下spi驅動開發之m25p10驅動測試 目標:在華清遠見的FS_S5PC100平臺上編寫一個簡單的spi驅動模組,在probe階段實現對m25p10的ID號探測、flash擦除、flash狀態讀取、flash寫入、flash讀取等操作。程式碼已經經過測試,運行於

sam9x5平臺搭建及rt3070驅動移植總結

............................................................................................................ PC機系統:ubuntu 11.10 Linux ker