• 慢慢学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 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名庞辉(包含链接).

      

      

      

  • 相关阅读:
    Single Image Haze Removal Using Dark Channel Prior翻译
    android的单元测试
    HTML&JS笔记(1)
    动手学Javascript(1)——PopStar
    Cocos2d-x教程第(11)讲-利用遮罩(蒙版)CCLayerColor制作新手引导界面(上)
    硬币翻转倍数递增试算
    java泛型接口详解
    1352
    大话设计模式之——简单工厂模式
    iOS自适应行高方法及问题
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2389985.html
Copyright © 2020-2023  润新知