教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

ADSP BF609实际开发中的问题及解决(二)

来源:网络收集 时间:2026-06-20
导读: ADSP BF609驱动开发部分 ADSP BF609实际开发中的问题及解决(二) 1 BF609-ezkit移植uclinux(以太网可用) BF609-ezkit移植首先介绍ubuntu10的tftp服务器的安装,然后介绍BF609-ezkit的移植。 1.1 ubuntu10安装tftp服务器 第一步:安装server和client xhy@x

ADSP BF609驱动开发部分

ADSP BF609实际开发中的问题及解决(二)

1 BF609-ezkit移植uclinux(以太网可用)

BF609-ezkit移植首先介绍ubuntu10的tftp服务器的安装,然后介绍BF609-ezkit的移植。

1.1 ubuntu10安装tftp服务器

第一步:安装server和client

xhy@xhy-desktop:~$ sudo apt-get install tftpd tftp openbsd-inetd

第二步:建立tftp服务器目录

xhy@xhy-desktop:~$ cd /

xhy@xhy-desktop:~$ sudo mkdir tftpboot (根据自己的需要定义文件夹名称及位置) xhy@xhy-desktop:~$ sudo chmod 777 tftpboot (权限设置)

第三步:修改inetd启动文件

xhy@xhy-desktop:~$ sudo gedit /etc/inetd.conf

修改后的文件内容如下:

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot

注:/tftpboot为你设置的tftp服务器目录

第四步:重新启动inetd服务

xhy@xhy-desktop:~$sudo /etc/init.d/openbsd-inetd start

第五步:重启电脑

xhy@xhy-desktop:~$sudo reboot

第六步:测试环境

xhy@xhy-desktop:~$sudo ifconfig eth0 192.168.1.111 netmask 255.255.255.0

xhy@xhy-desktop:~$sudo ifdown eth0

xhy@xhy-desktop:~$sudo ifup eth0 (根据实际情况,通过ifconfig可以得到IP,无需这3步)

xhy@xhy-desktop:~$cd /tftpboot

xhy@xhy-desktop:~$touch test (产生一个测试文件)

xhy@xhy-desktop:~$cd /home/xhy (随便一个非tftpboot文件夹)

xhy@xhy-desktop:~$tftp 192.168.1.111 (自己的IP)

tftp> get test

注:如果看到test文件已经在你现在所在的目录(xhy)下,那就是成功了

1.2 BF609-ezkit移植uclinux

在调试bf609-ezkit v0.1版的过程中。开发板的flash已经由ADI烧了处理好的u-boot。且以太网部分可用。在PC端,采用的开发环境是vmware下的ubuntu10.

ADSP BF609驱动开发部分

在ubuntu10开启tftp服务后(前面已讲)。将已经编译好的uimage文件放到tftpboot目录。然后在超级终端上设置u-boot的env。关键的设置参数有ipaddr, serverip, gatewayip,设置指令为setenv ipaddr 192.168.61.104.其它参数类似。

设置好后,可能通过printenv ipaddr来查看。最后保存到flash中,指令为saveenv。ipaddr指开发板自身的ip地址,设置成跟tftp服务机ip地址同一网关的地址。serverip即为提供tftp服务的机器IP。我的ubuntu10 IP为192.168.61.103,windows ip为192.168.61.100.则此处serverip为192.168.61.103。gatewayip为192.168.61.1.

这些设置好后,复位开发板,自带的u-boot就会从设置好的server机器上load uimage文件。然后自己按照bootcmd,运行bootm,进入linux。

此处uimage有两个版本,一个是通过在uClinux-dist下编译生成的uclinux的uimage文件,一个是在buildroot下编译生成的linux uimage文件。这两个文件通过这种方式下载到开发板以太网都可以使用。

但是之前通过SD load uimage文件或通过tftpboot load uimage文件时,虽然uclinux文件都可以跑起来,但是以太网没有驱动起来,ifconfig时,没有eth0. 后来通过上述u-boot自行ftp load uimage文件发现在bootm之前要先运行addip。即:通过SD卡load时,在指令fatload mmc 0 0x1000000 uimage后,需要运行run addip,然后运行bootm。通过tftpboot时,运行tftpboot uimage后,也是需要运行run addip后再运行bootm.以太网部分功能即可正常。

