• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一蓑烟雨
C/C++,Linux,语音技术
博客园    首页    新随笔    联系   管理    订阅  订阅
U-Boot移植(3)增加对S3C2440的支持
昨天跟张老师去打乒乓球了,还没写完今天接着写。。。。。

6、S3C2440是S3C2410的改进版,它们的操作基本相似,只是在系统时钟的设置、NAND Flash控制器的操作等方面有一些小差别。。而下面我要做的就是令一个U-Boot二进制代码既可以在S3C2410上运行,也可以在S3C2440上运行。

        虽说我的板也是S3C2410的,但是增加S3C2440的U-Boot练习,可以提高我们的能力,为后面的学习打下基础。

             GSTATUS1寄存器的值:0x32410000表示S3C2410,0x32410002表示S3C2440。

             S3C2410:FCLK=200MHZ;S3C2440:FCLK=400MHZ,UCLK=48MHZ;

             搞清楚之后,下面我们就可以开始了。

             首先先在board/100ask24x0/100ask24x0.c 中的前面定义如下一些值:

             图片

             我的开发板输入时钟为12MHZ,如果你的开发板时钟和我的不一样的话,可以根据以前代码中的公式计算,然后修改系统时钟,这在include/configs/100ask24x0.h中的宏CONFIG_SYS_CLK_FREQ中定义。

          接下来,就是使用不同的宏设置系统时钟,包括S3C2410、S3C2440。

           

            图片

            图片     

7、在后面设置串口波特率时需要获得系统时钟,就是在U-Boot的第二个阶段,即是lib_arm/board.c中start_armboot函数调用serial_init函数初始化串口时,会调用get_PCLK、get_HCLK、get_PLLCLK等函数,这需要我们作相应的修改。

         首先要在board_init函数的开关增加如下一行,才能使用变量gd,因为识别出S3C2410和S3C2440,设置了机器类型ID:gd->bd->bi_arch_number 。                             图片

     

     接着在get_PLLCLK函数中增加如下:

      图片

        由于分频系数设置方法也不一样,get_HCLK、get_PCLK也需要修改。修改如下:

       图片

  。。。。。。。。。。。

图片

上面3:6应改成6:3,这里是我自已写错了

。。。。。。。。

图片

3:6改成6:3

8、至此已修改完,可以进行编译。

          (1)make    100ask24x0_config

          (2)make all

后面竟然出现了一大堆的错误,需要耐心进行查寻修改。

posted on 2011-07-14 15:10  lovemu  阅读(830)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3