(一)建立项目 修改时钟

一、启动流程

二、建立项目

解压源码,进入目录:

#tar xjvf u-boot-2010.06.tar.bz2

#cd u-boot-2010.06/board/samsung/

建立mini2440 文件夹:

#mkdir mini2440

2440 和2410 的模板复制

#cp -rf smdk2410/* mini2440 <—将2410 下所有的代码复制到2440 下

#cd mini2440

#mv smdk2410.c mini2440.c < 改名mini2440.c

修改mini2440 下Makefile 的第28 行

COBJS := mini2440.o flash.o <改名为mni2440.o

建立mini2440 头文件

#cd ../../../include/configs

#cp -rf smdk2410.h mini2440.h

修改U-BOOT 根目录下的Makefile 文件:

修改第159行为:

CROSS_COMPILE ?=arm-linux- <—指定交叉编译器

第3053行添加:

mini2440_config :  unconfig

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

arm:CPU的架构(ARCH)

arm920t:CPU的类型

TX2440 :对应在board目录下建立新的开发板项目的目录

samsung: 新开发板项目的上级目录, 如直接在board下建立新的开发板项目, 则这里应为NULL

s3c24x0:CPU型号

注意:编译选项格式的第二行要用Tab

测试编译新建的mini2440 开发板项目:

#make mini2440_config

如果出现Configuring for mini2440 board...则表示设置正确

#make

编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了

三、修改时钟和中断

u-boot 第一个要运行的程序arch/arm/cpu/arm920t/start.S 

1、 屏蔽AT91RM9200使用的LED代码

  1. mrs r0, cpsr
  2. bic r0, r0, #0x1f
  3. orr r0, r0, #0xd3
  4. msr cpsr, r0
  5. /*bl coloured_LED_init
  6. bl red_LED_on*/

2、 添加CPU频率初始化设置

  1. # define pWTCON 0x53000000
  2. # define INTMSK  0x4A000008  /* Interupt-Controller base addresses */
  3. # define INTSUBMSK  0x4A00001C
  4. # define CLKDIVN 0x4C000014 /* clock divisor register */
  5. # endif
  6. #define CLK_CTL_BASE  0x4C000000
  7. #define MDIV_405 0x7f << 12
  8. #define PSDIV_405 0x21
  9. #define MDIV_200 0xa1 << 12
  10. #define PSDIV_200 0x3

3、 添加中断禁止部分:

  1. # if defined(CONFIG_S3C2410)
  2. ldr r1, =0x3ff
  3. ldr r0, =INTSUBMSK
  4. str r1, [r0]
  5. # endif
  6. # if defined(CONFIG_S3C2440)
  7. ldr r1, =0x7fff
  8. ldr r0, =INTSUBMSK
  9. str r1, [r0]
  10. # endif

4、 修改时钟设置(2440的主频为405MHz)

  1. #if defined(CONFIG_S3C2440)
  2. /* FCLK:HCLK:PCLK = 1:4:8 */
  3. ldr r0, =CLKDIVN
  4. mov  r1, #5
  5. str r1, [r0]
  6. mrc p15, 0, r1, c1, c0, 0
  7. orr r1, r1, #0xc0000000
  8. mcr p15, 0, r1, c1, c0, 0
  9. mov  r1, #CLK_CTL_BASE
  10. mov  r2, #MDIV_405
  11. add r2, r2, #PSDIV_405
  12. str r2, [r1, #0x04]  /* MPLLCON */
  13. #else
  14. /* FCLK:HCLK:PCLK = 1:2:4 */
  15. /* default FCLK is 120 MHz ! */
  16. ldr r0, =CLKDIVN
  17. mov  r1, #3
  18. str r1, [r0]
  19. mrc p15, 0, r1, c1, c0, 0
  20. orr r1, r1, #0xc0000000
  21. mcr p15, 0, r1, c1, c0, 0
  22. mov  r1, #CLK_CTL_BASE
  23. mov  r2, #MDIV_200
  24. add r2, r2, #PSDIV_200
  25. str r2, [r1, #0x04]
  26. #endif
  27. #endif /* CONFIG_S3C24X0 */

说明:mrc p15, 0, r1, c1, c0, 0 、orr r1, r1, #0xc0000000 、mcr  p15, 0, r1, c1, c0, 0 这3句程序非常重要,对于S3C2440 ,CLKDIVN 的第【2:1 】位为HDIVN,如果HDIVN 非0 ,CPU总线模式应该从“总线模式应该从“fast bus mode ”转换为“asynchronous bus mode ”, 可以通过上面的3 句程序实现。否则CPU 的工作频率将自动变成HCLK ,不再是FCLK 。这对SDRAM 的初始化至关重要

修改/arch/arm/cpu/arm920t/s3c24x0/ speed.c

第66行添加代码:

  1. #if defined(CONFIG_S3C2440)  
  2. if(pllreg == MPLL)  
  3. {  
  4. return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s));  
  5. }  
  6. #endif 
  7. return (CONFIG_SYS_CLK_FREQ * m) / (p << s);
  8. }

