zoukankan      html  css  js  c++  java
  • 慢慢学Linux驱动开发,第十一章,开始Uboot移植第一步

      老婆去逛街了,不知道是不是给我省电话费呢,最近几天通话时间都很少,也不知道她在那边生活费够不够,也不让我给她打点钱,估计饿瘦了都,老婆……她去逛街了,我只好继续奋斗喽,为了将来好好照顾她,hehe:)

      买tiny6410时,虽然说什么东西都给我们弄好了,但也是这什么都弄好了,以至于可以让我们弄得东西没有了,比如上面的LED驱动啊等等,都不是模块形式的,或者说是没法卸载的,所以我想自己学习移植一套Linux上去,自己写驱动会不会学得多一点,这几天一直在纠结学习的方法论的问题,最后还是实践派打败了理论派,于是,开始…………

      首先是开发环境的搭建,不用多说,arm-gcc交叉编译器应该都会装吧,记得加入环境变量以方便使用。

      还有就是u-boot和Linux内核的源代码的下载,去官网下吧,别去别的地方了。

      这里使用的U-boot版本是u-boot-2010.09,Linux版本为linux-2.6.29

      u-boot-2010.09这个版本其实对对很多CPU都是直接支持的,首先进入board目录看一下,我的Tiny6410使用的是三星的S3C6410,进入board/samsung/目录下,发现有smdk2400、smdk2410和smdk6400,很遗憾没有6410,不过以前了解过三星6400和6410几乎是差不多的,应该是可以在其基础上进行修改的。

    1)在board/samsung/下建立开发板的项目文件夹,取名叫tiny6410,并把smdk6400文件夹里的东西全部复制过去,并修改其文件名,如图所示。

    2)进入u-boot根目录/include/configs/,复制smdk6410.h粘贴更名为tiny6410.h。

    3)进入u-boot根目录的makefile文件中,首先指定交叉编译器找到CROSS_COMPILE?=在等号后面添加arm-linux-,然后找到SMDK6400的配置信息,依样画葫芦,來一个tiny6410的

    #########################################################################
    ## ARM1176 Systems
    #########################################################################
    tiny6410_noUSB_config \
    tiny6410_config : unconfig
    # 注意下面应为tab健,不可以用4个空格代替
    @mkdir -p $(obj)include $(obj)board/samsung/tiny6410
    @mkdir -p $(obj)nand_spl/board/samsung/tiny6410
    @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
    @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
    @if [ -z "$(findstring tiny6410_noUSB_config,$@)" ]; then \
    echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/tiny6410/config.tmp;\
    else \
    echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/tiny6410/config.tmp;\
    fi
    @$(MKCONFIG) tiny6410 arm arm1176 tiny6410 samsung s3c64xx
    @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

    4)测试编译新建的th6410开发板项目

    出现如图Configuring for tiny6410 board...字样,说明设置成功,继续

    #make ARCH=arm //编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了 

    当然编译是需要一段时间的,耐心等待吧,不过别高兴太早,可能有人说这也太简单了吧,其实这里编译出来的u-boot.bin对自己的tiny6410开发板是没有任何用处,以上的移植只是搭建了一个tiny6410开发板u-boot的框架,要使其功能实现,还要根据tiny6410开发板的具体资源情况比如晶振频率等来对u-boot源码进行修改,方才可以使用

    ------------------------------------------------------------------------------------------------------------------

    作者:庞辉

    出处:http://www.cnblogs.com/pang123hui/

    本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名庞辉(包含链接).

      

      

      

  • 相关阅读:
    hdu 6702 ^&^ 位运算
    hdu 6709 Fishing Master 贪心
    hdu 6704 K-th occurrence 二分 ST表 后缀数组 主席树
    hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列 LCIS
    hdu 5909 Tree Cutting FWT
    luogu P1588 丢失的牛 宽搜
    luogu P1003 铺地毯
    luogu P1104 生日
    luogu P1094 纪念品分组
    luogu P1093 奖学金
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2389985.html
Copyright © 2011-2022 走看看