嵌入式开发过程中烧写uboot和内核一些问题

本文详细介绍了嵌入式开发中遇到的交叉编译工具安装、uboot和kernel移植过程,以及rootfs制作与tftp、nfs等网络工具在开发中的应用。在交叉编译时可能出现的兼容性问题,uboot的配置与编译,内核的配置和编译,以及rootfs不同类型文件系统的移植是关键步骤。
摘要由CSDN通过智能技术生成

  做嵌入式开发工作,首先必须学会搭建嵌入式的开发环境,以便适应不同的项目不同的平台。大体来讲,主要分为五大块,即交叉编译工具、uboot、kernel、rootfs和其他的工具软件。


1. 安装交叉编译工具

       交叉编译,其实就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。

         一般的步骤是先复制到计划安装的目录下,然后进行解压,然后配置环境变量(可以对所有用户有效,也可以只对当前用户有效),然后进行检测。

         命令流程大概是:cp->tar xf->vi ~/.bashrc(一般选择当前用户) 或者是 vi /etc/profile,在其最后一行添加 PATH=/交叉编译器路径/bin:$(PATH)-->source ~/.bashrc (在不重启的前提下使配置生效)

         问题:一般来说,只要选择的交叉编译器支持所用的处理器,基本不会出什么问题。但是,会有一个兼容问题存在

         问题一:按照上述步骤安装好交叉编译器并且配置好环境变量,执行Makefile里的编译选项(例如arm-linux-)查看其版本信息,

                       ex:在终端输入:arm-linux-gcc -v 。正常会打印一串信息,

                            出错时则会打印/opt/4.3.2/bin/arm-linux-gcc: 行 3: /opt/4.3.2/bin/arm-none-linux-gnueabi-gcc: 没有那个文件或目录

                            问题分析:该问题的出现主要是因为该交叉编译器版本是32bit,而所用的虚拟机是64bit,存在兼容问题。

                            问题解决:暂时未找到有效的解决办法。只能是32bit的交叉编译器对应32bit的虚拟机;64bit的交叉编译器对应64bit的虚拟机

                            问题延伸:有一种方法作为参考,就是通过建立软链接(ln -s)来欺骗uboot和内核,理论上可以,但实际操作后有问题。

                                             按照此种方法,可以编译成功模块。但是安装模块时出现disagrees about version of symbol ---

                                                                                                                                    Unknown symbol ---(err -22)

                                             我暂把它归因于交叉编译器不匹配所导致的的问题,解决方法还是推荐32bit虚拟机用32bit交叉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值