at91sam9260ek的移植 — U-boot(V1.3.4)

at91sam9260ek的移植

— U-boot(V1.3.4)

关于移植在U-boot文档中这样介绍:

README

If the system board that you have is not listed, then you will need
to port U-Boot to your hardware platform. To do this, follow these
steps:

1.  Add a new configuration option for your board to the toplevel
    "Makefile" and to the "MAKEALL" script, using the existing
    entries as examples. Note that here and at many other places
    boards and other names are listed in alphabetical sort order. Please
    keep this order.
2.  Create a new directory to hold your board specific code. Add any
    files you need. In your board directory, you will need at least
    the "Makefile", a "<board>.c", "flash.c" and "u-boot.lds".
3.  Create a new configuration file "include/configs/<board>.h" for
    your board
3.  If you're porting U-Boot to a new CPU, then also create a new
    directory to hold your CPU specific code. Add any files you need.
4.  Run "make <board>_config" with your new name.
5.  Type "make", and you should get a working "u-boot.srec" file
    to be installed on your target system.
6.  Debug and solve any problems that might arise.
    [Of course, this last step is much harder than it sounds.]

0.      准备工作

(1) 下载

V1.3.4:ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.4.tar.bz2

补丁: ftp://www.at91.com/pub/uboot/u-boot-1.3.4-exp.5/u-boot-1.3.4-exp.5.diff

(2) 安装

u-boot安装此处省略,详细请参见《制作U-boot ---AT91SAM9260篇

补丁安装:

a.      拷贝u-boot-1.3.4-exp.5.diff到u-boot-1.3.4

b.      # cat u-boot-1.3.4-exp.5.diff |patch -p1

1. 添加开发板

(1)   MAKEALL

#########################################################################

## ARM9 Systems

#########################################################################

LIST_ARM9="                    \

at91sam9260ek      at91sam9261ek      at91sam9263ek                    \

(2) Makefile

#########################################################################

## ARM926EJS Systems

#########################################################################

at91sam9260ek_config   :      unconfig

@$(MKCONFIG)$(@:_config=) arm arm926ejs at91sam9260ek atmel
at91sam926x

1)     arm:          CPU架构

2)     arm926ejs:     CPU型号

3)     at91sam9260ek: 开发板名称

4)     atmel:         所属厂商

5)     at91sam926x:   SoC

2. 文件构成

a. 架构

arch-at91sam926x文件夹(u-boot-x.x.x/../include/asm/)

b. CPU

at91sam926x文件夹(u-boot-x.x.x/../cpu/arm926ejs/)

删除LCD和USB支持

lcd.c、lcd_lut.h、usb_ohci.c、usb_ohci.h

删除DM9000物理网卡支持

ether.c

Ln25: #ifndef CONFIG_DRIVER_DM9000 /*SAM9261EK uses DM9000 Phy */

Ln30: #include <dm9161.h>

Ln457: #endif  /*CONFIG_DRIVER_DM9000 */

c. 开发板

at91sam9260ek文件夹(u-boot-x.x.x/../board/)

删除DM9000物理网卡

dm9161a.c

d. 开发板配置

at91sam9260ek.h(u-boot-x.x.x/../include/configs/)

#include<cmd_confdefs.h>

à

#include< config_cmd_default.h>

e. Ethernet部分

拷贝at91_net.h到:u-boot-x.x.x/include/

各文件介绍:

1)MII物理寄存器定义:

../include/miipyh.h

2)函数头文件:

../include/at91_net.h

3)函数实现:

../cpu/arm926ejs/at91sam926x/ether.c

f. flash部分

覆盖dataflash.h到:u-boot-1.3.4/include/

覆盖dataflash.c到:u-boot-1.3.4/drivers/mtd/

g. nand部分

1)nand文件夹

拷贝位置:../drivers/mtd/nand

并修改函数名:

DEBUG à MTDDEBUG

2)cmd_nand.c

拷贝至:../common/

