Uboot 2012.10移植到at91sam9260ek草稿之一

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

准备:

之前一直用的uboot是1.3的,由于去年的换工作,在新的岗位上,好多产口的uboot 已经不用1.3这样的老版本了,本着总结与学习的态度,我想把2012.10再移植一次,移植到at91sam9260ek的板子上,这前对于1.3.4可以直接在http://www.at91.com/linux4sam/bin/view/Linux4SAM/U-Boot上下载,同时也可以下载到补丁。这样可以减轻我们的工作量,但对于2012.10的新版本,atmel已经不提供了,所以我们只能从uboot开源网上下载,自己改写。

同时也要说明,我们之前用的交叉编译器也要升级,不能用3.X.X的版本,要不会出现好多编译错误,必须升级到4.X.X的版本。关于交叉编译器的下载与安装可以参考我转的一编文章:http://blog.csdn.net/jackyard/article/details/8491879

第一步:之前的老的版本,是在顶层的makefile文件中来配置各种配置的,而现在新的版本是在board.cfg中体显的。编译步骤还是一样的。

1.export  CROSS_COMPILE=xxxxxxx/bIn/arm-linux-

2.make mrproper

3.make at91sam9260_nandflash_config

4.make all

通过上在的工作,就可以编译通过了,可能中间会出一些问题,一般可以在网上直接找到答案。

第二步:更改include/configs/at91sam9260ek.h

这个文件是整个配置的关键,所以要重点修改。

下面我直接把我改过全部代码贴出:


#ifndef __CONFIG_H
#define __CONFIG_H


/*
 * SoC must be defined first, before hardware.h is included.
 * In this case SoC is defined in boards.cfg.
 */
#include <asm/hardware.h>


/*
 * Warning: changing CONFIG_SYS_TEXT_BASE requires
 * adapting the initial boot program.
 * Since the linker has to swallow that define, we must use a pure
 * hex number here!
 */
#define CONFIG_SYS_TEXT_BASE 0x21f80000  //0x21f00000   之前的代码是在config.mk中的TEXT_BASE中给的,现在的版本是在这里的。


/* ARM asynchronous clock */
#define CONFIG_SYS_AT91_SLOW_CLOCK 32768 /* slow clock xtal */
#define CONFIG_SYS_AT91_MAIN_CLOCK 18432000 /* main clock xtal */
#define CONFIG_SYS_HZ 1000


/* Define actual evaluation board type from used processor type */
#ifdef CONFIG_AT91SAM9G20
# define CONFIG_AT91SAM9G20EK /* It's an Atmel AT91SAM9G20 EK */
#else
# define CONFIG_AT91SAM9260EK /* It's an Atmel AT91SAM9260 EK */
#endif


/* Misc CPU related */
#define CONFIG_ARCH_CPU_INIT
#define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */
#define CONFIG_SETUP_MEMORY_TAGS
#define CONFIG_INITRD_TAG
#define CONFIG_SKIP_LOWLEVEL_INIT
#define CONFIG_BOARD_EARLY_INIT_F
#define CONFIG_DISPLAY_CPUINFO


/* general purpose I/O */
#define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */
#define CONFIG_AT91_GPIO
#define CONFIG_AT91_GPIO_PULLUP 1 /* keep pullups on peripheral pins */


/* serial console */
#define CONFIG_ATMEL_USART
#define CONFIG_USART_BASE ATMEL_BASE_DBGU
#define CONFIG_USART_ID ATMEL_ID_SYS
#define CONFIG_BAUDRATE 115200


/* LED */
#define CONFIG_AT91_LED
#define CONFIG_RED_LED AT91_PIN_PA9 /* this is the power led */
#define CONFIG_GREEN_LED AT91_PIN_PA6 /* this is the user led */


#define CONFIG_BOOTDELAY 3


/*
 * BOOTP options
 */
#define CONFIG_BOOTP_BOOTFILESIZE 1
#define CONFIG_BOOTP_BOOTPATH 1
#define CONFIG_BOOTP_GATEWAY 1
#define CONFIG_BOOTP_HOSTNAME 1


