MT7628 7688 SDK编译中的坑以及增加wifi驱动

最开始,第一步我们先拿最纯净的MediaTek_ApSoC_SDK_4300_20140916.tar开刀,不增加无线驱动。
1、按照sdk里的知道文档来说,先编译安装几个工具包的,编译mksquash_lzma-3.2的时候出现了如下问题:

[plain]    view plain  copy
  1. /home/test/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o):在函数‘sqlzma_un’中:  
  2. uncomp.c:(.text+0x67):对‘inflateReset’未定义的引用  
  3. uncomp.c:(.text+0xa7):对‘inflate’未定义的引用  
  4. uncomp.c:(.text+0x1b2):对‘zError’未定义的引用  
  5. /home/test/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o):在函数‘sqlzma_init’中:  
  6. uncomp.c:(.text+0x3f0):对‘inflateInit_’未定义的引用  
  7. collect2: 错误: ld 返回 1  
  8. make[1]: *** [unsquashfs] 错误 1  

首先,需要确保安装了zlib库。zlib1g,zlib1g-dbg,zlib1g-dev

其次,打开安装目录下的squashfs3.2-r2/squashfs-tools,找到Makefile文件,找到

[plain]    view plain  copy
  1. LDLIBS += -lz -L${LzmaAlone} -L${LzmaC}  
把 -lz 去掉,成:
[plain]    view plain  copy
  1. LDLIBS += -L${LzmaAlone} -L${LzmaC}  

然后在找到包含LDLIBS的两行,后边添上 -lz 即可

[plain]    view plain  copy
  1. mksquashfs: LDLIBS += -lpthread -lunlzma_r -llzma_r -lstdc++ -lz  
  2. unsquashfs: LDLIBS += -lunlzma -lz  

./configure

make

make install

编译成功!


2、在编译 squashfs4.2时候编译出现以下错误:

gzip_wrapper.c:23:18: fatal error: zlib.h: No such file or directory compilation terminated.

make: *** [gzip_wrapper.o] Error 1

出现此错误需要安装一个软件:

sudo apt-get install zlib1g-dev

如果编译仍然出现
fatal error: lzma.h: No such file or directory错误,

需要安装一下“:

liblzma-dev
可以从 sudo apt-cache search "liblzma"
找到软件包后
sudo apt-get install liblzma-dev
安装完成后就可以编译通过
3、此时可以顺利编译通过SDK了,可以生成二进制image,下载到7628板子后,发现、竟然发现lzma他大爷校验的错误?有木有?什么意思嘛!!!
"lzma error 1 -must reset board to recover" 
后来用度娘一搜,manfeel大神碰到过这个问题,问题源自于lzma版本错误,再次感谢manfeel!
 

进入source/vendors/Ralink/MT7628,查看Makefile

发现这个该死的Makefile调用的居然是系统默认的lzma文件,Ubuntu12.04的lzma版本是:

xz (XZ Utils) 5.1.0alpha         liblzma 5.1.0alpha

果断修改,将4.32.7版本的lzma拷贝到source目录,修改Makefile如下:

#manfeel, do NOT use the system default lzma(5.1.0alpha), just use the 4.32.7
image: mkimage
    $(CROSS_COMPILE)objcopy -O binary -R .note -R .comment -S $(ROOTDIR)/$(LINUXDIR)/vmlinux  $(KERNELZ)
    cd $(IMAGEDIR) ; rm -f $(KERNELZ).*; ../$(COMP) -v -9 -f -S .$(COMP) $(KERNELZ)

读者需自行搜罗 lzma-4.32.7.tar并编译,得到的lzma可执行文件放在上边的source目录即可。
mango@mango-V:~/RT288x_SDK/source$ ls
autoconf.h   config.in  lib             linux-2.6.36MT.x  lzma       romfs     uClibc-0.9.33.2
config       History    linux-2.4.x     linux-2.6.36.x    Makefile   tools     user
config.arch  images     linux-2.6.21.x  linux-3.10.14.x   PatchList  uClibc++  vendors
mango@mango-V:~/RT288x_SDK/source$ ./lzma --version
LZMA command line tool 4.32.7
LZMA SDK 4.32
mango@mango-V:~/RT288x_SDK/source$ 

到这之后,可算能跑了

4、接下来,将无线驱动MT7688_LinuxAP_V4.0.1.0-Alpha_DPA_20140811.tar解压,会解压处mt_wifi和mt_wifi_ap两个文件夹,将这两个文件夹拷贝到RT288x_SDK/source/linux-2.6.36.x/drivers/net/wireless$下。接下来,我犯了一个巨大的错误,我错误的认为将wireless下的Kconfig改一下,也就是在该文件中增加source “mt_wifi_ap/Kconfig”就可以了,接着就这么做下去,发现一下问题:
a.MT_TX_COUNTER错误
后来想了半天,源码是不会有错的,而且环境也配置的差不多了,应该也没错。后来又是一顿搜,发现source顶层目录有一个ralink目录,心想“该目录会不会有诈?一般很少有人将代码放到内核源码的顶层,这么做很不科学的”。
打开这个目录下的Kconfig,发现已经有了如下几行,只不过注释掉了。

原来猫腻就在这,他source的是embedded下的Kconfig,而该Kconfig里又引入了mt_wifi_ap/Kconfig。
将最后那句source注释掉。至此,Kconfig修改完毕,接下来配置内核。


顶层source目录make menuconfig,勾选Default all settings,Customize kernel Setting。最后yes,会自动进入Linux Kernel Configuration。

Ralink Module->WiFi Driver Support:


进入Option下,去掉WAPI支持(如果有WAPI会编译错误,先去掉再说):


好了,一路推出保存,再make dep,make

最后编译出个mango_uImage,烧入板子即可启动。

最后,会搜到一个MT7628_AP的无线,可以连上把玩一番。
编译过后,其实只是一个开始,以后还要移植到openwrt上,继续加油吧。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值