第87行添加代码:

  1. ulong get_HCLK(void)
  2. {
  3. struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power();
  4. #if defined(CONFIG_S3C2440)  
  5. return(get_FCLK()/4);  
  6. #endif
  7. return (readl(&clk_power->CLKDIVN) & 2) ? get_FCLK() / 2 : get_FCLK();
  8. }

修改board/Samsung/mini2440/mini2440.c

从34行开始修改代码如下

  1. #define FCLK_SPEED 2 /*设置默认等于2,*/
  2. #if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
  3. #define M_MDIV  0xC3
  4. #define M_PDIV  0x4
  5. #define M_SDIV  0x1
  6. #elif FCLK_SPEED==1 /* Fout = 202.8MHz */
  7. #define M_MDIV  0xA1
  8. #define M_PDIV  0x3
  9. #define M_SDIV  0x1
  10. #elif FCLK_SPEED==2 /* Fout = 405MHz */  
  11. #define M_MDIV 0x7F   
  12. #define M_PDIV 0x2  
  13. #define M_SDIV 0x1
  14. #endif
  15. #define USB_CLOCK 2 /*设置默认等于2,*/
  16. #if USB_CLOCK==0
  17. #define U_M_MDIV  0xA1
  18. #define U_M_PDIV 0x3
  19. #define U_M_SDIV 0x1
  20. #elif USB_CLOCK==1
  21. #define U_M_MDIV  0x48
  22. #define U_M_PDIV 0x3
  23. #define U_M_SDIV 0x2
  24. #elif USB_CLOCK==2 /* Fout = 48MHz */  
  25. #define U_M_MDIV 0x38  
  26. #define U_M_PDIV 0x2  
  27. #define U_M_SDIV 0x2
  28. #endif
  29. board_init (void)函数修改代码如下:
  30. /* arch number of SMDK2410-Board */
  31. gd->bd->bi_arch_number = MACH_TYPE_S3C2440;
  32. /* adress of boot parameters */
  33. gd->bd->bi_boot_params = 0x30000100;
  34. icache_enable();
  35. dcache_enable();
  36. return 0;
  37. }

在include/configs/mini2440.h 头文件中添加之前用到的CONFIG_S3C2440 宏

第40行添加代码如下:

  1. #define CONFIG_S3C2440 1 /* on a mini2440 Board * 
时间: 2024-09-27 12:07:54

(一)建立项目 修改时钟的相关文章

ServiceStack 项目实例 001 建立项目结构

ServiceStack 用于服务开发,可以为各种形式的网站.软件.APP等提供数据服务,可以提供REST,WebService以及二级制数据形式的服务. 下面根据我们具体项目要求,说一下建立项目的方式: 建立项目 首先需要建立两个项目,一个为ServiceStack的项目,一个是MVC的项目. 1 建立空站点,用于放置SS项目: 选Web项目   --→    ASP.net Web Application  --→  空站点. 2 打开包管理器控制台,如果没有显示,可以在"查看-其它窗口&q

