嵌入式 hi3518c平台上无线网卡rtl8188eu系列网卡移植

来源:互联网 发布:约瑟夫环问题算法 编辑:程序博客网 时间:2024/05/09 04:31
嵌入式 hi3518c平台上无线网卡rtl8188eu系列网卡移植
 

首先修改driver下驱动文件中的Makefile文件:

添加自己的平台,我的平台是hi3518c,具体操作如下:
#add the new platform hi3518c alter by kj
CONFIG_PLATFORM_HI_3518C = y

添加平台的编译选项:

#add the compile option for hi_3518c
ifeq ($(CONFIG_PLATFORM_HI_3518C), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_MINIMAL_MEMORY_USAGE
ARCH := arm
CROSS_COMPILE := arm-hisiv100nptl-linux-
KVER  := 3.0.8
KSRC := /home/kongjun/mywork/develop_kj/Hi3518_SDK_V1.0.3.0/osdrv/kernel/linux-3.0.y
endif

注意:

CONFIG_POWER_SAVING = n(省电模式最好关闭)

 

下面是官方文档的编译说明:

 

Introduction
Inthis document, we introduce two ways to compile and  install  our Wi-Fi driver:
1)  Using  install.sh  script  for  PC-Linux  and  2)  Step  by  step  manually .  The  former
targets  for  end  users  who  are  not  familiar  with  Linux  system,  while  the  later  for
engineers who want to portour Wi-Fi driver ontodifferent platforms.
1.  Using install.sh Script for PC-Linux
For  driver  compilation  and  installation  in  PC-Linux,  we  provide  an  install.sh
script  to  do  the  duties  automatically .  If  you  want  to  use  our  Wi-Fi  solutions  to  access
network  on  PC-Linux,  you  can  just  run  install.sh  script  and  then  control  Wi-Fi  with
utilities  such  as  Network  Manager .  For  further  information  about  Wi-Fi  station  mode,
please refer to:
document/Quick_Start_Guide_for_Station_Mode.pdf.
If  you  want  to  apply  our  Wi-Fi  solutions  on  other  embedded  platforms,  you
should readand checkthe followingparagraphs.
2.  Decompress the driversource tarball
The  driver  source  tar  ball  is  located  in  the  driver  folder  of  our  software  package.
For example, to decompress rtl8188C_8192C_8192D_usb_linux_v3.3.0_2920.20111123.tar .gz :
root@driver/# tar zxvf rtl8188C_8192C_8192D_usb_linux_v3.3.0_2920.20111123.tar .gz
2
3.  Selecting Chip T ype with make_drv Script (for compound release)
Our  driver  source  release  has  two  types:  1)  single  release,  which  can  build  out
driver  only for singlechiptype, and  2) compound  release, which can build out  drivers
for multiple chiptypes separately .
For compoundrelease driver , you will see make_drvscriptafter you decompress
the driver tar ball locatedin driver folder . Before compiling driver source, executing
the make_drv toselect the target chip type to compile. For example:
4.  Compilation Settings in Makefile
4.1.  Adding orSelecting T arget Platform
The default target platform is PC-Linux, if you donot want tocompile driver for
otherplatforms you canskip this section.
T o  add  or  select  target  platform  for  compilation,  we  provide  two  sections  in
Makefile:  1)  platform  selection  section  and  2)  platform  setting  section.  First,  you
should look atthe platform selection section of Makefile:
The  platform  selection  section  consists  of  entries  with ‘CONFIG_PLA TFORM_’
prefix.  Only  one  entry  is  allowed  to  be  set  with  value  ‘y’   and  others  with  ‘n’.  The
CONFIG_PLA TFORM_I386_PC                  y
CONFIG_PLA TFORM_ANDROID_X86  n
CONFIG_PLA TFORM_ARM_S3C2K4      n
CONFIG_PLA TFORM_ARM_PXA2XX      n
CONFIG_PLA TFORM_ARM_S3C6K4      n
CONFIG_PLA TFORM_MIPS_RMI      n
CONFIG_PLA TFORM_RTD2880B    n
CONFIG_PLA TFORM_MIPS_AR9132      n
CONFIG_PLA TFORM_MT53XX    n
CONFIG_PLA TFORM_RTK_DMP    n
root@rtl8188C_8192C_8192D_usb_linux_v3.3.0_2920.20111123#./make_drv
Please select chip type(1/2):
1) RTL8192cu
2) RTL8192du
#?1
You have selected RTL8192cu
3
‘CONFIG_PLA TFORM_I386_PC’  is selected bydefault.
We  can  select  an  existing  entry  or  add  new  entry  for  your  target  platform.  For
example, toadd andselect a new entry , ‘CONFIG_PLA TFORM_NEW’:
Second, you shouldcreateand/or modify the corresponding  entry inside platform
settingsection. For example, addingthe following entry  in platform setting sectionfor
‘CONFIG_PLA TFORM_NEW’  we justadd:
4.2.  PlatformSetting Section in Detail
EXTRA_CFLAGS
The  EXTRA_CFLAGS  is  usually  used  to  carry  some  additional  settings  at
compilation time throughmacro definitions.
Macro  Effect
CONFIG_BIG_ENDIAN  Define some internal data structure as big endian.
CONFIG_LITTLE_ENDIAN  Define some internal data structure as little endian.
CONFIG_MINIMAL_MEMORY_USAGE  For  better  performance  in  powerful  platform,  we
allocate  large  physical  continuous  memory  as  TX/RX
IO  buffers.  In  some  embedded  platform,  there  is
chance  to  fail  to  allocate  memory .  Define  this  macroto
prevent this situation.
CONFIG_PLA TFORM_ANDROID  Older  Android  kernel  do  not  has  CONFIG_ANDROID
defined.  Define  this  macro  to  force  the  Android
corresponding  code  inside  our  driver  to  be  compiled.
For  newer  Android  kernel,  it  has  no  need  to  define  this
macro,  otherwise,  warning  message  about  redefinition
will show up
ifeq ($(CONFIG_PLA TFORM_NEW), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /opt/new/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
KSRC := /opt /new/kernel
endif
CONFIG_PLA TFORM_I386_PC          n
CONFIG_PLA TFORM_NEW    y
4
ARCH
TheARCH is used to specify the architecture of the target platform CPU, such as:
arm, mips, i386, etc.
CROSS_COMPILE
The  CROSS_COMPILE  is  used  to  specify  the  toolchain  prefix  used  for  driver
compilation.
KSRC
The  KSRC  is  used  to  specify  the  path  of  kernel  source  used  for  driver
compilation
MODULE_NAME
Differentmodule name is assigned to drivers for different chips:
If you  wantto change  the module name,  you can set value of MODULE_NAME
here. For example, settingmodule name as ‘wlan’:
4.3.  Other Compilation Settings
We still have some compilationsettings couldbe applied. For settings andfurther
informationaboutpowersaving mode, please refer to:
document/HowT o_enable_the_power_saving_functionality .pdf.
If  you  know  what  the  macro  means  in  the  autoconf  file,  you  could  modify  the
Chip type  Default module name
RTL8192CU-series  8192cu
RTL8192CE-series  8192ce
RTL8192DU-series  8192du
RTL8192DE-series  8192de
RTL8723AS-series  8723as
RTL8723AU-series  8723au
RTL8189ES-series  8189es
RTL8188EU-series  8188eu
ifeq ($(CONFIG_PLA TFORM_NEW), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /opt/new/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
KSRC := /opt /new/kernel
MODULE_NAME := wlan
endif
5
configuration  by  yourself.  See  the  following  table  for  the  autoconf  file  you  should
modifyfor a specific chip type:
5.  Integrating DriverSource into Linux Kernel T ree
This paragraph is for integrating our driver source into Linux kernel tree and
buildingsystem. If you havenoneedtodo this, simplyskip this paragraph.
For compoundrelease driver source, make_drvshould be execute to select chip
typefor the driver source. Please refer to:
“3. SelectingChip T ypewith make_drvScript (for compound release)”.
For  different  chip  types,  we  have  different  suggestions  for    and
touse for the integration process:
Assuming  the  driver  source  is  for  RTL8192CU-series,  to  integrate  driver  source
into kernel buildingsystem, go through the followingsteps:
1).  Copy  the  driver  source  folder  into  drivers/net/wireless/  and  rename  it  as
, rtl8192cu.
Chip type  Autoconf file to modif y
RTL8192CU-series  autoconf_rtl8192c_usb_linux.h
RTL8192CE-series  autoconf_rtl8192c_pci_linux.h
RTL8192DU-series  autoconf_rtl8192d_usb_linux.h
RTL8192DE-series  autoconf_rtl8192d_pci_linux.h
RTL8723AS-series  autoconf_rtl8723a_sdio_linux.h
RTL8723AU-series  autoconf_rtl8723a_usb_linux.h
RTL8189ES-series  autoconf_rtl8189e_sdio_linux.h
RTL8188EU-series  autoconf_rtl8188e_usb_linux.h
Chip type   
RTL8192CU-series  CONFIG_RTL8192CU  rtl8192cu
RTL8192CE-series  CONFIG_RTL8192CE  rtl8192du
RTL8192DU-series  CONFIG_RTL8192DU  rtl8192du
RTL8192DE-series  CONFIG_RTL8192DE  rtl8192de
RTL8723AS-series  CONFIG_RTL8723AS  rtl8723as
RTL8723AU-series  CONFIG_RTL8723AU  rtl8723au
RTL8189ES-series  CONFIG_RTL8189ES  rtl8189es
RTL8188EU-series  CONFIG_RTL8188EU  rtl8188eu
6
2).  Add  the  following  line  into  drivers/net/wireless/Makefile,  CONFIG_RTL8192CU
is for , rtl8192cuis for :
3).  Add  the  following  line  into  drivers/net/wireless/Kconfig,  rtl8192cu  is  for
:
4).  Config  kernel, for example, with  ‘make menuconfig’  command  to select ‘y’  or ‘m’
for our driver .
5).  Now, you canbuild kernel with ‘make’ command.
6.  Compiling Driver
6.1.  Compiling Driverin DriverSource Folder
For compilingdriver inthe originaldriver source folder , simply cd into the
driver source folder andstart builddriver with ‘make’  command.
If everything goes well, it will produce a MODULE_NAME.ko file. The
MODULE_NAME is specifiedinMakefile. Please refer to:
“MODULE_NAME” in “4.2. Platform SettingSection in Detail”.
6.2.  Compiling Driver under Kernel Tree
For compilingdriver under kerneltree, please refer to:
“5. IntegratingDriver Source intoLinux Kernel Tree”.
7.  DriverInstallation
If you  have compiled Wi-Fi  driveras  kernel module and produced a .ko file  such
as 8192cu.ko, you should insert driver module with ‘insmod’  command:
As for driver compiledin kernel, it has no needtodo ‘insmod’ command

0 0
原创粉丝点击