一、编写 s3c24x0 的 bootloader——介绍、看门狗及时钟设置

发布时间:2024-08-26  

1.1 介绍

1.1.1 bootloader 的作用

bootloader 的终极功能就是为了启动内核。

  

  • 从上面可以知道最简单的 uboot 编写的步骤:

    • 初始化硬件:关看门狗、设置时钟、设置 SDRAM、初始化 nandflash

    • 如果bootloadre 比较大,要把它重定位到 SDRAM

    • 把内核从 nandflash 读到 SDRAM

    • 设置内核启动参数

    • 跳转执行内核

1.1.2 norflash 启动

  norflash 可以像内存那样读,但是不能像内存那样写。

  

 

 

 1.1.3 nandflash 启动

  

 

 

1.2 看门狗及时钟设置

1.2.1 看门狗设置

2440 必须在启动的时候关闭看门狗,不然就会隔一段时间重启芯片。

看门狗定时器控制(WTCON)寄存器允许用户使能或禁止看门狗定时器、从 4 个不同源选择时钟信号、使能或禁止中断和使能或禁止看门狗定时器输出。看门狗定时器是用于恢复 S3C2440 上电后若有故障重时新启动;如果不希望控制器重新启动,则应该禁止看门狗定时器。

如果用户希望使用看门狗定时器作为普通定时器,则应使能中断并且禁止看门狗定时器。

 

+ View Code

1.2.2 时钟设置

S3C2440 中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU 的 FCLK,AHB 总线外设的 HCLK 以及 APB 总线外设的 PCLK。S3C2440A 包含两个锁相环(PLL):一个提供给 FCLK、HCLK 和 PCLK,另一个专用于 USB 模块(48MHz)。、
时钟控制逻辑可以不使用 PLL 来减慢时钟,并且可以由软件连接或断开各外设模块的时钟,以降低功耗。

时钟源的选择与启动模式有关,引导启动时,时钟源的选择如下:

  • FCLK,HCLK 和 PCLK

    • FCLK 是提供给 ARM920T 的时钟。

    • HCLK 是提供给用于 ARM920T,存储器控制器,中断控制器,LCD 控制器,DMA 和 USB 主机模块的 AHB 总线的时钟。

    • PCLK 是提供给用于外设如 WDT,IIS,I2C,PWM 定时器,MMC/SD 接口,ADC,UART,GPIO,RTC 和 SPI 的 APB 总线的时钟。

  • S3C2440 支持对 FCLK、HCLK 和 PCLK 之间分频比例的选择。该比例由 CLKDIVN 控制寄存器中的 HDIVN 和 PDIVN 所决定。

 

 对于 S3C2440,芯片手册有这一段需要注意的:

 

 我们必须将 CPU 总线模式改变为 异步总线模式。

前面已经说明,S3C2440A 包含两个锁相环(PLL):一个提供给 FCLK、HCLK 和 PCLK,另一个专用于 USB 模块(48MHz)。

所以还必须要设置锁相环,来给 FCLK、HCLK 和 PCLK 来提供时钟源:

 

 UPLL 是提供给 USB 使用的,我们需要设置 MPLL,对于 MPLLCON,可以对应芯片手册提供的表进行设置:

 

  •  input frequence:输入时钟源,外部 12M 的晶振,原理图设计的

  • output Frequence:输出时钟源,也就是 MDIV,选择 400M,则 MDIV 值是 0x5c


 1 #define CLKDIVN     0x4C000014  /** 时钟分频控制寄存器 */

 2 #define MPLLCON     0x4c000004

 3 #define S3C2440_MPLL_400MHZ     ((0x5c<<12)|(0x01<<4)|(0x01)) /** 400M 时钟源 */

 4 

 5     /** 3. 芯片手册上要求:

 6      *  如果 HDIVN  非0, CPU 的总线模式应该从 fast bus mode 变为 asynchronous bus mode */

 7     mrc p15, 0, r1, c1, c0, 0   /* 读出控制寄存器 */

 8     orr r1, r1, #0xc0000000     /* 设置为 asynchronous bus mode */

 9     mcr p15, 0, r1, c1, c0, 0   /* 写入控制寄存器 */

10 

11     /** 4. 设置时钟频率 */

12     ldr r0, =MPLLCON

13     ldr r1, =S3C2440_MPLL_400MHZ

14     str r1, [r0]

15     

16     /** 5. 初始化 SDRAM */

17     mov ip, lr          /** 保存当前程序地址到 ip  寄存器 */

18     bl sdram_init       /** 执行 SDRAM 的初始化 */

19     mov    lr, ip


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>