历史上的今天
今天是:2025年04月16日(星期三)
2020年04月16日 | jz2440 ----移植自制的USB RTL8188EUS网卡驱动
2020-04-16 来源:eefocus
1:google 下载rtl8188eus的网卡驱动源码
https://github.com/quickreflex/rtl8188eus
2.解压缩下载的文件,把驱动文件rtl8192_8188eus_linux_xxx.tar.gz(xxx是版本号)添加到要编译的内核树里面去
(1)假定你的内核位置为/root/linux-kernel,解压缩驱动文件,并且把解压缩后的驱动文件夹名改为rtl8192eus。
(2)把改好名字的驱动文件夹rtl8192eus复制到/root/linux-kernel/drivers/net/wireless/下。
(3)修改/root/linux-kernel/drivers/net/wireless/下的Makefile和Kconfig文件,在Makefile添加obj -$(CONFIG_RTL8192EU) += rtl8192eu/,在Kconfig下添加 source "drivers/net/wireless/rtl8192cu/Kconfig"。
(4)make menuconfig 配置内核,在Device Drivers/Network device support/Wireless LAN下选中8192cu,编译内核。

kernel/drivers/net/wireless/Makefile

这里的CONFIG_RTL8188EU名字必须是 8188eus/Konfig里面的指定的名字

kernel/drivers/net/wireless/Kconfig下添加 source "drivers/net/wireless/rtl8192cu/Kconfig

3. (1)make menuconfig,将8188eus配置编译进内核:
在Device Drivers/Network device support/Wireless LAN下选中Realtek 8188E USB WiFi

另外 根据其它网友的经验需要将下面配置也添加进去,防止编译出错
进入内核目录,make menuconfig
[*] Networking support —>
[*] Wireless —>

Device Drivers —> [*] Network device support —> Wireless LAN —> [*] Wireless LAN (IEEE 802.11) <*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)

保存退出后,vi .Config

3 (2) make uImage 成功 烧录到开发板 插入USB wifi

ifconfig wlan0 up ,

4.
(1)应用软件测试 https://code.google.com/archive/p/starterkit-org/downloads
下载软件:

(2)tar -xvf wireless_tools.30.rtl.tar.gz

vi Makefile (没有看到configure 文件)

sudo make DESTDIR=$PWD/tmp install (可以不用修改)

nfs 30000000 192.168.2.102:/work/nfs_root/uImage_wifi
/ # mount -t nfs -o nolock,vers=2 192.168.2.102:/work/app/wireless_8188eus/wirel
ess_tools.30.rtl /mnt 成功挂载后,可以执行命令!
如何设置上电启动挂载文件系统:
set bootargs console=ttySAC0,115200 init=linuxrc root=/dev/nfs nfsroot=192.168.2.102:/work/nfs_root/fs_mini_mdev_new ip=192.168.2.5:192.168.2.102:192.168.2.1:255.255.255.0::eth0:off
###############################################################################################
关于-/bin/sh:xx(命令) not found 的几种原因:
1./bin/目录下没有这个命令;
2.bin/目录有这个命令,只是执行权限不够,或者程序执行权限不够;
3.程序需要的静态库或者动态库没有;
解决办法:
原因一的解决方法:安装busy box将busy box支持的命令安装到文件系统的bin目录下;(只要安装了busy box它会自动加载命令到bin目录下,这个你懂的,若不懂请看我的博文《根文件系统的制作》)
原因二的解决方法:在/bin/目录下找到对应的命令,修改其权限为777;具体操作: chmod 777 xx(命令) 【附加:在编写执行脚本文件时不能运行也大多是没有修改脚本权限的问题(命令其实就是一个特殊的脚本)】
原因三的解决方法:
(1)最“高效”的解决方法:用命令:arm-linux-readelf -d xxx(目标文件/命令) 查看xxx使用的动态库
如图:我的iwlist命令使用的动态库是libiw.so.29 、libm.so.6 和libc.so.6
于是我便去交叉编译器所在目录/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的动态库中寻找所需的上面三个库libiw.so.29 、libm.so.6 和libc.so.6 ,并复制到根文件系统的lib目录下:
(注意:这里我使用交叉编译器的版本为4.3.2的版本所以目录4.3.2有所不同即到/usr/local/arm/(编译器版本)/arm-none-linux-gnueabi/libc/armv4t/lib下的动态库中寻找)
(2)最“2”最笨的方法:把/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的所有动态库都拷贝到根文件系统的lib目录下;(但是这种方法在嵌入式开发里面无意增加了成本,拷贝了一些不必要的动态库文件,增大了根文件系统的体积)
参考这个后,我发现是库文件也在相应的目录,权限也打开了,就是iw list 一直-/bin/sh:xx(命令) not found ,分析后发现
我用的文件系统是jz2440的移植的系统,而我copy的库文件 实际是在ubuntu的网络文件里面,所以可以尝试挂载网络文件系统来解决!
set bootargs console=ttySAC0,115200 init=linuxrc root=/dev/nfs nfsroot=192.168.2.102:/work/nfs_root/fs_mini_mdev_new ip=192.168.2.5:192.168.2.102:192.168.2.1:255.255.255.0::eth0:off




可能iphone没有设置wep加密方式导致,无法验证这个功能
下面验证wpa加密方式:
b.1 先编译它的依赖libopenssl ----》该文章有记录
b.2 要有一个配置文件.config
tar xzf wpa_supplicant-2.0.tar.gz
cd wpa_supplicant-2.0/wpa_supplicant/
cp defconfig .config
修改.config加上一行: CONFIG_LIBNL32=y
修改Makefile:
CC=arm-linux-gcc
make 出现错误:/usr/bin/ld: cannot find -lnl-genl-3 和下面编译 hostapd 出现的error现象一样的!
分析原因:root@book-virtual-machine:/work/app/wireless_8188eus/libnl-3.2.23/tmp/include/libnl3# cp netlink -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
make DESTDIR=$PWD/tmp install
################################################################################