/*
 * Command line configuration.
 */
#include <config_cmd_default.h>
#undef CONFIG_CMD_BDI
#undef CONFIG_CMD_FPGA
#undef CONFIG_CMD_IMI
#undef CONFIG_CMD_IMLS
#undef CONFIG_CMD_LOADS
#undef CONFIG_CMD_SOURCE


#define CONFIG_CMD_PING 1
#define CONFIG_CMD_DHCP 1
#define CONFIG_CMD_NAND 1
#define CONFIG_CMD_USB 1


/*
 * SDRAM: 1 bank, min 32, max 128 MB
 * Initialized before u-boot gets started.
 */
#define CONFIG_NR_DRAM_BANKS 1
#define CONFIG_SYS_SDRAM_BASE ATMEL_BASE_CS1  //0x2000 0000
#define CONFIG_SYS_SDRAM_SIZE 0x2000000 //0x04000000  32MB  这是给出的是SDRAM的大小。
/*
 * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM,
 * leaving the correct space for initial global data structure above
 * that address while providing maximum stack area below.
 */
#ifdef CONFIG_AT91SAM9XE
# define CONFIG_SYS_INIT_SP_ADDR \
(ATMEL_BASE_SRAM + 0x1000 - GENERATED_GBL_DATA_SIZE)
#else
# define CONFIG_SYS_INIT_SP_ADDR \
(ATMEL_BASE_SRAM1 + 0x1000 - GENERATED_GBL_DATA_SIZE)
#endif


/* DataFlash */
#define CONFIG_ATMEL_DATAFLASH_SPI
#define CONFIG_HAS_DATAFLASH 1
#define CONFIG_SYS_SPI_WRITE_TOUT (5*CONFIG_SYS_HZ)
#define CONFIG_SYS_MAX_DATAFLASH_BANKS 2
#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */
#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 0xD0000000 /* CS1 */
#define AT91_SPI_CLK 15000000


#ifdef CONFIG_AT91SAM9G20EK
#define DATAFLASH_TCSS (0x22 << 16)
#else
#define DATAFLASH_TCSS (0x1a << 16)
#endif
#define DATAFLASH_TCHS (0x1 << 24)


/* NAND flash */
#ifdef CONFIG_CMD_NAND
#define CONFIG_NAND_ATMEL
#define CONFIG_SYS_MAX_NAND_DEVICE 1
#define CONFIG_SYS_NAND_BASE ATMEL_BASE_CS3 //0x4000 0000
#define CONFIG_SYS_NAND_DBW_8
#define CONFIG_SYS_NAND_MASK_ALE (1 << 21)
#define CONFIG_SYS_NAND_MASK_CLE (1 << 22)
#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14
#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PC13
#endif


/* NOR flash - no real flash on this board */
#define CONFIG_SYS_NO_FLASH 1


/* Ethernet */
#define CONFIG_MACB 1
#define CONFIG_RMII 1
#define CONFIG_NET_RETRY_COUNT 20
#define CONFIG_RESET_PHY_R 1


/* USB */
#define CONFIG_USB_ATMEL
#define CONFIG_USB_OHCI_NEW 1
#define CONFIG_DOS_PARTITION 1
#define CONFIG_SYS_USB_OHCI_CPU_INIT 1
#define CONFIG_SYS_USB_OHCI_REGS_BASE 0x00500000 /* AT91SAM9260_UHP_BASE */
#define CONFIG_SYS_USB_OHCI_SLOT_NAME "at91sam9260"
#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2
#define CONFIG_USB_STORAGE 1
#define CONFIG_CMD_FAT 1


//#define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */
#define CONFIG_SYS_LOAD_ADDR 0x21f80000 /* load address */


#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE   //0x2000 0000
#define CONFIG_SYS_MEMTEST_END 0x23e00000


#ifdef CONFIG_SYS_USE_DATAFLASH_CS0


