完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 caolidong 于 2013-5-9 18:57 编辑 话说上回说到Zing开发板linux系统下挂载U盘,又憋了几天,linux系统内核已经加载了,但还是不能识别U盘。还是先附上我的构建交叉编译器的过程,供各位发烧友吐槽下。 直接上步骤有些费解,所以先提下为什么要构建交叉编译器? 交叉编译,是在一个平台上生成另一个平台上的可执行代码。所谓平台,包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。 构建交叉编译器主要原因是嵌入式硬件(目标机或开发板)的性能无法满足开发环境的要求,如主频比较低、内存少、没有硬盘(常用FLASH作为存储设备)、没有大型显示设备、没有全键盘等。因此采用PC作为主机来搭建开发环境进行编译,但编译出的文件能够在特定CPU体系架构的嵌入式硬件上运行。 下面开始建立交叉编译环境: 第一步:安装VMware虚拟机下Ubuntu11系统(推荐网址http://bbs.xda.cn/thread-11269029-1-1.html) 第二步:实现Windows7系统与Ubuntu11系统共享文件夹,传说用SharingOptions即可,但我没有探索过,用的网址内老方法。(推荐网址http://henudxy.blog.163.com/blog/static/34637890201011191346482/) 第三步:安装交叉编译器。下载地址:https://code.google.com/p/zedboard-book-source/downloads/detail?name=xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin&can=2&q= 由于ubuntu6.10后的版本将默认的bash更换为dash,安装交叉编译器时会报错,错误处理方法:在终端输入: ※sudo dpkg-reconfiguredash 再在弹出的菜单中选“NO”即可。 第四步:修改bash.bashrc文件。终端输入“gedit /etc/bash.bashrc” ※注意:指令gedit后必加空格。 打开bash.bashrc文件后做如图修改:(看不清楚,请点击图片)
报错1:有时对某些文件做了修改后,在终端里输入任何指令都报错: ※The command could not belocated because '/usr/bin' is not included in the PATH environment variable. sudo: command not found。 是路径问题,先查看$PATH变量的设置:echo$PATH 没包含/usr/bin这个路径,执行下面命令就可以将这个路径包含进去:export PATH=/usr/bin/:$PATH 如果想每次登陆都自动包含这个路径,可以把刚才的命令加入到/root /.bash_profile或者/root/.bashrc文件的后面。 报错2: ※(gedit:2976):EggSMClient-WARNING **: Failed to connect to the session manager: None of theauthentication protocols specified are supported Su登录到root,只能切换到管理员用户权限,不使用管理员的登陆脚本和搜索路径 su - 不但能切换到管理员权限而且使用管理员登陆脚本和搜索路径 解决方法:使用sudo gedit 或者su -后再gedit就没错误了! 经过以上几步,就构建好了交叉编译器,现在可以在ubuntu-下建立个简单的C程序,如“Hello world”,编译时,在终端输入“arm-xilinx-linux-gnueabi-gcc./hello.c -g -o hello”,“ls”,系统会自动生成ZYNQ可执行的文件,存到U盘里。 下面就到了我摔倒的地方,根据Zing开发板硬件手册,将开发板经过跳线设置为SD卡启动,USB2.0设置为OTG模式,把Linux内核文件zImage、文件系统ramdisk8M.image、设备树devicetree.dtb、BOOT.bin引导程序四个文件拷贝到SD卡根目录下,这四个文件是开发板出厂时SD卡中自带的,我还傻了吧唧的在网上地毯式搜索。 SD卡插入开发板,连好UART线,插上U盘,就可以上电了,在PC的终端软件上可以看到初始化信息,如下图: U盘挂载上后输入以下指令就可以调取U盘中的程序了。 >mount /dev/U盘名 /mnt >/mnt/程序名 但是U盘一直没挂载上,可能是内核驱动问题,可能是芯片管脚定义问题,而开发板试用期将至,看来要等以后对Linux与Zing开发板有更深的了解的时候再试了,试着自己生成zImage、ramdisk8M.image、设备树、引导文件等。小贴士:1. GCC是一个用于linux系统下编程的编译器,是一个用于编程开发的自由编译器。最初,GCC只是一个C语言编译器,它是GNU CCompiler 的英文缩写。随着众多自由开发者的加入和GCC自身的发展,如今的GCC已经是一个包含众多语言的编译器了。其中包括 C,C++,Ada,Object C和Java等。 3. NULLpointer:空指针。 4. UTMI全称为 USB2.0Transceiver Macrocell Interface,此协议是针对USB2.0的信号特点进行定义的,分为8位或16位数据接口。 5. ULPI:用于高速通用串行总线(USB)和便携式USB(USB On-the-Go,OTG)收发器芯片的UTMI+ 低引脚数接口(ULPI) 6. USB OTG是USB On-The-Go的缩写,是近年发展起来的技术,主要应用于各种不同的设备或移动设备间的联接,进行数据交换。 7. BOOT.bin是引导程序,其组成包含三个文件:f***l.elf、system.bit、u-boot.elf。主要作用初始化PL( fpag部分)和PS(arm部分)及引导内核。 8. zImage 使用linux-2.6-xlnx内核,根据zing开发板定制。 9. ramdisk8M.image ,基本的文件系统。 10. devicetree.dtb,设备树是包含硬件配置信息的数据结构,包括cpu、内存、总线及相关外设,内核启动时,可以解析这些信息,以此来配置内核及加载相关驱动。 试用后记 入电子行业以来,我主要做的是硬件相关的,也学过51与arm,但FPGA接触的较少,所以我的帖子适合FPGA初学者,这一段时间感觉很多少见的问题都被我碰到了,把问题在网上一搜,中外网页也有类似的问题问到,但大都甚至Xilinx官网没有明确解答,一个问题憋了3、4天是常有的事。如果以后还有机会的话,我遇到关于FPGA的什么疑难杂症,以及是怎么解决的,会在电子发烧友网记录一下,以免别人遇到和我相同情况时也感到很无助,还因为电子发烧友网也是我处男帖的网站。 感谢电子发烧友对这次活动的筹划及科通公司对活动的大力支持,还希望电子发烧友论坛有机会再搞搞这方面的活动,我已经看到了各位发烧友在摩拳擦掌了,哈哈。 我是做安防监控行业的,平时也会搜集些关于FPGA算法的资料,FPGA可以涉及到下面的功能:ISP功能实现、3A、3D降噪、边缘增强、色彩还原、图像增强、对比度增强、宽动态增强、防抖、去雾、隐私遮挡、模式识别、线性化、坏点检测与矫正、Bayer插值等。 作为通过逻辑组合来实现各种功能的FPGA,几乎可以进行任何类型的处理,FPGA商已经将ARM嵌入FPGA,DSP集成到FPGA里也将是一种趋势,所以FPGA的前景很好看。ZYNQ器件的强大功能也带来了稍大尺寸的BGA封装,但一个高性能FPGA加上个ARM,也是很占板空间的,而且性能还不一定比ZYNQ好,因为做在一个芯片内,至少运行速度有很大提升,芯片的封装也决定做几层板够用,最近几年PCB板的层数的增多,成本的增长已经不太高了。 各位大人,贴中定有BUG,欢迎拍砖,希望您也聊聊这新一代的ZYNQ器件,这也是我们共同成长的过程。 |
|
相关推荐
|
|
顶了,继续学习。
|
|
|
|
|
|
1512 浏览 1 评论
1295 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1503 浏览 0 评论
922 浏览 0 评论
2300 浏览 0 评论
1453 浏览 35 评论
5641 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 01:47 , Processed in 0.787293 second(s), Total 75, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号