移植u-boot-2009.03到友善之臂mini2440开发板step1

Posted: 五月 25th, 2009 | Views: 4,208 次浏览 | 6 Comments »

网上介绍U-Boot移植的文章已经有很多了,但大多数文章都只讲了在哪个地方修改什么东西,但并未讲明白如何知道要修改这个值,如何是正确的移步骤。那么作者根据自身移植经历,通过三篇文章告诉你一般的U-Boot移植过程,本文主要讲解了移植的基本思路、方法。

很多嵌入式系统开发的初学者都有过这样的经历,买了ARM开发板,了解了基础的Bootloader相关知识,也知道U-Boot在这方面的应用相当广泛,希望自己也能移植成功。接下来就是下载源码,照着网上教程做,结果大部分都失败了,但又不甘心,于是再找教程,东拼西凑还是不行,试了几次就失去信心,做不下去了;即使做成功了,但也不知道别人怎么知道要改哪个文件、哪个数据,这么多文件人家是怎么找出来的,下次自己遇到款新的芯片能不能也移植成功。

根据教程移植失败,原因是多方面的:教程里的开发板、U-Boot版本与自身的不一致,细微的差别(比如LED、串口的引脚分配等)都有可能导致失败,即使全都一样的情况下,大家的知识水平也不一样,有些Makefile的更改等,作者未加以说明导致编译出错。下面根据我的经历写一下移植过程,根据本文不能保证你一定能移植成功,本文重点讲解的是移植过程中的思路、方法。

在大三的时候买过一个S3C44B0的开发板,大四的时候用过一段时间的S3C2410的实验箱,都曾尝试在这两个平台上移植U-Boot,均以失败告终;最近买了一块性价比较高的友善之臂mini2440开发板,移植成功了。个人觉得做移植必需要有一定的前导知识:开发环境的配制,你可以使用Windows平台下的Cygwin,可以在Windows下使用虚拟机安装Linux,可以直接安装一个Linux PC作开发;相应的你需要了解GCC编译工具的使用,交叉编译环境的设置,了解Makefile相关内容;一定的文档阅读能力,包括各种帮助文件、Readme、MCU数据手册等;根据数据手册编写一定的硬件驱动,如果没有以上知识准备建议照着开发板的实验手册,把所有例程都跑一遍。

在移植的过程中主要参考了以下两篇文章,感谢作者分享。

http://blog.chinaunix.net/u1/34474/showart_487416.html

http://blog.chinaunix.net/u1/34474/showart.php?id=1877493

由于只是为了学习基本的移植方法、流程,下文只进行了LED的相关驱动和串口输出设置以及其它一些必要的更改,至于Nor Flash、Nand Flash、网卡、USB的移植并未涉及。开发环境的设置可以参考mini2440的用户手册,写得相当详细。

买回来的开发板已经安装好了Bootloader,官方使用的是Supervivi,在下面的过程中我们尽量不搞破坏,用最简洁的方式,完成学习目标:在PC是编译好U-Boot,生成Bin文件,将开发板与PC通过串口和USB口相连,把生成的Bin文件通过USB口下载到开发板上RAM里,从RAM里直接运行,查看串口是否按要求输出信息。

请同时关注以下两文章:
移植u-boot-2009.03到友善之臂mini2440开发板step2

http://www.stars625.com/portinguboottomini2440step2.html

移植u-boot-2009.03到友善之臂mini2440开发板step3

http://www.stars625.com/portinguboottomini2440step3.html

解压U-Boot,把里面的README好好看一下,里面已经基本介绍了整个移植过程和配置文件的选项,基本的移植步骤都包括以下三个步骤:

1、在U-Boot源码Board中找一款与目标开发板配置相近的文件夹,在这里我们进入board/samsung目录,把smdk2410复制一份并命名为mini2440,进入mini2440目录,将里面的smdk2410.c改成mini2440.c,同时Makefile中也要作相应的更改。

2、进入include/configs目录,将smdk2410.h复制一份并命名为mini2440.h。

3、打开U-Boot根目录下的Makefile文件,搜索smdk2410,定位到smdk2410_config : unconfig处,对照该格式在下面加两行:

1
2
mini2440_config :   unconfig
    @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 samsung s3c24x0

注意在@$(MKCONFIG)前要加入一个TAB这是Makefile文件规则规定的,在第二行的第一个arm表示MCU平台(包括:i386、ppc、mips、nios、m68k等);第二个arm920t表示arm内核版本(包括:arm7tdmi、arm10、arm11等);第三个mini2440对应开发板所在文件夹board/samsung/mini2440;第四个samsung对应开发板所在文件夹上层目录board/samsung,如果mini2440目录就直接放在board目录下,那么此处应写NULL;第五个s3c24×0对应MCU型号。

完成了上面三步,可以执行以下命令进行编译:

1
2
#make mini2440_config
#make

如果成功编译出u-boot.bin,那么恭喜你,迈出了成功的第一步。

总结一下,移植U-Boot基本步骤有三:1、在board目录下创建开发板对应目录;2、在include/configs下创建开发板对应配置文件;3、在U-Boot根目录下的Makefile中加入开发板对应编译命令。

原创文章,转载请注明:转载自 芷菁博客 [ http://www.stars625.com/ ]
本文链接地址:http://www.stars625.com/portinguboottomini2440step1.html

Filed under: 嵌入开发 | Tags: , ,

6 Comments on “移植u-boot-2009.03到友善之臂mini2440开发板step1”

  1. 匿名 说:

    写的蛮好

  2. 匿名 说:

    写的蛮好

  3. 匿名 说:

    你所说的仅仅是很小很小的一小步

  4. xxx 说:

    本文主要讲解了移植的基本思路、方法。

    版主這篇文主要講觀念阿 你別潑冷水好不好

    版主加油~

  5. 匿名 说:

    你也写的不怎么详细啊!


Leave a Reply

  • Name
  • Mail (will not be published)
  • Website