/* bootstrap + u-boot + env + linux in dataflash on CS0 */
#define CONFIG_ENV_IS_IN_DATAFLASH 1
#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
#define CONFIG_ENV_OFFSET 0x4200
#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
#define CONFIG_ENV_SIZE 0x4200
#define CONFIG_BOOTCOMMAND "cp.b 0xC0084000 0x22000000 0x210000; bootm"
#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
"root=/dev/mtdblock0 " \
"mtdparts=atmel_nand:-(root) " \
"rw rootfstype=jffs2"


#elif CONFIG_SYS_USE_DATAFLASH_CS1


/* bootstrap + u-boot + env + linux in dataflash on CS1 */
#define CONFIG_ENV_IS_IN_DATAFLASH 1
#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + 0x8400)
#define CONFIG_ENV_OFFSET 0x4200
#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + CONFIG_ENV_OFFSET)
#define CONFIG_ENV_SIZE 0x4200
#define CONFIG_BOOTCOMMAND "cp.b 0xD0084000 0x22000000 0x210000; bootm"
#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
"root=/dev/mtdblock0 " \
"mtdparts=atmel_nand:-(root) " \
"rw rootfstype=jffs2"


#else /* CONFIG_SYS_USE_NANDFLASH */
//###########################################
//##########################################
//以上两个在at91sam9260ek的板子中,没有用到,这里用的是nandflash


/* bootstrap + u-boot + env + linux in nandflash */
#define CONFIG_ENV_IS_IN_NAND 1
#define CONFIG_ENV_OFFSET 0x60000
#define CONFIG_ENV_OFFSET_REDUND 0x80000
#define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */
#define CONFIG_BOOTCOMMAND "nand read 0x21900000 0x100000 0x200000; bootm"
#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
"root=/dev/mtdblock4 " \
"mtdparts=atmel_nand:128k(bootstrap)ro,"\
"256k(uboot)ro,640k(env)ro," \
"2M(linux),-(root) " \
"rw rootfstype=jffs2"


#endif


#define CONFIG_SYS_PROMPT "U-Boot> "
#define CONFIG_SYS_CBSIZE 256
#define CONFIG_SYS_MAXARGS 16
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
#define CONFIG_SYS_LONGHELP 1
#define CONFIG_CMDLINE_EDITING 1
#define CONFIG_AUTO_COMPLETE


/*
 * Size of malloc() pool
 */
#define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)


#endif

AT91SAM9260系列SOM-9260A核心模块 AT91SAM9260系列SOM-9260A核心模块产品特性:1.工业级ARM9处理器(ARM926EJ-S,主频180MHz/200MIPS),BGA封装;           2.存储器:64MB SDRAM、8MB NOR Flash、128MB NAND Flash;3.支持10/100Mbps自适应工业以太网络接口(MAC);4.嵌入式操作系统:Linux2.6.29-RT/ 阅读详情

相关推荐

sbc_at91sam9260:基于AT91SAM9260 @ 200MHz的具有128MB RAM的开放式硬件SBC模块

描述 嵌入式Linux硬件开发学习练习的第二部分。 该板是先前的更新版本。 详细的文档和资源可以在和文件夹中找到。 注意:CPU有两种变体,即208引脚PQFP和217引脚BGA。 PFQP版本与AT91SAM9XE引脚兼容。 BGA版本与改进的AT91SAM9G20兼容,并且具有自己的。 特征 CPU-AT91SAM9260处理器(ARM926EJ @ 200MHz) RAM-最大1Gb SDRAM(支持3V3和1V8类型) NVM-用于U引导的AT45DB数据闪存 microSD卡插槽 microUSB客户端界面 USB主机突破 以太网的RMII接口 标准的Apollo.IoT扩展头 资源 您可以在此处找到所有用于构建或评估模块的必要信息: 当前状态和变更日志 v1.1.0已发送到工厂,预计将在6月中旬准备好进行组装和测试。 17feb2021-组装v1.1.0。 通过UART

spi总线 上层调用_全志R16_SPI总线驱动的使用文档

