[Linux驱动开发] mini2440开发板u-bbot移植


分类: Linux驱动开发 365人阅读 评论(0) 收藏 举报
linux c makefile 服务器 工具 测试

在下载的uboot源码中并没有对mini2440开发板的支持,需要做相应的移植

1、下载u-boot源码:u-boot-2008.10.tar

2、解压源码

3、选择移植参考开发板

3.1、首先选择MCU相同的开发板,在u-boot-2008.10中不支持MCUS3C2440芯片的开发板

3.2、如果没有相同MCU的开发板,则选择MPU相同的开发板

此处S3C2440MPUarm920t,与u-boot-2008.10中的smdk2410相同,故选择smdk2410作为参考开发板

4、在顶层Makefile中为开发板添加新的配置选项,同样参考smdk2410的配置选项

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10$ vi Makefile

4.1、添加mini2440_config

4.2、修改编译工具,arm架构下使用CROSS_COMPILE = arm-linux-gnu-

5、修改cpu/arm920t/start.S

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/cpu/arm920t$ vi start.S

5.1、修改编译条件使其支持S3C2440

#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) 

修改为:

5.2、添加寄存器的定义

[Linux驱动开发] mini2440开发板u-bbot移植_第1张图片

5.3、修改中断禁止部分,添加S3C2440中断禁止代码

5.4、修改时钟设置(S3C2440主频设置为405MHZ)

[Linux驱动开发] mini2440开发板u-bbot移植_第2张图片

6、修改cpu/arm920t/s3c24x0/interrupts.c

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/cpu/arm920t/s3c24x0$ vi interrupts.c

6.1、在有S3C2410宏定义开关里加入对S3C2440的支持

[Linux驱动开发] mini2440开发板u-bbot移植_第3张图片

6.2、在函数get_tbclk中,添加对mini2440的支持

7、修改cpu/arm920t/s3c24x0/speed.c

7.1、仍然是在宏定义中添加对S3C2440的支持

[Linux驱动开发] mini2440开发板u-bbot移植_第4张图片

7.2、修改函数get_PLLCLK

由于S3C2440S3C2410MPLLUPLL计算公式不同,需要修改相关代码

[Linux驱动开发] mini2440开发板u-bbot移植_第5张图片

7.3、修改函数get_HCLK,同样S3C2440对分频的设置也不相同,需添加相关修改

[Linux驱动开发] mini2440开发板u-bbot移植_第6张图片

8、修改cpu/arm920t/s3c24x0/serial.c

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/cpu/arm920t/s3c24x0$ vi serial.c

在有s3c2410宏定义开关里加入对s3c2440的支持

9、修改include/asm-arm/mach-types.h,添加mini2440机器ID,要求添加的ID与内核提供的ID保持一致。在内核源码文件include/asm-arm/mach-types.h

10、修改include/s3c24x0.h

在有s3c2410宏定义开关里加入对s3c2440的支持

10.1INTERRUPT

10.2DMAS

10.3CLOCK & POWER MANAGEMENT

[Linux驱动开发] mini2440开发板u-bbot移植_第7张图片

10.4LCD CONTROLLER

10.5I/O PORT

[Linux驱动开发] mini2440开发板u-bbot移植_第8张图片

11、在board目录中创建一个属于新开发板的目录,向目录中添加文件,再修改

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/board$ sudo cp -r smdk2410/ mini2440

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/board$ sudo chmod -R 777 mini2440/

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/board/mini2440$ vi Makefile

28 COBJS   := smdk2410.o flash.o 修改为:28 COBJS   := mini2440.o flash.o

12、修改board/mini2440/mini2440.c

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/board$ cd mini2440/

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/board/mini2440$ sudo cp smdk2410.c mini2440.c

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/board/mini2440$ vi mini2440.c

12.1、修改PLL的配置

[Linux驱动开发] mini2440开发板u-bbot移植_第9张图片

12.2、修改UPLL的配置

[Linux驱动开发] mini2440开发板u-bbot移植_第10张图片

12.3、为了引导内核,修改函数board_init中开发板类型代码部分

123     /* arch number of SMDK2410-Board */

124     gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;

修改为:

124     /* arch number of mini2440-Board */

125     gd->bd->bi_arch_number = MACH_TYPE_MINI2410;

[Linux驱动开发] mini2440开发板u-bbot移植_第11张图片

13、修改board/mini2440/lowlevel_init.S,修改REFRESH的刷新周期

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/board/mini2440$ vi lowlevel_init.S

123 #define Trp         0x0 /* 2clk */  修改为:123 #define Trp         0x2 /* 4clk */

126 #define REFCNT          1113    /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */ 修改为:

126#define REFCNT          1112  

[Linux驱动开发] mini2440开发板u-bbot移植_第12张图片

14、软硬件配置文件mini2440.h

为开发板添加新的软硬件配置文件,先复制参考板的配置文件smdk2410.h,然后修改

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/include/configs$ cp smdk2410.h mini2440.h

 

15、修改include/configs/mini2440.h

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/include/configs$ vi mini2440.h

15.1、添加对S3C2440宏定义

 37 #define CONFIG_S3C2410      1   /* in a SAMSUNG S3C2410 SoC     */

 38 #define CONFIG_SMDK2410     1   /* on a SAMSUNG SMDK2410 Board  */

改为:

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

 38 #define CONFIG_mini2440     1   /* on a SAMSUNG mini2440 Board  */

 

15.2、修改命令提示符

114 #define CFG_PROMPT      "SMDK2410 # "   /* Monitor Command Prompt   */

修改为:

114 #define CFG_PROMPT      " mini2440 # "  /* Monitor Command Prompt   */

16、网卡驱动移植

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/include/configs$ vi mini2440.h

17.1、屏蔽原来关于网卡的配置

17.2、添加关于DM9000的配置

17.3、添加对ping命令的支持

17、修改网卡驱动

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/drivers/net$ vi dm9000x.c

在网卡驱动drivers/net/dm9000x.c中,有一段程序试图连接网卡的MII接口,而实际MII接口并未使用,会有十秒的等待时间,然后报错,可以将此段程序注释掉

18、修改drivers/rtc/s3c24x0_rtc.c

terry@terry-virtual-machine:~/terry_shared/uboot/u-boot-2008.10/drivers/rtc$ vi s3c24x0_rtc.c

在有s3c2410宏定义开关里加入对s3c2410的支持

19、至此,代码部分已经修改完毕,接下来对修改之后的代码进行编译

#make clean

#make mini2440_config

#make CROSS_COMPILE=arm-linux-gnu-

20、编译后生成,用JTAG烧录到mini2440开发板中,并测试是否可用

20.1、配置环境变量

#setenv serverip 192.168.7.253

#setenv ipaddr 192.168.7.153

#setenv ethaddr 12:34:56:78:90:53

#saveenv

20.2ping服务器ip

#ping 192.168.7.153


你可能感兴趣的:(Linux驱动开发)