RK30SDK开发板驱动分析(二):DDR频率配置

在内核配置界界面,我们可以很容易的配置DDR的频率,300M OR 600M, so easy!

那么它是如何起作用的呢?

回想 RK30SDK开发板驱动分析(一) 末尾提到MACHINE_START是系统开始的地方,位于board-rk30-box.c ,注意里面有个函数rk30_map_io

MACHINE_START(RK30, "RK30board")
    .boot_params    = PLAT_PHYS_OFFSET + 0x800,
    .fixup        = rk30_fixup,
    .reserve    = &rk30_reserve,
    .map_io        = rk30_map_io,
    .init_irq    = rk30_init_irq,
    .timer        = &rk30_timer,
    .init_machine    = machine_rk30_board_init,
MACHINE_END

它的作用是静态映射外设的物理地址到内核地址空间,外设的寄存器地址都是实际的物理地址,在内核中必须先映射为内核地址,才能访问。映射的方式有2种:

  • 动态映射 ioremap
  • 静态映射 map_io, 即本文中提到的方式

3066中的实现rk30_map_io的函数位于common.c

void __init rk30_map_io(void)
{
    rk30_map_common_io();
    usb_uart_init();
    rk29_setup_early_printk();
    rk30_cpu_axi_init();
    rk29_sram_init();
    board_clock_init();
    rk30_l2_cache_init();
    ddr_init(DDR_TYPE, DDR_FREQ);
    clk_disable_unused();
    rk30_iomux_init();
    rk30_boot_mode_init();
}

其调用了ddr_init函数,这里应该就是初始化DDR,并设置DDR频率的地方了,那么DDR_FREQ的定义是什么?grep一下吧:

plat-rk/include/plat/ddr.h

#define DDR_FREQ          (CONFIG_DDR_SDRAM_FREQ)

CONFIG_DDR_SDRAM_FREQ正是我们在内核配置界面配置频率时设定的值,至此,前后呼应起来了!

顺便把DDR_TYPE也扒出来吧:

#define DDR3_2133M  (19)    // 13-13-13
#define DDR3_2133N  (20)    // 14-14-14
#define DDR3_DEFAULT (21)
#define DDR_DDR2     (22)
#define DDR_LPDDR    (23)
#define DDR_LPDDR2   (24)

找到常数了,这个应该直接参与硬件层次的寄存器处理了!DDR_TYPE也是在内核配置界面设置的:

				
时间: 2024-10-22 06:54:46

RK30SDK开发板驱动分析(二):DDR频率配置的相关文章

MiS603开发板 第十二章 SLAVE FIFO流传输

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十二章 SLAVE FIFO流传输 15.1 USB 固件源码分析 SLAVE FIFOUSB 固件源码仍然采用上

【内核】四、搭建完整的mini2440开发板驱动开发环境(仿照JZ2440驱动开发环境搭建)

一.mini2440开发板驱动环境搭建: <mini2440用户手册>说明原文>>注意:本开发板提供的 linux 内核并不能直接用于 u-boot ,因为我们公司是不使用u-boot的,并且对其各个参数设置并不了解,关于 U-Boot 的使用方法用户可以参考网上的资料. 我了个...鉴于使用免费版的mini2440光盘资料,驱动开发环境搭建从未成功过,罢了,虽然以后LCD和触摸屏驱动学习时会有些问题,但还是换熟悉的u-boot和uImage来搭建环境吧. 二.在mini2440开

tiny4412 串口驱动分析二 --- printk的实现

作者:彭东林 邮箱:[email protected] 开发板:tiny4412ADK+S700 4GB Flash 主机:Wind7 64位 虚拟机:Vmware+Ubuntu12_04 u-boot:U-Boot 2010.12 Linux内核版本:linux-3.0.31 Android版本:android-4.1.2 源码:kernel/printk.c asmlinkage int printk(const char *fmt, ...) { va_list args; int r;

Digispark(ATTINY85) 微型开发板驱动安装与开发环境配置教程

前几天无聊就弄了弄这个玩,网上教程可能有点杂,在这里就总结一下. Digispark开发板(也就是badusb)能干什么,自己搜去,/坏笑. 1.准备材料:Attiny85微型 USB接口开发板 Digispark kickstarter扩展板开发板(淘宝上9 RMB左右,我自己在这里购买的:点击进入,自己斟酌哪里购买) 这个可以直接连接电脑的USB接口. 2.接着安装Arduino IDE来配置环境. 各版本下载链接:https://pan.baidu.com/s/1T7OetboNNUneK

【分享】iTOP-iMX6UL开发板驱动看门狗 watchdog 以及 Linux-c 测试例程

iTOP-iMX6UL开发板看门狗测试例程,iTOP-iMX6UL 开发板的看门狗驱动默认已经配置,可以直接使用测试例程. 版本 V1.1:1.格式修改:2.例程修改完善,其中增加喂狗代码.1 看门狗内核驱动看门狗的驱动已经默认配置,iMX6UL 的 watchdog 看门狗驱动源码是"drivers/watchdog/watchdog.c".如下图所示,选择"Device Drivers --->",输入回车. 如下图所示,在"Device Dri

使用FPGA开发板驱动VGA显示器(未完待续)

1. 本次使用的是cyclone4开发板,先看下原理图,因为右边的RGB应该是模拟信号量,但是本次例程只接了3根线,那就是说颜色只有8种. 2. 代码 原文地址:https://www.cnblogs.com/429512065qhq/p/8503418.html

Beaglebone Black开发板安装驱动

Beaglebone Black开发板安装驱动 Beaglebone Black开发板安装驱动,在使用Beaglebone Black开发板子做任何事情之前首先需要安装驱动.下面的内容就了展示在Windows.Mac OS X以及Linux操作系统下Beaglebone Black开发板驱动的安装方式.使用USB连接的Beaglebone Black在电脑中显示为一个存储设备,如图1.2所示.   图1.2  Beaglebone Black作为可移动存储设备 这其中包括了你要开始使用Beagl

I51开发板----STC15F2K60S2教程

1. 2. 3. 4. 5.I51开发板 第五讲:定时器之简介篇:传送门 6.I51开发板 第六讲:定时器之配置篇:传送门 7.I51开发板 第七讲:定时器之库函数:传送门 8.I51开发板 第八讲:结构体:传送门 9.I51开发板 第九讲:数组:传送门 10.I51开发板 第十讲:指针:传送门 11.I51开发板 第十一讲:预处理:传送门 12.I51开发板 第十二讲:基本运算符:传送门 13.I51开发板 第十三讲 新建工程:传送门 14.I51开发板第十四讲 三极管简介:传送门 15.I5

TPYBoard V102:能跑Python的stm32开发板

近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBoardV102开发板. 一.板载硬件资源介绍 按照惯例先来介绍一个这块开发板的硬件组成,个人感觉这个开发板的性能还是属于相当不错的,下面详细介绍一下. TPYBoardV102是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于