U-Boot移植(3)增加对S3C2440的支持

时间:2022-05-24 08:02:12
昨天跟张老师去打乒乓球了,还没写完今天接着写。。。。。

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 中的前面定义如下一些值:

             U-Boot移植(3)增加对S3C2440的支持

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

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

           

            U-Boot移植(3)增加对S3C2440的支持

            U-Boot移植(3)增加对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 。                             U-Boot移植(3)增加对S3C2440的支持

     

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

      U-Boot移植(3)增加对S3C2440的支持

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

       U-Boot移植(3)增加对S3C2440的支持

  。。。。。。。。。。。

U-Boot移植(3)增加对S3C2440的支持

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

。。。。。。。。

U-Boot移植(3)增加对S3C2440的支持

3:6改成6:3

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

          (1)make    100ask24x0_config

          (2)make all

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