注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

嵌入式开发实战3——uboot源码的修改之一  

2012-04-30 22:10:00|  分类: ARM开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

嵌入式开发实战3——uboot源码的修改之一

提前声明一下,这里主要参考了MINI2440资料和tekkamanninja博客及其修改后的源码,表示感谢。

这里再强调一下,源码使用的是2009-11月份的,大家可以直接去UBOOT的官网上来下载,因为上面使用FEDORA9不太好使,所以重新在UBUNTU9.10,这个是从ATMEL的开发资料上下载的。交叉编译器使用的是MINI2440自带的ARM-GCC-4.4.3(网上很用的是4.3.2,这个没什么区别)。WINDOWS是用的XPSP3,用SI来查看和修改UBOOT的源码。

因为要在WIN下修改和查看,所以使用了sourceinsight3.5,这里一开始就遇到了一个问题,如何把MAKEFILE和一些其它诸如汇编文件加入的问题,这里简要说明一下:

1、如何添加makefile:

打开Source Insight,在新建工程之前,进入

Options -> Document Options-> 点击Document Type的下拉框,然后选择Make File,在右边的File Filter中,在原先的*.mak后面加上一个分号,即多个不同过滤规则以分号间隔开,再加上*makefile,变成 *.mak;*makefile,并且选中Include when adding to projects,这样,以后再新建工程的时候(当前工程同步下makefile就有了),就可以识别makefile或Makefile了(好像此处Source Insight并不区分大小写)。

2、如何添加kconfig:

由于kconfig是sourceinsight默认不支持的格式,所以我们现在先要加入一个类型。

点击 Add Type,填入新文件类型的名字kconfig,File Filter中写上*kconfig,最好再加上kconfig*(因为在linux中有些kconfig是以kconfig.*的形式出现),注意再选中下面的Include when adding to projects,这样就建立了一个新的文件类型, 以后新建工程加入文件时候,系统就能够识别kconfig的文件了。

3、如何支持汇编:

设置如下: a)、Options->Document Options->Doucment Types->选择x86 Assemble,再在右边File Filter里输入*.S。这样以后再new一个工程,在添加文件时,就可以把文件夹中的*.S添加进去了。 b)、如果之前已经创建好工程的,而又想把*.S文件添加进来。如下: 打开创建好的工程,Options->Document Options->Doucment Types->选择x86 Assemble,再在右边File Filter里输入*.S。然后project-->add and remove project files,再重新把工程的所有文件夹添加一遍,这样就可以把*.S文件添加进来了(注:原来的*.c等文件不会被重复添加),然后重新rebuild就可以了。还有,si默认的汇编文件后缀不支持.s的,所以要支持arm的汇编文件也需要改一下File filter.

如果没有什么问题,一个UBOOT的原始工程就建立好了。

首先,我们来修改一下基本的环境,并测试成功后,再进行进一步的修改,这也是一个重要的前提和良好的开端。

1、  打开UBOOT的顶层MAKEFILE文件,找到交叉编译器的设置,并将其修改,即:

CROSS_COMPILE = arm-linux-     

这里需要说明一下,交叉编译器是你使用的编译的名字,而这个名字是可以修改的,比如在本BLOG的“一步一步写嵌入式操作系统”里就是这样的,大家如果有兴趣可以去看一下。

2、 增加配置选项:

mini2440_config : unconfig

(这里是一TAB)@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 fjf s3c24x0

这个地方由于一些表述不清,造成把他给移植到了

ifeq ($(HOSTARCH),$(ARCH))

CROSS_COMPILE ?=

Endif

结果造成,执行下面的make mini2440_config时,出现了找不到配置文件的错误。

这个选项下,也怪没看清楚。

这里面有一个说明:

arm CPU 的架构(ARCH)

arm920t CPU 的类型(CPU),其对应于cpu/arm920t 子目录

fjf 开发者/或经销商(vender),对应于board/fjf 目录

mini2440 开发板的型号(BOARD),对应于board/fjf/mini2440 目录

s3c24x0 片上系统(SOC)定义

3、 在/board目录下建立MINI2440的目录。

大家可以在LINUX也可以在WIN下,这里为了易用,采用了WIN下基本修改,LINUX必要更改和编译的方法。

我们以SBC2410x来做一个基本的模板来进行修改,以期回忆UBOOT的修改进度。所以我们把这个文件夹整体拷贝到新建立的/board/fjf下,并且将sbc2410x.c修改为mini2440.c。

打开当前上当下的MAKEFILE,修改如下:

LIB = $(obj)lib$(BOARD).a

删除:COBJS := sbc2410x.o flash.o

增加:COBJS := mini2440.o flash.o

SOBJS := lowlevel_init.o

这样就等于增加了相对应的目标文件。

4、 建立配置文件。

同样大家可以拷贝sbc2410x的配置文件,因为目前只是做环境测试,暂时可以不时行修改。

cp include/configs/sbc2410x.h include/configs/mini2440.h

5、 环境测试。

经过上面的简单修改,就可以进行环境测试,进入UBOOT的顶层目录,执行刚刚修改的MAKEFIEL:make mini2440_config

出现:Configuring for mini2440 board...

然后再make,如果编译成功生成BIN文件,即说明环境没有什么问题。一个良好的开端生成了。下来就看我们的努力了。大门被领进来了。

这里出现了几个问题,一个是mkconfig permission denied,还以为是没有权限,可能是这个文件里一些要用到系统路径,sudo 了结果还是报同样的错误,在网上查了下资料,结果发现是文件的属性问题,将其都改成了读写,就可以成功编译了。

二是@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 fjf s3c24x0这个前面一定要有一个TAB键,不然会报make mini2440_config

Makefile:????: *** 遗漏分隔符。 停止。

这次因为比较注意,第二个问题没有出现,其它还有一些需要注意的问题,大家可以参看MINI2440的官方文档。

手指头不好使啊,慢慢来,伤口会一点点好,工作一点点的来干。

因为现在编译成的东西,虽然名字叫MINI2440,但其实仍然是sbc2410x的,明天如果有时间开始按照MINI2440的硬件环境来开始修改更具体的内容。

努力,不辍今朝。

  评论这张
 
阅读(1533)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017