通过u-boot的env可以看到,addip是set bootargs $(bootargs)ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname):eth0:off

这个可能是设置激活本地eth0。具体还需要进一步研究。

2 Linux字符设备驱动insmod version错误备注

在基于BF609开发驱动时,先做了最简单的字符型设备驱动尝试。编译环境是在PC xp下运行的vmware ubuntu10.04。交叉编译环境为bfin-uclinux,linux kernel为ADI网站提供的最新代码。

在驱动代码写好后,配置好konfig文件和makefile文件,设置为module。make menuconfig后,进行make modules SUBDIRS=drivers/char。将module型的驱动生成.ko文件。将.ko文件下载到板上后,进行insmod操作。发现反馈的信息为:

mydevice: version magic '3.3.0-ADI-2012R1-pre+ mod_unload modversions ' should be '3.3.0-ADI-2012R1-pre-00619-gab55153-dirty mod_unload '

insmod: can't insert 'mydevice.ko': invalid module format

在网上查了很多资料,知道是模块的编译工具版本和内核的编译工具版本不对所导致。但是之前没有做过驱动开发。很多知识不太清楚。不知道哪儿出错了。由于进行blackfin开发时,软件开发环境根据官网提供的信息,可有两种情况。一种是通过官网提供的uClinux包来开发uClinux。一种是通过官网提供的buildroot包来开发linux。由于ADI从bf60X开始,对于bf60X的开发支持只在buildroot上进行。因为我的开发包为buildroot。针对刚才insmod的问题,经过仔细检查,发现在环境变量设置tools chain时,出现了问题。板上下载好的uImage文件是buildroot编译所得,模块编译是在linux kernel下编译所得,而环境变

ADSP BF609驱动开发部分

量设置时又出现了问题,导致了版本信息不同。

不过从给出的message来看,模块的vermagic信息为 3.3.0-ADI-2012R1-pre+ mod_unload modversions 。它是有kernel目录下的include/linux/vermagic.h文件决定的。其中具体的信息又由文件中vermagic string决定。

另外在进行menuconfig时,进行module设置时,有以下几项:

再由打印出来的module vermagic:3.3.0-ADI-2012R1-pre+ mod_unload modversions 可知。3.3.0-ADI-2012R1-pre+为kernel version信息。至于后面的那个+号是没有显示kernel的补丁信息。mod_unload 为上图module menuconfig时设置的,保证模块与内核此处一致就行,还有后面的modversions与此类似。但是非常重要的一点是,在vermagic string里面的第一条UTS_RELEASE,规定了模块中kernel version的信息,UTS_RELEASE在include/generated/UTSRELEASE.h中可以查看。但是该文件只有在menuconfig时,配置了

此项才会生成。这样编译生成的.ko文件vermagic信息才会对应kernel完整的version信息。

至此,insmod关于版本信息的问题解决了。但是这个问题后,insmod时,又出现Unknown symbol _mcount (err 0)的错误。目前正在处理中。

3 BF60x Linux基础字符设备驱动开发笔记

开发环境:vmware : ubuntu10.04,交叉编译环境为blackfin官网2012R1版本buildroot。 上一节中已经编译好了基本的驱动模块。以及版本对应的内核uimage文件。解决了版本信息不一致的问题后,遇到过insmod时,出现 unknown symbol __mcount in module, or unknown paramet错误。花了一个星期时间查阅了很多的网站,始终没有找到解决的办法。有的说是模块间调用,存在依赖关系,没出处理好导致。有的是License问题等。但我做的是最基础的字符设备驱动,根本没有模块调用什么的。后来有人说是模块文件所在文件夹的问题。经确定,问题就出在这 …… 此处隐藏:5655字,全部文档内容请下载后查看。喜欢就下载吧 ……

ADSP BF609实际开发中的问题及解决(二).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1763244.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)