并注释掉:

//print_image_hdr(hdr);

h. 中断部分

删除../cpu/arm926ejs/下的interrupts.c,否则会出现多重定义的问题!

3. 宏修改

CFG_*_* --〉 CONFIG_*_*

(1) net

#if(CONFIG_COMMANDS & CFG_CMD_NET)

--〉

#if defined(CONFIG_CMD_NET)

(2) nand

#if(CONFIG_COMMANDS & CFG_CMD_NAND)

--〉

#ifdefined(CONFIG _CMD_NAND)

1)Nand命令

config_cmd_default.h:添加宏定义CONFIG_CMD_NAND;

宏定义来源:config_cmd_all.h

时间: 2024-10-13 00:28:52

at91sam9260ek的移植 — U-boot(V1.3.4)的相关文章

spring boot学习总结(一)-- 基础入门 Hello,spring boot!

写在最前 SpringBoot是伴随着Spring4.0诞生的: 从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架: SpringBoot帮助开发者快速启动一个Web容器: SpringBoot继承了原有Spring框架的优秀基因: SpringBoot简化了使用Spring的过程.  Spring Boot解决哪些问题??? Spring Boot使编码变简单,使配置变简单,使部署变简单,使监控变简单 下面正式开始!!!快速入门!!! 1.构建Mav

Spring Boot启动流程详解(一)

环境 本文基于Spring Boot版本1.3.3, 使用了spring-boot-starter-web. 配置完成后,编写了代码如下: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @RestController public class RootCont

使用Spring Boot来加速Java web项目的开发

使用Spring Boot来加速Java web项目的开发 我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用gradle来构建的话基本也一样)然后新建Spring相关的xml文件,而且往往那些xml文件还不会少.然后继续使用tomcat或者jetty作为容器来运行这个工程.基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一

spring boot使用

首先spring-boot是个服务框架,更加准确来讲是个微服务框架,实际上来说”微“并不“微”,spring-boot包含很多可嵌入的组件,通过这些组件可以来完成我们的服务, 以往我们使用Spring的时候,我们需要首先在pom文件中增加对相关的的依赖(使用gradle也是类似)然后新建Spring相关的配置文件而通常是xml,然后后面加入jetty\tomcat,而现在我们通过spring-boot就可以完成我们这些繁杂的事情,下面来介绍下如何使用spring-boot: 1)首先是我们的po

Spring Boot开发之明月千城(一)

原文地址:http://qindongliang.iteye.com/blog/2205633 最近数据分析的项目也即将告一段落了,中间也积累了很多知识,特此记录一下.其中用的最爽的Web组合开发就是Intellij IDEA + Maven + Spring Boot + Velocity + Boostrap + jQuery了,关于后端的数据分析和处理的Hadoop模块,会放在Hadoop分类的博客文章中记录. Spring Boot提供了一个强大的一键式Spring的集成开发环境,能够单

161103、Spring Boot 入门

Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让Java开发也能够实现Ruby on Rails那样的生产效率.为Spring生态系统提供了一种固定的.约定优于配置风格的框架. Spring Boot具有如下特性: 为基于Spring的开发提供更快的入门体验 开箱即用,没有代码生成,也无需XML配置.同时也可以修改默认值来满足特定的需求. 提

Spring Boot特性(转)

摘要: 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplication.run 这个静态方法: public static void main(String... 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 Spri

使用Spring Boot创建一个应用

本文主要演示如何使用Spring Boot加速应用开发的.你可以访问Spring Initializr,快速构建属于你自己的基于Spring Boot的应用. 如图,一键即可生成项目. 1.开始构建项目 1.1)项目结构 1.2 pom.xml <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmln

Spring Boot常见问题(二)Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter(Lorg/apache/tomcat/JarScanFilter;

问题描述:通过Spring Boot官方提供的方式,写出如下HelloWorld代码. @Controller @EnableAutoConfiguration public class HelloWorld { @RequestMapping("/wu") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exce