1.1.6移植笔记(初级篇)

前言:这是本人在学习u-boot期间的初级移植笔记,故功能较简陋、代码较粗略,后续会有高级篇完善。

奋斗

u-boot版本:1.1.6

交叉编译器:3.4.5

开发板:友善之臂mini2440

开发板配置:SoC s3c2440 、网卡 DM9000 、 Nor Flash AM29LV160DB (2M) 、NAND FLash (256M) 、SDRAM (64M)

以源文件已存在的 smdk2410项目为基础进行移植工作

1.移植准备工作

1).下载u-boot-1.1.6源码,并解压;

2).建立u-boot的source insight工程,方便查找及分析;

3).安装arm-Linux交叉编译器,版本3.4.5;

2.修改顶层Makefile

1).打开 /Makefile ,找到smdk2410板配置选项:

smdk2410_config :   unconfig 

    @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 

smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

各项参数意义:

arm:CPU架构

arm920t:CPU型号

smdk2410:开发板名称

NULL:开发者

s3c24x0:片上系统

类比此项添加配置选项:

mini2440_config :   unconfig 

    @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0 

mini2440_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0 3.建立主代码

1).找到 /board/smdk2410 目录,将此目录复制为 /board/mini2440 ,打开mini2440目录,将smdk2410.c文件重命名为mini2440.c。打开同目录下Makefile文件,修改代码

COBJS   := smdk2410.o flash.o 

COBJS := smdk2410.o flash.o

COBJS   := mini2440.o flash.o 

COBJS := mini2440.o flash.o

2).建立开发板配置头文件。将 /include/configs/smdk2410.h 复制为 /include/configs/mini2440.h ,打开此文件,添加

#define CONFIG_S3C2440      1   /* in a SAMSUNG S3C2440 SoC     */ 

#define CONFIG_S3C2440 1 /* in a SAMSUNG S3C2440 SoC */
4.修改CPU频率设置

1).将以上步骤建立的代码编译测试:

root@book-desktop:/home/book/Desktop/u-boot-1.1.6# make mini2440_config 

Configuring for mini2440 board... 

root@book-desktop:/home/book/Desktop/u-boot-1.1.6# make 

root@book-desktop:/home/book/Desktop/u-boot-1.1.6# make mini2440_config Configuring for mini2440 board... root@book-desktop:/home/book/Desktop/u-boot-1.1.6# make

生成u-boot.bin 下载至开发板运行,发现并未打印出任何信息。原因是2410和2440在频率设置方面有所不同。

2). 打开 /board/mini2440/mini2440.c ,屏蔽下列代码

#if 0 

#define FCLK_SPEED 1 

 

#if FCLK_SPEED==0       /* Fout = 203MHz, Fin = 12MHz for Audio */ 

#define M_MDIV  0xC3 

#define M_PDIV  0x4 

#define M_SDIV  0x1 

#elif FCLK_SPEED==1     /* Fout = 202.8MHz */ 

#define M_MDIV  0xA1 

#define M_PDIV  0x3 

#define M_SDIV  0x1 

#endif 

 

#define USB_CLOCK 1 

 

#if USB_CLOCK==0 

#define U_M_MDIV    0xA1 

#define U_M_PDIV    0x3 

#define U_M_SDIV    0x1 

#elif USB_CLOCK==1 

#define U_M_MDIV    0x48 

#define U_M_PDIV    0x3 

#define U_M_SDIV    0x2 

#endif 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5192f09a4a43c65b3eaf648136b55d4c.html