用hostapd配置WiFi作为AP接入点
(1)解压配置tar xzf hostapd-2.0.tar.gz
(2)
cd hostapd-2.0/hostapd
cp defconfig .config
vi .config // 添加一行: CONFIG_LIBNL32=y
vi Makefile // CC=arm-linux-gcc
make
make install DESTDIR=$PWD/tmp
cp tmp/usr/local/bin nfs...
操作:make 后出现
../src/drivers/driver_nl80211.c:22:31: fatal error:netlink/genl/genl.h: No such file or directory
原因:缺少libnl
解决方法:下载并编译安装libnl
tar xzf libnl-3.2.23.tar.gz
cd libnl-3.2.23/
./configure --host=arm-linux --prefix=$PWD/tmp
make // 修改lib/addr.c添加宏 出错
make install

lib/addr.c添加宏 从内核里面找到:
安装完成libnl后 再次make hostpad 仍然出现之前的错误,

1.怀疑编译的libnl库是不是没有放到相应的目录,导致环境变量里面没有这个文件

那就把所有libnl-3.2.23/incude目录下的文件copy 到环境变量的目录下:

2.重新编译 hostpad,出现新的错误

编译openssl
编译openssl:
http://www.openssl.org/
http://www.openssl.org/source/
tar xzf openssl-1.0.1d.tar.gz
cd openssl-1.0.1d/
./config shared no-asm --prefix=$PWD/tmp
修改Makefile:
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
MAKEDEPPROG= arm-linux-gcc
make 发现出现莫名奇妙的 编译错误,后面定位到没有加sudo 权限
make install 出现错误:
rm -f /usr/bin/pod2man 重新编译sudo make clean /sudo make + 重新安装即可sudo make install!
安装成功后!!!!
3.再次编译 之前的hostapd ,出现之前错误提示
../src/crypto/tls_openssl.c:17:25: fatal error: openssl/ssl.h: No such file or director ,明明已经安装了openssl ,为什么还是找不到ssh.h
root@book-virtual-machine:/work/app/wireless_8188eus/hostapd-2.0# vi src/crypto//tls_openssl.c

发现ssl.h是在openssl目录下,所以将openssl文件夹copy到/usr/local/include目录下
再次编译,错误消失,但出现下面的问题:

解决办法:
1.# gcc -libnl-3.so 查询库文件 libhdf5.so 是否能在搜索路径中找到。
![]()
若安装了软件,找到了库文件的路径。但是依然会提示上述错误。则表示gcc的搜索路径不包含该库文件所在的路径。将库文件所在的路径加入到搜寻路径中的方法为:
gcc中的默认头文件搜索路径
For C: gcc -xc -E -v -

没有看到/usr/local/lib 库
下一篇:JZ2440:时钟设置
史海拾趣
|
Wi-Fi 联盟 (Wi-Fi Alliance) 宣布,上海同耀通信技术有限公司最近成为该公司最新的授权测试实验室 (ATL),在中国主要的经济中心之一上海为其全球会员公司提供独立测试服务。该实验室于上月底完成了对其首个 Wi-Fi CERTIFIED 产品的测试。 同 ...… 查看全部问答> |
|
坛里一位工程师热情贡献 阿虚的S3C2410+Linux 学习笔记. 作者序言&致谢: 开学在即,为了记录暑期学习2410+Linux 的过程,我写下这篇文章。文章中可能有80% 的内容不是我原创的,但都是经过了我的验证 ...… 查看全部问答> |
|
见:http://download.ourdev.cn/bbs_upload353273/files_16/ourdev_460291.jpg 上面电路里,有一大串电容并连,为什么这样处理?… 查看全部问答> |
|
我这边拿到一个他们的开发包,我已经把程序移植到WINCE平台去了,但是该程序不提供播音功能, 我打电话问过,他们说播音接口根据平台自己实现,WINCE下一般用什么wave out之类的?还要管理缓冲之类的 请问下有没用过该产品的兄弟?告诉下怎么做? 重分奖 ...… 查看全部问答> |
|
一,常规现有的封装方法及应用领域 目前LED 的封装方法有:支架排封装,贴片封装,模组封装几种,这些封装方法都是我们常见和常用的。 支架排封装是最早采用,用来生产单个LED器件,这就是我们常见的引线型发 ...… 查看全部问答> |
|
void FlashErase() { uchar *p0; FCTL2 = FWKEY + FSSEL_1 + FN3 + FN4;//选择时钟源,分频 FCTL3 = FWKEY;//清除LOCK while(FCTL3 & BUSY);//如果出于忙,则等待 FCTL1 = FWKEY + ERASE;//使能段操作 p0 = (unsigned char *)0x1080;//数值 ...… 查看全部问答> |
|
作者:武汉华嵌嵌入式培训中心 技术部 通过对一个已经存在的Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件。以下直接对已有的Qt窗口部件进行子类化: 如下 ...… 查看全部问答> |
|
与连接器100P-JMDSS-G-1-TF(LF)(SN)配套的公座的型号是什么呢? 如题,买了TI的板子,但是上面有100P-JMDSS-G-1-TF(LF)(SN)这种母的连接器,用什么型号的连接器来扩展呢?… 查看全部问答> |





