ADSP BF609实际开发中的问题及解决(二)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