全志R16_SPI总线驱动的使用文档(2019-08-15 09:29:47)标签:全志r16介绍Linux 内核中SPI 子系统的接口及使用方法,为SPI设备驱动的开发提供参考。适用于基于Linux3.4内核的全志R16硬件平台。2. 2. 模块介绍2.1.模块功能介绍Linux 中 SPI 体系结构图 2.1 所示,图中用分割线分成了三个层次:1. 用户空间,包括所有使用 SPI 设备的应用...

weixin_33517544的博客 575

9260下norflash操作

atmel的at91sam9260在iar环境下的芯片操作

SPI设备的驱动-1[转]

今天折腾了一天的SPI设备的驱动加载,甚至动用了逻辑分析仪来查看spi总线的波形,主要包括两个SPI设备,at45db321d和mcp2515,一个是串行的dataflash,一个是can总线设备芯片。前者对于我们来说非常重要,我们可以借助该设备对uboot和kernel以及根文件系统进行更新。    预备知识:设备和驱动是如何匹配的?系统的热插拔是如何实现的?    首先一点,设备和驱动是严格区

gc315630的专栏 1324

AT91RM9200开发笔记(9):为Linux2.6.20添加Nor Flash MTD驱动

开发板上只有Nor Flash,所以为了实现层次文件系统,需要为Linux2.6.20增加Nor Flash MTD驱动支持。其实工作量并不大,因为已经有现成的程序可供参考。MTD的驱动程序都集中在drivers/mtd里面。我们需要做的,仅仅是在drivers/mtd/maps下增加自己的分区表。因为有参考的代码,所以比较容易。(1)构建配置选项首先,根据edb7312.c构建自己的mtd分区表

wang029094099的专栏 844

AT91SAM9260 NORFLASH系统启动的设计方案

 1.      概述           本文档描述AT91SAM9260  NORFLASH系统启动的设计方案;           AT91SAM9260  支持多种boot策略,具体取决于系统reset时BMS的状态,当BMS=0时系统从连接到CS0上的外部静态非易失性存储器boot。Norflash接口和SRAM类似,并且数据读取操作简单,CPU的SMC(静态存储控制器)可以直接

K·A 5577

ARM AT91SAM9260 移植Linux-2.6.30流程

关键词:ARM Linux SAM9260 移植 抵岸科技概述本文的目的在于帮助AT91SAM9g20(以下简称为SAM9g20)的软件开发工程师从零开始,为SAM9g20建立Linux运行环境。在进行SAM9g20 Linux开发之前,需要建立开发环境。本文选用的目标板为:timll SBC6020上。本文涉及到的一些linux基础知识,若无相关介绍,则请自行至网络搜索补充。本文的部分内容来源于网络。SAM9g20 Linux的基本组成:·       Bootstrap·       U-boot·  

抵岸科技的专栏 1890

uboot 2012.10移植at91sam9260ek草稿之一

准备: 之前一直用的uboot是1.3的,由于去年的换工作,在新的岗位上,好多产口的uboot 已经不用1.3这样的老版本了,本着总结与学习的态度,我想把2012.10移植一次,移植at91sam9260ek的板子上,这前对于1.3.4可以直接在http://www.at91.com/linux4sam/bin/view/Linux4SAM/U-Boot上下载,同时也可以下载到补丁。这样可以

Bean Huo 1777

(笔记)AT91SAM9260的启动过程详细解说

  Bootstrap的启动过程 一、 说明: Bootstrap启动代码是官方提供的一级启动代码,包括汇编和C语言两部分组成。对AT91SAM9260来说编译完成后,代码长度必须小于4KB,烧写到dataflash中的0x00000000. 二、系统上电准备Bootstrap启动。 当系统启动选择片内启动(BMS=1)时,程序上电后,启动内部ROM的的固化程序,自动将检测datafla...

weixin_33681778的博客 434

linux-2.6.27移植AT91SAM9260平台终端之(01)_9260的存储空间分配及其启动方式

        由于公司终端产品的平台由三星的2440换到9260上(可能是由于9260更适合于工业场合上),考虑到后续项目也可能采用此平台,为与时俱进,因此利用闲时间也来学习学习这个平台!         按照惯例,先了解下9260的存储空间分配及其启动方式:        1. 9260的总线为32bit,因此其存储空间共有4G,一共分成16个bank,每个

