一:U-boot移植前建立自己的平台:

关注的相关文件:
1.u-boot- 2010.03/board/samsung/ //这个目录下需要创建自己的板级目录fsc100
cp –a smdkc100 fsc100 //直接复制需要修改的文件并重命名
2./u-boot-2010.03/board/samsung/fsc100 //进入刚才复制好的目录,创建必要的C文件
mv smdkc100.c fsc100.c //直接重命名里面的可用文件
3. vim Makefile //将这个新的C文件编译进去,修改开发板目录下的Makefile
COBJS-y := fsc100.o //将.o配置进去
4. cd include/configs //在 include/configs/ 中建立开发板所需要的配置头文件
cp smdkc100.h fsc100.h //将原来可用的头文件复制一份就可以了
5.u-boot-2010.03/Makefile //更改顶层目录下的Makefile文件,配置交叉工具链和开发板相关配置
5.1: ifeq ($(HOSTARCH), $(ARCH)) //修改成下面的形式,其中HOSTARCH可以在u-boot-2010.03目录下的config.mk中配置
CROSS_COMPILE ?=
endif

ifeq (arm, $(ARCH))
CROSS_COMPILE ?= arm-cortex_a8-linux-gnueabi-
endif

5.2: fsc100_config: unconfig // 添加 fsc100 配置信息
@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 fsc100 samsung
s5pc1xx

MKCONFIG = ./mkconfig fsc100 arm arm_cortexa8 fsc100 samsung s5pc1xx
$1 $2 $3 $4 $5 $6

MKCONFIG = ./mkconfig 表示当前目录下所有文件都能看见

主要做了三部分工作: (上面相关参数的解析是在主目录下的:mkconfig),定义上面参数是在:include/config.mk,决定编译那些目录,最终在Makefile中运行
a. 创建软链接
cd include
asm ---> asm-arm
asm/arch ---> asm/arch-s5pc1xx
asm-arm/proc---> asm/proc-armv

例:
command.c
#include <asm-i386/config.h>
#include <asm/config.h>

b. 创建了include/config.mk 决定编译哪些目录
obj += cpu/$(CPU)/start.o

c. 创建了include/config.h 将一些默认的东西放进来,
在include/configs/fsc100.h中决定了U-boot将那些东西编译进去,例如:#define CONFIG_CMD_NET 1

对上面的相关注释:
fsc100_config: 配置板子时候用到的名字 //下面相关参数的解析是在主目录下的:mkconfig
arm : CPU的架构(ARCH)
arm_cortexa8 : CPU的类型(CPU),其对应于cpu/arm_cortexa8子目录
fsc100 : 开发板的型号(BOARD),对应于: board/samsung/fsc100,否则后面编译不通过
samsung : 开发者/或经销商(vender)
s5pc1xx : 片上系统(SOC)

6.u-boot-2010.03 //回到源码解压后的主目录编译,只有编译通过才能进行下一步的移植,
此时平台已经搭建完成,注意注意:源码解压不要放在根目录,切记,这会引起权限问题
$ make distclean
$ make fsc100_config
$ make

二:在U-BOOT中如何添加一个驱动(功能)
例:
drivers/net/dm9000x.c
drivers/net/Makefile
|-COBJS-$(CONFIG_DRIVER_DM9000) += dm9000x.o
通过想使dm9000x.c编译链接进来,需要使CONFIG_DRIVER_DM9000的值配置成y

*************************************************************
*改动include/configs/fsc100.h
*加上#define CONFIG_DRIVER_DM9000
*
* *.h 被源码包含 #ifdef CONFIG_DRIVER_DM9000
dm9000_init();
#endif

**************************************************************

