u-boot-2011.06移植

发布者:Meshulun最新更新时间:2024-07-10 来源: elecfans关键字:u-boot  移植 手机看文章 扫描二维码
随时随地手机看文章

u-boot-2011.06虽然支持一些常见的开发板,但如果u-boot-2011.06不支持我们手上的开发板,那就要找到与我们的开发板最接近的u-boot-2011.06所支持的开发板,在这个开发板的基础上进行移植。u-boot-2011.06所支持的smdk2410开发板是最接近我的开发板的,所以我就在该此基础上进行修改、移植。

 

在移植之前,我们还需要安装、配置eldk,用于编译u-boot。下面我们就先介绍一下eldk的安装与配置:

1.下载eldk

        在ftp://ftp.denx.de/pub/eldk/选择任一版本的eldk并下载,我选择的是eldk4.2版本的arm-2008-11-24.iso文件。把该文件下载到/home/zhaocj/download/目录下。

2.在root权限下安装eldk

        创建挂载点:

mkdir   /mnt/dvdrom

        挂载光驱:

mount  –o loop /home/zhaocj/download/arm-2008-11-24.iso/mnt/dvdrom

        安装eldk:

cd   /mnt/dvdrom

./install –d /opt/eldk4.2/

       这样eldk就安装到了/opt/eldk4.2目录下。

3.设置环境变量

cd  ~

gedit   .bashrc

        在最后添加如下内容:

export  CROSS_COMPILE=arm-linux-

export  PATH=/opt/eldk4.2/bin: /opt/eldk4.2/usr/bin:$PATH

        保存并退出,然后执行:

source  .bashrc

        重启电脑就完成了eldk的安装。

 

       下面就介绍u-boot-2011.06的移植,在这里我把我的开发板命名为gq2440:

1.下载u-boot

        在ftp://ftp.denx.de/pub/u-boot/下载目前最新的u-boot版本(即u-boot-2011.06.tar.bz2)到我的用户主目录下。

2.解压u-boot

cd  ~

        把u-boot-2011.06解压到当前目录下

tar  –xvjf u-boot-2011.06.tar.bz2

cd  u-boot-2011.06

3.在u-boot中添加我的开发板信息

emacs  boards.cfg

       打开boards.cfg文件,在第70行(smdk2410 arm arm920t – samsung s3c24x0)的下面添加一行,内容如下:

gq2440 arm arm920t – samsung s3c24x0

       保存并退出。

4.通过复制的方式添加我的开发板头文件

cp include/configs/smdk2410.h include/configs/gq2440.h

5.通过复制的方式添加我的开发板文件夹

cp –r board/samsung/smdk2410 board/samsung/gq2440

       更改文件名

mv board/samsung/gq2440/smdk2410.c board/samsung/gq2440/gq2440.c

       修改Makefile文件

emacs board/samsung/gq2440/Makefile

       打开Makefile文件,在第28行中,把COBJS :=smdk2410.o改为:

COBJS:=gq2440.o

       保存并退出。

6.编译

make   distclean

make   gq2440_config

make

      

        如果上述过程没有出错的话,会在u-boot的目录下出现新的u-boot.bin文件。

2 NorFlash启动移植方法

.修改宏定义

打开include/configs/gq2440.h文件

第38行“#define CONFIG_S3C2410        ”改为:

38:#define CONFIG_S3C2440         

目的是告之系统本开发板使用的是S3C2440处理器。

 

第131行“#define CONFIG_SYS_PROMPT     'SMDK2410 # '”改为:

131:#define CONFIG_SYS_PROMPT      'gq2440# '

目的是使命令行提示符显示为“gq2440# ”。

 

第185行“#define CONFIG_FLASH_CFI_LEGACY”改为:

185:#define CONFIG_SYS_CFI_FLASH_CONFIG_REGS    {0xFFFF}

因为在u-boot-2011.06中,使用的是CFI的NorFlash接口,所以不需要定义CONFIG_FLASH_CFI_LEGACY,而是要定义CONFIG_SYS_CFI_FLASH_CONFIG_REGS。

 

第191行“#define CONFIG_SYS_MAX_FLASH_SECT (19)”改为:

191:#define CONFIG_SYS_MAX_FLASH_SECT   (35)

因为本开发板使用的NorFlash是EN29LV160AB,它有35个扇区。

 

第212行“#define CONFIG_NAND_S3C2410”改为:

212:#define CONFIG_NAND_S3C2440

 

第213行“#define CONFIG_SYS_S3C2410_NAND_HWECC”改为:

