UBOOT 移植操作(1)

    技术2022-05-11  104

    [0]目录结构◆ board:和一些已有开发板有关的文件,比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。 ◆ common:与体系结构无关的文件,实现各种命令的C文件。 ◆ cpu:CPU相关文件,其中的子目录都是以U-BOOT所支持的CPU为名,比如有子目录arm926ejs、mips、mpc8260和nios等,每个特定的子目录中都包括cpu.c和interrupt.c,start.S。其中cpu.c初始化CPU、设置指令Cache和数据Cache等;interrupt.c设置系统的各种中断和异常,比如快速中断、开关中断、时钟中断、软件中断、预取中止和未定义指令等;start.S是U-BOOT启动时执行的第一个文件,它主要是设置系统堆栈和工作方式,为进入C程序奠定基础。 ◆ disk:disk驱动的分区处理代码。 ◆ doc:文档。 ◆ drivers:通用设备驱动程序,比如各种网卡、支持CFI的Flash、串口和USB总线等。 ◆fs:支持文件系统的文件,U-BOOT现在支持cramfs、fat、fdos、jffs2和registerfs。 ◆ include:头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。 ◆ net:与网络有关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。 ◆ lib_arm:与ARM体系结构相关的代码。 ◆ tools:创建S-Record格式文件 和U-BOOT images的工具。

    ==========================================================================================[1]u-boot.1.1.2目录下有Makefile1)设置编译器可以看到这一项:ifeq ($(ARCH),arm)CROSS_COMPILE = arm-linux-

    也就是说这里所用的交叉编译器是arm-linux-gcc,u-boot默认是用这个的,也有用arm-elf-gcc的,arm-elf-tools-20030314.sh,用它来编译,没有问题。如果最后MAKE的时候提示找不到arm-linux-gcc就是这错了,改一下。

    arm-elf-gcc是用来编译uClinux内核的工具,arm-linux-gcc用来编译LINUX2)加进自己板子的项目搜索B2的这部分文件B2_config      :      unconfig       @./mkconfig $(@:_config=) arm s3c44b0 B2 dave

    后面加上这部分:TT_config       :      unconfig       @./mkconfig $(@:_config=) arm s3c44b0 TT T2T切记在@./mkconfig $(@:_config=) arm s3c44b0 TT T2T前面的是Tab来的,TT_config       :      unconfig也是一样,不能用空格代替,因为它是靠这个来识别命令的

    ==========================================================================================

    [2]在宿主机(PC机)上建立arm-elf-gcc交叉编译环境

    1)建立arm-linux-gcc编译环境在RedHat Linux系统下以root用户登录,将cross-2.95.3.tar.bz2文件复制到/目录下,安装:# tar jxvf cross-2.95.3.tar.bz2这个命令会在你的/usr/local/arm/2.95.3目录下安装 arm-linux-gcc 交叉编译程序,然后在PATH变量中添加一项:/usr/local/arm/2.95.3/bin.[root@localhost root]# export PATH=$PATH:/usr/local/arm/2.95.3/bin

    或把PATH=:$PATH:/usr/local/arm/2.95.3/bin添加到/ETC/bash_profile文件中

    或者在/etc/bashrc文件中添加一项: export PATH=:$PATH:/usr/local/arm/2.95.3/bin之后可以测试一下 echo $PATH

    注意:PATH大小写不一样,另外LINUX下大小写是不同的,以后不特别声明。

    注意:命令中的参数之间都由单个空格或者TAB隔开,命令前有的有# 代表命令行符,不用输入。

    注意:不可在WINDOWS下用winRAR解压u-boot-1.1.2.tar.bz2或u-boot-1.1.2.tar.gz这种文件,会少文件,去LINUX下,另外解压的时候也不用非点用命令行操作,LINUX现在对GUI已经支持的非常好了,比如解压只要右键点文件,选解压到当前文件夹就可以,执行的时候只要双击再选“执行”

    注意:我用的VMWARE(虚拟机)装的LINUX,要在LINUX和WIN中间传递文件用VM-》SETTING里的SHARE FOLDER该功能是把WIN 下的一个文件夹共享给LINUX。这个功能必须装VMWARE TOOLS才能用,装VMWARE TOOLS方法:首先在VM-》SETTING里CDROM项里把光驱设置为装入VMWARE安装文件夹下的LINUX工具的.ISO,LUINUX下就出现CDROM了 拷贝 解压 安装不在话下。必须注意的是VMWARE TOOLS在每次重起LINUX之后还必须也重起一下,TMD,谁搞定不用重起告诉我一声重起的方法:/etc/init.d/vmware-tools restart就有消息出来了

    注意:另外郁闷的是我的WIN与LINUX之间复制文字似乎也不顺畅,干脆在SHARE FOLDER里建立一个TXT,两个系统捣文字玩~~

    测试:把终端关闭,重新打开后执行如下命令:

    # arm-linux-gcc –v

    建立好交叉编译环境后可以试着编译u-boot了2)也可以建立arm-elf-gcc与上面类似,用周立功的编译包直接安装会在/usr/local/bin下产生arm-elf-gcc只类的文件然后设置路径[root@localhost root]# export PATH=$PATH:/usr/local/arm-elf/bin======================================================================================================[3] 测试交叉编译器搞好没有 编译个44B0例子 在UBOOT包目录下执行一下命令,以下是编译的包自带的DAVE公司板子B2(名)1)     Make distclean (清除以前编译的痕迹)2)     Make B2_config(B2代表B2板子的,前面见到过)3)     Make 没问题就可以进行下面了注意:B2默认用arm-linux-gcc编译,要是前面安的arm-elf-gcc的话此时会报错 把UBOOT目录下的MAKEFILE按照前面说的改一下注意:一般说来还会有个问题,怀疑是编译器的问题 提示什么abi=apcs-gnu只类的找不到吧~~记不住了改UBOOT目录下config.mk (好象)文件里改成如下PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu,))原来的行少了$(call cc-option,-mabi=apcs-gnu,) 具体在哪行忘了 CTRL+F搜索一下其他应该没问题,有问题GOOGLE搜一下,不是通病就是自己安装的问题了注意:MAKE之后会生成三个文件: u-boot——ELF格式的文件,可以被大多数Debug程序识别; u-boot.bin——二进制bin文件,纯粹的U-BOOT二进制执行代码,不保存ELF格式和调试信息。这个文件一般用于烧录到用户开发板中; u-boot.srec——Motorola S-Record格式,可以通过串行口下载到开发板中。

     谢谢博主的总结,真的很好 发现一个小小问题(呵呵,有点吹毛求疵:) TT_config : unconfig @./mkconfig $(@:_config=) arm s3c44b0 TT T2T --根据makefile规则,此处只在 @ 前必须为TAB,其它的如在TT_config之后和unconfig之前是不一定用TAB的

    from http://mamajinco.blog.com.cn/archives/2006/1560078.shtml 


    最新回复(0)