在make 创建uboot时同步产生(主makefile)
$(obj)include/autoconf.mk: $(obj)include/config.h
446 @$(XECHO) Generating $@ ; \
447 set -e ; \
448 : Extract the config macros ; \
449 $(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h | \
450 sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
451 mv $@.tmp $@

*************************************************************
*include/autoconf.mk
* |-CONFIG_DRIVER_DM9000=y
*
* *.mk 被makefile包含 COBJS-$(CONFIG_DRIVER_DM9000) += dm9000x.o
**************************************************************

将ubuntu中建立索引文件:tags
$ make tags //这样就创建了ctags

linux@ubuntu:~/u-boot-2010.03$ make tags
ctags -w -o ctags `find tools examples/standv.....
...................
..................
-name '*.[chS]' -print`
linux@ubuntu:~/u-boot-2010.03$ ls -l ctags
-rw-rw-r-- 1 linux linux 17325816 Mar 31 06:03 ctags
linux@ubuntu:~/u-boot-2010.03$

有了索引文件就可以很方面的追踪了
要想每次都能使用ctags,需要配置一下:
vim /home/linux/.vimrc
在最下面添加:set tags=/home/linux/u-boot-2010.03/ctags
注释掉直接在前面加“,列如:”set tags=/home/linux/u-boot-2010.03/ctags

然后想在vim编辑器中查找的时候用命令:vim -t <查找的名称> ---> vim -t main_loop
在vim里面里面索引跳转的方法:按住CTRL鼠标左击,或者CTRL + ']'
返回的时候:CTRL + 't'

u-boot的命令机制

U_BOOT_CMD(
39 myled, CONFIG_SYS_MAXARGS, 1, do_myled,
40 "myled - my command",
41 "myled [on/off]"
42 );

#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
113 cmd_tbl_t __u_boot_cmd_##name Struct_Section = {#name, maxargs, rep, cmd, usage)

#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd")))

cmd_tbl_t __u_boot_cmd_my_led Struct_Section = {
"myled",
CONFIG_SYS_MAXARGS,
1,
do_myled,
"myled - my command",
"myled [on/off]"

}

理解u-boot启动的流程:start.s,nand flash,IRAM,DRAM的关系!

***************************************************************************************************************************************************************
***************************************************************************************************************************************************************
***************************************************************************************************************************************************************
***************************************************************************************************************************************************************

u-boot平台的建立,驱动的添加,索引的创建,命令机制的实现.的更多相关文章

  1. mysql 添加索引 mysql 创建索引

    1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...

  2. 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序

    关于如何在非微软平台上建立高信任的SharePoint应用程序 原文 :http://blogs.msdn.com/b/kaevans/archive/2014/07/14/high-trust-sh ...

  3. 揭秘FaceBook Puma演变及发展——FaceBook公司的实时数据分析平台是建立在Hadoop 和Hive的基础之上,这个根能立稳吗?hive又是sql的Map reduce任务拆分,底层还是依赖hbase和hdfs存储

    在12月2日下午的“大数据技术与应用”分论坛的第一场演讲中,来自全球知名互联网公司——FaceBook公司的软件工程师.研发经理邵铮就带来了一颗重磅炸弹,他将为我们讲解FaceBook公司的实时数据处 ...

  4. A7139 无线通信驱动(STM32) 添加FIFO扩展模式,能够发送超大数据包

    A7139 拥有电磁波唤醒以及10mW的发射功率,很easy实现长距离通信,眼下測试有障碍物能够轻松达到300m以上. 通过几天的调试,眼下能够发送随意大小的数据包,大小为1-16KB.所有使用中断收 ...

  5. 编写Hive的UDF(查询平台数据同时向mysql添加数据)

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812629187518530052/ 可能会有一些截图中会有错误提示,是因为本地的包一直包下载有问题,截完图已经下 ...

  6. MySQL 添加索引,删除索引及其用法

    一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...

  7. Spring Boot 揭秘与实战(七) 实用技术篇 - StateMachine 状态机机制

    文章目录 1. 环境依赖 2. 状态和事件 2.1. 状态枚举 2.2. 事件枚举 3. 状态机配置4. 状态监听器 3.1. 初始化状态机状态 3.2. 初始化状态迁移事件 5. 总结 6. 源代码 ...

  8. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)

    ElasticSearch6.0  Java API  使用     排序,分组 ,创建索引,添加索引数据,打分等 如果此文章对你有帮助,请关注一下哦 1.1 搭建maven 工程  创建web工程 ...

  9. VMware 虚拟机添加硬盘以及为新添加的硬盘创建Samba共享 (转)

    一.为VMware虚拟机添加硬盘 1. 首先在VMware虚拟机的VM->Setting子菜单中为虚拟机添加一块15G大小的SCSI类型的硬盘(注意:如果原来为IDE硬盘,SCSI类型的硬盘可能 ...

随机推荐

  1. 由于客户端检测到一个协议错误 代码0x1104

    重新连接N次都还是这个错误提示,最后再重起电脑,还是没用.研究了一下错误终于解决了. 首先检查远程连接端口对不对?Windows远程默认的连接端口是3389,一般大家连接时直接输入IP或域名就可以连接 ...

  2. SQL Server数据库脚本备份与还原

    use[master]go /*完整--备份* backup 备份 * disk='E:\USERDB.bak' 磁盘,备份文件存放的路径* name='user' 备份显示的文件名称,可随意修改* ...

  3. Html.DropDownList

    //获取直属父级列表 var parents = _MemberEditDTOService.GetParents(); var parentsItems = parents.Result.Selec ...

  4. JavaScript基础之DOM修改样式

    1.获取或设置元素的内容:3个属性:   1. innerHTML: 获取或设置元素开始标签到结束标签之间的所有HTML代码原文.      何时使用:只要获得完整的html代码原文时      优化 ...

  5. blade and soul zone overview

    The world of Blade and Soul, is a vast extension of land containing two continents (the Southern Con ...

  6. Centos 6.5 安装 ionCube PHP Loader

    使用某些php的程序的时候会出现提示:Site error: the file /***/index.php requires the ionCube PHP Loader ioncube_loade ...

  7. css3各个属性的兼容

    1.transition:IE10. Firefox.Opera.Chrome支持: Safari支持替代的-webkit-transition属性: 2.animation: IE10.FIrefo ...

  8. iOS_开发中引导页的设置及代码

    在iOS 手机App 软件的开发中, 基本上每一个完整的App 都有与之相对应的引导页的设置,引导页也会有很多种设置的方式,根据不同的情况,选择不同的编码,在这里,我分享一下自己关于引导页的一些看法和 ...

  9. .net版高斯模糊算法

    最近挺多人找高斯算法,本人贴上一个高斯模糊算法类,希望可以帮助到大家.算法的效率还是可以接受的. #region 高斯模糊算法 /// <summary> /// 高斯模糊算法 /// & ...

  10. Linux学习 :SPI通讯协议

    SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在E ...