213:#define CONFIG_SYS_S3C2440_NAND_HWECC

 

2.修改系统时钟频率

打开arch/arm/cpu/arm920t/start.s文件

第164行“# if defined(CONFIG_S3C2410)”改为:

164:# if defined(CONFIG_S3C2440)

 

第165行“ldr       r1, =0x3ff”改为:

165:ldr r1, =0x7fff

目的是屏蔽所有子中断。

 

第173行“mov     r1, #3”改为:

173:mov      r1, #5

目的是使FCLK:HCLK:PCLK= 1:4:8。

 

打开board/samsung/gq2440/gq2440.c文件

第42行至第44行的内容改为:

42:#define M_MDIV   92

43:#define M_PDIV    1

44:#define M_SDIV    1

本开发板的输入晶振频率为12MHz,通过上面的修改,则MPLL频率为400MHz。

 

第54行至第56行的内容改为:

54:#define U_M_MDIV     56

55:#define U_M_PDIV      2

56:#define U_M_SDIV      2

通过上面的修改,则UPLL频率为48MHz。

 

3.修改内存SDRAM时序

打开board/samsung/gq2440/lowlevel_init.s文件

第54行至第126行的内容改为:

54:#define B1_BWSCON          (DW16)

55:#define B2_BWSCON          (DW16)

56:#define B3_BWSCON          (DW16)

57:#define B4_BWSCON          (DW32)

58:#define B5_BWSCON          (DW16)

59:#define B6_BWSCON          (DW32)

60:#define B7_BWSCON          (DW32)

61:

62:

63:#define B0_Tacs                   0x3

64:#define B0_Tcos                   0x3

65:#define B0_Tacc                   0x7

66:#define B0_Tcoh                  0x3

67:#define B0_Tah                    0x3

68:#define B0_Tacp                  0x1

69:#define B0_PMC                  0x0

70:

71:

72:#define B1_Tacs                   0x1

73:#define B1_Tcos                   0x1

74:#define B1_Tacc                   0x6

75:#define B1_Tcoh                  0x1

76:#define B1_Tah                    0x1

77:#define B1_Tacp                  0x0

78:#define B1_PMC                  0x0

79:

80:#define B2_Tacs                   0x1

81:#define B2_Tcos                   0x1

82:#define B2_Tacc                   0x6

83:#define B2_Tcoh                  0x1

84:#define B2_Tah                    0x1

85:#define B2_Tacp                  0x0

86:#define B2_PMC                  0x0

87:

88:#define B3_Tacs                   0x1

89:#define B3_Tcos                   0x1

90:#define B3_Tacc                   0x6

91:#define B3_Tcoh                  0x1

92:#define B3_Tah                    0x1

93:#define B3_Tacp                  0x0

94:#define B3_PMC                  0x0

95:

96:#define B4_Tacs                   0x1

97:#define B4_Tcos                   0x1

98:#define B4_Tacc                   0x6

99:#define B4_Tcoh                  0x1

100:#define B4_Tah                  0x1

101:#define B4_Tacp                 0x0

102:#define B4_PMC                0x0

103:

104:#define B5_Tacs                 0x1

105:#define B5_Tcos                 0x1

106:#define B5_Tacc                 0x6

107:#define B5_Tcoh                0x1

108:#define B5_Tah                  0x1

[1] [2] [3] [4] [5]
关键字:u-boot  移植 引用地址:u-boot-2011.06移植

上一篇:ALSA声卡10_从零编写之数据传输_学习笔记
下一篇:摄像头驱动学习

推荐阅读最新更新时间:2024-11-02 11:25