reille的笔记 3103

at91sam9260 bootstrap 3.2移植

第一步:下载源代码 从下面的网址中下载最新的代码: ftp://www.at91.com/pub/at91bootstrap/ 第二步: 开发板的硬件: CPU            AT91SAM9260 SDRAM         MT48LC16M  1片(32MB 16bit) NANDFLASH   K9F1208U0c(64MB) BOOTSTRAP 针对我板子对Bo

Bean Huo 7110

u-boot中NAND flash的MTD驱动移植

转载地址:http://blog.sina.com.cn/s/blog_87f8cc4e0102vbxg.html 至此,nand_scan()函数的代码分析全部结束。下面我们来总结一下这个函数都做了些什么: 1、 初始化mtd_info中一个重要的指针priv,使这个指针指向nand_chip变量; 2、 初始化nand_chip中的一些MTD驱动低层函数指针,如:cmdfunc、waitf...

kunkliu的博客 1683

Linux系统移植:官板 uboot 修改(上)

Linux系统移植:官板 uboot 修改(上)

嵌入式学习记录站点 3491

Linux内核移植 part2:uboot load_addr 释疑

uboot bootm在寻找OS镜像的时候会根据load_addr变量去对应的ram地址中找。/* common/image.c */ ulong genimg_get_kernel_addr_fit(char * const img_addr, const char **fit_uname_config, const char *

叶玄青的博客 5285

移植AT91Bootstrap1.15

AT91SAM9260EK有一段时间了,一直没有时间把这些东西写下来。经过女友的多次鼓励,还是决定将这些东西写下来。一来,等很久以后,自己可以回头来看;二来,希望自己的这些点滴能够帮助后来者。     首先,这个移植起来不难,很简单,只要你是按照9260EK板做的,只需要添加你所用的NAND在里面就可以了。顺便在这里声明下,我的板子是按照9260EK做的,不过我的板子上没有NOR FLASH,

经天纬地之奇才,济世匡时之智略 2008

U-Boot NAND FLASH移植(附:源码和测试代码)

U-Boot NAND FLASH移植 ——西伯利亚的风       为了使u-boot支持NAND FLASH,实现u-boot读写NAND FLASH,我们需要根据开发板的具体情况修改u-boot,增加NAND FLASH驱动。 一、移植环境 1.u-boot版本1.1.6 2.开发板Jz2440(ARM9 S3C2440

cxsys的专栏 3163

移植at91板子上的linux内核 配置板子的文件在哪写,at91sam9263上面移植u-boot以及kernel的详细步骤...

文章摘自:http://hi.baidu.com/%B2%DC%BF%AA%C6%EB/blog/item/7882778d2dbfc215b21bba36.html我的板子是ATMEL的芯片,杭州一个小厂生产的,质量比较次,不支持从nandflash直接启动。所以需要自己编译Bootstrap放到dataflash里面用来引导u-boot。u-boot在我们的板子上面可以烧写到dataflash...

weixin_29479863的博客 378

at91sam9260 linux工作在NorFlash全过程

<br />ATMEL官方的AT91BootStrap不支持NorFlash,<br />如果需要支持NorFlash就要自己动手了<br />在 Bootstrap-v1.15/board/at91sam9260ek 目录添加 norflash文件夹,<br />在该目录下面添加 at91sam9260ek.h 文件, 文件内容:<br />/* ----------------------------------------------------------------------------<br

寸先生的AI道路 3342

使用at91sam9260uboot下直接对nandflash操作

声明:这里面的对nandflash的操作是在韦东山老师的linux视频启发下所写的 一,at91sam9260里面有对nandflash的支持,主要是通过三个寄存器实现的;  (1). DataRegister 数据寄存器 位置在offset 0x000000 ,起始地址就是nandflash的地址空间,所以实际的寄存器地址也就是0x40000000;  (2).CommandRegiste

cxm446749608的专栏 4457
上一篇: powerpc linux下dts解析过程
下一篇: DTS草稿之一
Bean Huo
博客等级 码龄18年 40粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值