Advertisement

关于rt3070驱动编译问题(2)

阅读量:

此前也曾编写过一个 RT3070 驱动,在使用 mini2440 开发板时遇到了诸多技术难题但最终一一克服了这些困难。

近几日专注于在另一块 Sam9x5 板子上移植先前开发的 RT3188 系列驱动,在此过程中由于经验不足曾以为较为简单然而事实证明这其中确实存在不少以往未曾遭遇过的挑战。

尽管面临诸多技术难题但由于积累的经验和技术积累最终还是迎刃而解了这些问题并顺利完成了移植工作这部分内容将在后续博客中详细讲解主要关注分享的是在移植过程中所遇到的具体问题及其解决方案

最初我在平台上选择了 PLATFORM = IXP。我对平台的选择尚不熟悉。仅知道这与芯片相关。但每个/platform具体代表哪个厂家的芯片我不太清楚。如有了解的朋友可在评论区分享一下对此表示感谢。因为我在网上看到有人使用ATMEL芯片也选择了这个平台。编译过程中出现了以下错误信息:

mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c: In function 'NICInitRecv':
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:3: error: implicit declaration of function 'usb_buffer_alloc'
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:30: warning: assignment makes pointer from integer without a cast
/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:818:4: error: implicit declaration of function 'usb_buffer_free'
make[2]: *** [/mcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.o] Error 1
make[1]: *** [module/mcuzone/wifi/rt3070sta/os/linux] Error 2
make[1]: Leaving directory `/mcuzone/work/linux-2.6.39'
make: *** [LINUX] Error 2

以前编译时好像也出现过类似问题,记得是内核没编译好的原因,于是一遍遍的编译内核,在测试,但没有解决。关于内核的配置,这个博客写得比较详细<>。想了想可能是平台的原因,平台不同,CFLAG也就不同,于是选择以前用的平台PLATFORM = PC。编译时出现问题如下:

/cmcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c: In function 'NICInitRecv':
/cmcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:3: error: 函数'usb_buffer_alloc'的隐式声明
/cmcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:789:30: warning: 警告:赋值操作将整数转换为指针而不进行显式转换
/cmcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.c:818:4: error: 函数'usb_buffer_free'的隐式声明
make[2]: *** [/cmcuzone/wifi/rt3070sta/os/linux/../../common/cmm_mac_usb.o] 出现第一个错误
make[1]: *** [module/cmcuzone/wifi/rt3070sta/os/linux] 出现第二个错误
make[1]: 离开目录 `/cmcuzone/work/linux-2.6.39'
make: *** [LINUX] 出现第二个错误

由于我对所有内核相关配置均已进行了设置,并对可能不需要的部分进行了编译成模块处理。因此可以排除当前内核作为可能的原因。在之前的测试中,在... 2.x系列中发现了一些异常现象。这可能与不同内核版本之间的差异有关。经过一番排查后,在测试环境中的... 1.x系列中发现了这一问题的具体表现形式,并成功定位到相关代码逻辑存在的缺陷。为了进一步验证这一假设,请具体修改include/os/rt_linux.h文件中的相应参数设置并重新运行测试程序。这样会导致编译过程中出现问题吗?如果确认存在上述问题,则需要重新审视并优化相关的数据结构设计;否则无需采取任何特别措施即可继续使用现有代码框架完成后续开发工作

#define RT_USB_AlgFreeBuf(pUsb_Dev,BufSize,pDma_addr) usb_buffer_alloc(pUsb_Dev,BufSize,GFP-Atomic Address,pDma_addr)
#define RT_USB_FreeBuf(pUsb_Dev,BufSize,pTransferBuf) usb_buffer_free(pUsb_Dev,BufSize,pTransferBuf)

随后,在'Make'方面也取得了进展。实现了相应的功能模块,并通过测试。第一个遇到的问题是PLATFORM = IXP设置失败,请如果有人能够提供解决方案会感激不尽。

全部评论 (0)

还没有任何评论哟~