eclipse 项目修改和更新项目,回退版本,解决分支的冲突的办法

1.我在github建立了3个分支. 2.把其中一个分支拉到本地. 项目修改提交到远程库 3.修改完代码以后commit项目,点击项目右击->team->commit 4.然后提交push到github上,点击项目右击->team->push 更新项目 1.fetch项目,右击项目->team ->fetch 2.pull项目,右击项目->team->pull 回退版本 1.右击项目,->team->show  location history

如何建立项目奖惩规则并始终贯彻如一?

建立公开透明的项目奖惩规则,是保证项目进度及项目质量的不二法宝.任何一家企业进行规范化管理体系建设,都不可能照搬照抄他人的成果,必须由企业自己的员工当主力.而企业员工都各自担负着不同的业务或管理工作,他们不可能停下本职工作专司项目设计.要解决业务工作与项目设计争时间的矛盾,唯一可行的方法就是让企业员工在完成本职工作的同时超额付出.付出就有回报,超额就应该奖励.如何奖励超额付出?如何惩罚拖延进度或不能按时完成项目设计的员工?对企业而言,不可能用现在的制度,因为他们还没有实施规范化管理.而规范化管理

如何在Eclipse下,实现ant的web项目修改保存后,实时部署,直接刷新即可看到结果

最近碰到了一个老项目,是ant的web项目,把项目导入到Eclipse以后,发现修改了文件之后,要先执行build.xml,再把打包好的war丢到Tomcat下,再刷新才能看到效果.由于以前没用过ant,所以自己研究了一套办法(如果ant确实有像Eclipse下修改后直接刷新就可看到结果的方法,还望众客官不吝赐教). 本项目参考了以下4个帖子: 帖子1:  http://blog.csdn.net/futurelight/article/details/624950 帖子2: http://we

关于QT建立项目中遇到的相关问题的处理办法

关于QT建立项目中遇到的相关问题的处理办法 1.在QTCreater中新建一个空的工程时,第一次运行会抱一个错误,如下: -1: error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决方法:编译系统中出现两个cvtres.exe文件,需要到相应的位置找到这两个文件,然后查看并删去比较早的那个文件即可解决 (1)一个文件时在Microsoft.Net中的一个文件,路径如下图所示: (2)另一个cvtres.exe文件在vs2010的安装目录下,其位置如下图所示: 找到这

项目 修改架构

有问题不要拖延,把问题 提早说出来,如果我是经理,我也不会让下面的兄弟把问题 藏在心里. 把问题提出来,说出你的 疑惑. 项目 修改架构,布布扣,bubuko.com

H TML5 之 (4) 小项目一 时钟

这里做一个HTML5 入门的练手,一个小时钟项目,可以再上面拓展很多,程序员培养的就是思想 <!DOCTYPE HTML> <html> <head> <title>Click</title> <style> #clock{ background:#abcdef; } </style> </head> <body> <canvas id="clock" width=&quo

安卓建立项目后,在项目上出现小红叉(已解决)!

近来,有幸了解了谷歌的一款面向世界的新产品--无人驾驶汽车,尽管它还没有面世,但就目前来看,它所带来的影响也是巨大的,现在,我就来谈谈我对这个无人驾驶汽车的未来大一些想法. 无人驾驶汽车,顾名思义,无人驾驶的汽车,即自动化,电子计算机,传感器,互联网等信息技术所主导的驾驶系统之下所产生的汽车类别. 在这里,我不讨论这个汽车的技术分析,我并不精通于这方面,我想谈谈的,是他的未来趋势. 我曾经见过一些文章,或者一些学者曾经说过,无人驾驶汽车的到来将使得汽车行业空前的发达,因为它可是使得那些不会开车的

安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)

安卓(android)建立项目时失败.出现AndroidManifest.xml file missing几种解决方法?(总结中) Eclipse新建项目.遇到这种问题.注意例如以下: 1.文件名称最好不要用中文. 2.文件夹也不要用中文. 3.这个不会出错,但出于程序编写习惯.第一个字母最好为大写.