今天,我們決定開始嵌入式實訓,一開始當然是裝驅動裝軟件啦,但是開局不順,進度緩慢,但是,經過一下午的奮鬥,終於把驅動和軟件裝好了,但是,還沒有配置好,先紀錄一下今天的事情。

經過兩次換系統後,我決定使用 ArchLinux 來做實驗環境,因此,下面所講的都是在 ArchLinux 下的命令。

首先,我需要將無線網卡的驅動從我的電腦中上傳到 pi 上,因此,我使用Securecrt 這款遠程連接工具進行連接,當然,如果要上傳文件自然要安裝 lrzsz 工具啦,但是,直接使用 pacman -S lrzsz 命令是安裝不成功的,因為軟件源不對,所以我就需要更新一下軟件源,使用以下命令 pacman -Syy 更新完以后,我就使用上面一条命令安装 lrzsz

安装完 lrzsz 软件后,我需要将驱动程序上传到 pi 中,因此我在 home 目录下创建了一个新的目录 liuliqiang mkdir /home/liuliqaing 然后,直接输入 rz 此时,securecrt 工具会弹出一个文件选择框,你可以选择需要上传的文件,别忘了选择以后点击”添加”按钮,它会添加到需要队列中,然后可以批量上传。

上传完成以后,由于我的驱动包是压缩的 zip 格式,所以我需要解压缩,可是系统中又没有接压缩的软件,所以我需要安装一下,使用这个命令即可

pacman -S unzip

我的驱动压缩文件名字叫做 RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip,所以我解压缩就使用下面这个命令

unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip

这样,它就会自动将驱动文件解压缩到 /home/liuliqiang 目录下,驱动文件上传好了,接下来就需要编译安装他们了,这个步骤我来来回回弄了十几次才成功,太麻烦了,但是,我下面讲解会很简单,如果你按照这个步骤做,应该是没问题的。

进入解压出来的文件夹 RTL8188C_8192C_8192D_USB_linux_v3.3.0_2971.20111128 ,然后进入文件夹 /driver,你会发现有一个压缩文件rtl8188C_8192C_8192D_usb_linux_v3.3.0_2971.20111128.tar.gz,使用以下命令解压它

tar zxvf rtl8188C_8192C_8192D_usb_linux_v3.3.0_2971.20111128.tar.gz

然后进入解压出来的文件夹,rtl8188C_8192C_8192D_usb_linux_v3.3.0_2971.20111128,然后使用nano编辑 Makefile 文件

nano Makefile

找到这段代码<

...
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
...

我们修改一下,把CONFIG_PLATFORM_I386_PC = y 改成 n,然后添加一个新纪录,需要注意的是Makefile对文件格式要求非常严格,请严格按照原来的规则来编写,不然会出现错误,我们修改后的文件应该如下所示

...
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_BCM2708 = y
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
...

中间多了一个 CONFIG_PLATFORM_BCM2708 = y, 修改好了以后,我们继续往下查找,你需要查找到这一段

...
ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
KVER  := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif

ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
CROSS_COMPILE := arm-eabi-
KSRC := $(shell pwd)/../../../Android/kernel
ARCH := arm
endif
...

同样,我们在两个 ifeq之间插入一个新的 ifeq,增加的 ifeq 如下

...
ifeq ($(CONFIG_PLATFORM_BCM2708), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE :=
KVER := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless
INSTALL_PREFIX :=
MODULE_NAME := 8188eu
endif
...

以下是对上面那段修改文件的注释,我没怎么看,且先转载过来。

两种存储模式在ARM上都支持,而默认是小端存储,所以这里选择了CONFIG_LITTLE_ENDIAN

修改完成以后,我们使用 Ctrl + O 保存,它会询问你保存的文件名,就保持默认的 Makefile ,直接按回车就可以了,然后直接使用以下命令编译安装

make & make install

注意,这里你可能系统会提示系统没有lib文件夹,这是因为没有添加开发模块的缘故,这时你使用以下命令可以解决这个问题。

[root@alarmpi ~]# pacman -S util-linux unzip base-devel

此时,驱动已经安装完毕。

接下来是安装 hostapd 软件

回到目录 RTL8188C_8192C_8192D_USB_linux_v3.3.0_2971.20111128 ,然后打开 /wpa_supplicant_hostapd 目录,然后解压文件 wpa_supplicant_hostapd-0.8_rtw_20111118.zip,然后打开解压出来的文件夹,进入 src 目录,直接输入命令 make 即可编译 hostapd 软件。

OK,今天的任务就进行到这,明天将继续配置 hostapd 并且安装dhcp。