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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