u-boot添加yaffs2烧写功能代码分析
最近在学习MINI2440的u-boot移植,在添加yaffs2文件系统烧写这一功能时,网上找到的说明文档都比较笼统,都是给出代码的修改位置。而我想了解其具体执行过程,所以在移植之前简单分析了一下执行过程,记录在此。 本文分析的代码参考了一些文章以及友善之臂UBOOT移植文档的实现,这些文章中的实现基本一致,本文不会列出完整代码,请参考友善之臂UBOOT移植文档或以下文章对比查看:u-boot-2009.08在mini2440上的移植--增加yaffs2文件系统 nand命令执行时调用/common/cmd_nand.c中的do_nand()函数,这里主要的改动是增加了.yaffs2命令的解析,之后执行nand_write
[单片机]
<font color='red'>u-boot</font>添加yaffs2烧写功能代码分析
基于tiny4412的Linux内核移植 -- eMMC驱动移植(六)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 eMMC:KLMxGxFE3x-x00x 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 概述 eMMC驱动在内核中也已经支持好了,代码在:
[单片机]
基于tiny4412的Linux内核<font color='red'>移植</font> -- eMMC驱动<font color='red'>移植</font>(六)
使用Cubemx移植FatFs到stm32
在大型的存储器中,没有文件系统是万万不可行的,你不可能每次要打开一个文件都要从头到尾扫描一遍存储器,几兆的小存储器还好,几G甚至几T的存储器就根本没办法这么做了。而且有了文件系统也可以方便的管理使用各类文件。 这一次使用Cubemx生成FatFs的初始化代码,然后做最后的移植工作。本人使用的是stm32f767的野火的板子。 介绍一下FafFs 系统架构 FatFs是一种中间层,可以屏蔽硬件的差异,移植起来非常方便 移植需要注意的地方 你需要提供FatFs需要的底层I/O函数,需要的函数如下表,但是并不是全部函数都需要,你只需要提供必需的disk_status disk_initialize disk_read 和你需要的
[单片机]
使用Cubemx<font color='red'>移植</font>FatFs到stm32
ARM-Linux驱动移植--Watch Dog Timer(看门狗)驱动移植
硬件平台:FL2440 (S3C2440) 内核版本:2.6.28 软件平台:Ubuntu 11.04 内核版本:2.6.39 交叉编译器:arm-linux-gcc 3.4.1 原创作品,转载请标明出处 1、加载看门狗驱动 insmod wdt.ko wdt.ko为驱动文件名,不加任何参数如果不喂狗,则计数器到0时执行中断函数(设置LED的状态,然后喂狗,重新设置WTCNT的值) 可选的参数 module_param(tmr_margin, int, 0); module_param(tmr_atboot, int, 0); module_param(nowayout, int, 0); module_para
[单片机]
ARM-Linux驱动<font color='red'>移植</font>--Watch Dog Timer(看门狗)驱动<font color='red'>移植</font>
linux2.6.32.2移植到ARM平台(mini2440)
1、指定交叉编译变量 即修改顶层Makefile文件,vim打开,修改如下: 原 export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= 改为 export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= arm //指定目标平台为ARM CROSS_COMPILE ?= arm-linux- //指定交叉编译器,此处是系统默认的,若指定其他的需要把路径完整列出 修改完毕之后,先编译一下,看是否能通过, # make s3c2410_defconfig # make 2、
[单片机]
tcpdump 移植
一、环境介绍 1.1 宿主机 Ubuntu 1404 32 位 1.2 嵌入式平台 ATMEL AT91SAM9X25 1.3 交叉工具链 arm-none-linux-gnueabi tcpdump-4.8.1移植所需源码包下载地址 二、交叉编译 2.1 先编译 tcpdump-4.8.1 依赖的模块 tar xvf libpcap-1.8.1.tar.gz cd libpcap-1.8.1/ ./configure --prefix=$PWD/tmp --host=arm-none-linux-gnueabi --build=i686-linux --with-pcap=linux CC=arm-none-li
[单片机]
linux2.6.32.2 mini2440平台移植--移植DM9000网卡驱动
1.1.1 设备资源初始化 Linux-2..6.32.2已经自带了完善的DM9000网卡驱动驱动(源代码位置:linux-2.6.32.2/ drivers/net/dm9000.c),它也是一个平台设备,因此在目标平台初始化代码中,只要填写好相应的结构表即可(在mach-mini2440.c里面),具体步骤如下: 首先添加驱动所需的头文件dm9000.h: #include linux/dm9000.h 再定义DM9000网卡设备的物理基地址,以便后面用到: /* DM9000AEP 10/100 ethernet controller */ #define MACH_MINI2440_DM9K_BAS
[单片机]
Exynos4412 Uboot 移植(四)—— Uboot引导内核过程分析
bootloader 要想启动内核,可以直接跳到内核的第一个指令处,即内核的起始地址,这样便可以完成内核的启动工作了。但是要想启动内核还需要满足一些条件,如下所示: 1、cpu 寄存器设置 * R0 = 0 * R1 = 机器类型 id * R2 = 启动参数在内存中的起始地址 2、cpu 模式 * 禁止所有中断 * 必须为SVC(超级用户)模式 3、Cache、MMU * 关闭 MMU * 指令Cache可以开启或者关闭 * 数据Cache必须关闭 4、设备 * DMA 设备应当停止工作 5、PC为内核的起始地址 这些需求都由 boot loader 实现
[单片机]
Exynos4412 Uboot <font color='red'>移植</font>(四)—— Uboot引导内核过程分析
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved