从0开始学Keil下的S3C2440裸机开发-2使用外部SDRAM

发布者:Alisallll最新更新时间:2022-05-12 来源: eefocus关键字:Keil  S3C2440  裸机开发  外部SDRAM 手机看文章 扫描二维码
随时随地手机看文章

和使用内部RAM一样,关键设置分散加载文件,同时设置JLINK初始化配置文件。


1、新增工程配置组。

2设置分散加载组

3设置ini文件

Ext_Ram内容:

FUNC void SetupForStart (void) {

// Program Entry Point

  PC = 0x30000000;

}


FUNC void Init (void) {


  _WDWORD(0x4A000008, 0xFFFFFFFF);      // Disable All Interrupts


  _WDWORD(0x53000000, 0x00000000);      // Disable Watchdog Timer

  

                                        // Clock Setup 

                                        // FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz

  _WDWORD(0x4C000000, 0x0FFF0FFF);      // LOCKTIME

  _WDWORD(0x4C000014, 0x0000000F);      // CLKDIVN

  _WDWORD(0x4C000004, 0x00043011);      // MPLLCON

  _WDWORD(0x4C000008, 0x00038021);      // UPLLCON

  _WDWORD(0x4C00000C, 0x001FFFF0);      // CLKCON


                                        // Memory Controller Setup for SDRAM

  _WDWORD(0x48000000, 0x22000000);      // BWSCON

  _WDWORD(0x4800001C, 0x00018005);      // BANKCON6

  _WDWORD(0x48000020, 0x00018005);      // BANKCON7

  _WDWORD(0x48000024, 0x008404F3);      // REFRESH

  _WDWORD(0x48000028, 0x00000032);      // BANKSIZE

  _WDWORD(0x4800002C, 0x00000020);      // MRSRB6

  _WDWORD(0x48000030, 0x00000020);      // MRSRB7

  _WDWORD(0x56000000, 0x000003FF);      // GPACON: Enable Address lines for SDRAM

}

_WDWORD(0x40000000, 0xEAFFFFFE);        // Load RAM addr 0 with branch to itself

CPSR = 0x000000D3;                      // Disable interrupts

PC   = 0x40000000;                      // Position PC to start of RAM

_WDWORD(0x53000000, 0x00000021);        // Enable Watchdog

g, 0                                    // Wait for Watchdog to reset chip


Init();                                 // Initialize memory

LOAD .outputobjs3c2440keil.axf INCREMENTAL         // Download program

SetupForStart();                        // Setup for Running

g, main                                 // Goto Main


更改S3C2440.S文件如下:

image.png

4运行调试

5关于分散加载和JLINK初始化文件

分散加载:分散加载的定义网上一搜一堆,以此例程为例,程序包括ROM和RAM2个部分,分散加载的含义就是制定ROM在哪个地址,RAM在哪个地址,因为本例子,使用外部SDRAM,需要把SDRAM分成2部分,一部分存ROM,一部分存RAM,因此Keil提供可视化的分散加载配置,直接输入地址和大小即可。

JLINK初始化文件:因为在RAM中运行,掉电后代码丢失,同时要把代码下载到外部SDRAM中,JLINK无法直接操作SDRAM,所以要先初始化S3C2440的SDRAM接口,然后通过2440接口把代码写入SDRAM中,所以需要配置文件。

关键字:Keil  S3C2440  裸机开发  外部SDRAM 引用地址:从0开始学Keil下的S3C2440裸机开发-2使用外部SDRAM

上一篇:keil mini2440裸机代码问题解决笔记1
下一篇:使用JLINK下载uboot到MINI2440的NORFASH该如何配置?

推荐阅读最新更新时间:2024-11-11 12:47

Keil C51汉字显示的bug问题
一、缘起 这两天改进MCU的液晶显示方法,采用 即编即显 的思路,编写了一个可以直接显示字符串的程序。如程序调用disstr( 我是你老爸 );液晶屏上就会显示 我是你老爸 。 二、问题 但是,花了1天多时间辛辛苦苦改好的程序后,却发现有些汉字显示有问题。比如: P1:在第一行显示 实时参数 ,第二行显示 工作状态 ,实际上 工作状态 却重复显示了,除了在正确的地方显示外,还在 实时参数 后显示了。 P2: 正 字后若有 : ,则都显示成乱码。如果后面没有 : ,则 正 字可正确显示,但是后面却显示了后面的一行字。 P3: 过 字总显示乱码; 三、求索 通过调试发现,上述汉字显示不正常的时候,是因为在字库中找不到匹配的汉字。可是
[单片机]
如何让 keil MDK v5 支持 ARM7/9 设备
最近有位同事接私活时遇到一个问题,用 Keil-5 可以打开甲方给的工程,但是仿真和下载出错。 根据报的错误,找到了问题,原来是 Keil 5 不支持 LPC2368 这款设备。如下图: 打开 pack installer 也没有找到 LPC2000 系列的单片机。如下图: 最后去官网溜达了一圈,在 MDK5 Device List 中找到了原因。第二段话说的就是: For maintaining existing MDK Version 4 projects, or using devices that are not yet supported by a Software Pack, please install Le
[单片机]
如何让 <font color='red'>keil</font> MDK v5 支持 ARM7/9 设备
关于S3C2440的串口号
串口通讯程序 打开时有问题。 查看/etc/mdev.conf 文件,及相关资料《Mini2440 Linux移植开发实战指南.pdf》的文件系统启动过程分析,发现原来串口文件名发生了变化。 《Mini2440 Linux移植开发实战指南.pdf》下载在: http://www.linuxidc.com/Linux/2011-06/37903.htm 参考资料: “。。。。可 以 看 到 , 原 本 串 口 驱 动 注 册 的 设 备 名 是 s3c2410_serial0, s3c2410_serial1 和 s3c2410_serial2,而 mdev 则会在/dev 目录下对应生成 ttySAC0, ttySAC1 和 t
[单片机]
ARM-Linux s3c2440 之中断分析(三)
Linux通过以下函数来注册中断以及中断相关的入口函数handle,只有先注册IRQ,才能正常使用。 int set_irq_chip(unsigned int irq, structirq_chip *chip) static inline void set_irq_handler(unsigned intirq, irq_flow_handler_t handle) static inline void set_irq_chained_handler(unsignedint irq, irq_flow_handler_t handle) 实现的代码如下: for(irqno = IRQ_E
[单片机]
S3C2440开发板的学习使用(一)----串口的安装
一、串口连接 1、板上有USB转UART芯片PL2303HX,可以通过MINI USB口,使用一根USB转MINI USB线连接到笔记本上。 2、Windows下安装USB转串口驱动程序PL2303_Prolific_DriverInstaller_v1.5.0.exe。 3、下载串口工具软件SecureCRT,设置波特率和COM口,即可通过串口读写。 UART简介:http://blog.csdn.net/GQ1900/article/details/51885259 UART和RS232、RS485的关系:http://blog.csdn.net/chun_1959/article/details/4505
[单片机]
<font color='red'>S3C2440</font><font color='red'>开发</font>板的学习使用(一)----串口的安装
S3C2440—5.UART的使用
一.S3C2440中的UART介绍 UART(universal asynchronous receive transmitter)通用异步收发器,用来收发串行数据,以全双工的形式进行通信,UART使用的电平标准是TTL/CMOS,一帧数据通常包含开始位、数据位、校验位、停止位,UART传输的双方要统一波特率。 S3C2440中有三个UART独立通道,功能类似,下面分块介绍一下UART比较重要的部分。 UART的用途一般有俩种: 1.作为与上位机的通信接口,打印调试信息 2.作为外设模块的驱动接口,连接驱动外设,比如:蓝牙、GPS等 1.1 电平匹配 ARM串口电平为TTL,要根据PC的匹配电平来选择电平转换芯
[单片机]
<font color='red'>S3C2440</font>—5.UART的使用
proteus与keil Cx51的单片机仿真(定时器方式2应用)
用定时器1方式二计数,每计满100次,将P1.0取反。 电路图: c源程序: #include reg51.h sbit P1_0=P1^0; void main() { TMOD=0X61; TL1=0X9C; TH1=0X9C; TR1=1; for( ; ; ) { do {}while(!TF1); P1_0=!P1_0;TF1=0; } }
[单片机]
S3C2416裸机开发系列八_MDK启动代码工程应用实例
笔者前面章节简单介绍了s3c2416启动代码的实现过程,启动代码就是用来处理cpu体系结构中一些底层内容,一个功能强大的启动代码是可以当作bootloader(如uboot)来用的。有了启动代码,用户就可以专注于用c来作其它的功能函数开发了,现今的c编译器效率都很高,很智能,不会逐句翻译用户的c代码,而是总体把握编译。用c开发项目对于代码移植,提高效率都是很有必要的,笔者此处就加入启动代码到c工程,用c开发的过程作一个简单的介绍。 1. 启动代码工程架构 与启动代码相关的代码文件放在System目录文件夹中。目录架构如下: s3c2416.s,启动代码文件,代码执行时的入口,用来初始化系统到一个必要的c环境中,最后进入c函数入口
[单片机]
S3C2416<font color='red'>裸机</font><font color='red'>开发</font>系列八_MDK启动代码工程应用实例
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved