JZ2440学习笔记之第一个裸机程序(Keil-MDK)
CPU:S3C2440, ARM920T, Internal 4KB RAM, Support boot from NAND flash, 128MB for each bank。
JZ2440:Memory接到Bank6,所以内存地址从0x3000,0000(128MBx6)开始。 Nand 256M 8bit,SDRAM 64M 32bit,Nor 2M 16bit。
Keil-MDK5已经不支持ARM9,需要安装额外的pack支持:http://www2.keil.com/mdk5/legacy/


参考::s3c2440裸机开发环境的搭建 ::基于KEIL4开发ARM9(S3C2440)的裸机程序
配置S3C2440.s,这是MDK自动生成的。主要是配置关闭Watchdog,配置MEM,CLK。GPIO的设置我们放到C code里面实现:

设置地址如下:

设置生成文件:


/*
* Leds.c
* Light leds in turn.
*/
// S3C2440 registers define
#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)
// Set GPF4/5/6 as output.
#define GPF4_out (1<<(4*2))
#define GPF5_out (1<<(5*2))
#define GPF6_out (1<<(6*2))
// Delay
void Delay(volatile unsigned long delay)
{ ; delay--); }
int main(void)
{
// Set GPF4/5/6 as output.
GPFCON = GPF4_out|GPF5_out|GPF6_out;
// Pull down will light led, so pull up here.
GPFDAT = 0xFF;
){
Delay();
GPFDAT = 0xEF; // 1110,1111
Delay();
GPFDAT = 0xDF; // 1101,1111
Delay();
GPFDAT = 0xBF; // 1011,1111
}
;
}
通过oflash.exe(安装OpenOCD之后位于bin目录)烧写bin文件到nand flash的地址0位置:https://blog.csdn.net/thisway_diy/article/details/52808038
纯ARM汇编程序点亮LED的程序(所有行都要TAB缩进):
AREA RESET, CODE, READONLY
ARM
LDR R0,=0x56000050 ; GPFCON
MOV R1,#0x00000100 ; bit[9:8]=01, set GPF4 output
STR R1,[R0] ;
LDR R0,=0x56000054 ; GPFDAT ;
MOV R1,#0x00000000 ; pull down GPF
STR R1,[R0] ;
JZ2440学习笔记之第一个裸机程序(Keil-MDK)的更多相关文章
- Linux学习笔记20——第一个多线程程序
一 什么是线程 线程:是一个进程内部的一个控制序列. 二 使用POSIX的注意点 1 为了使用线程函数库,必须定义宏_REENTRANT,通过定义_REENTRANT来告诉编译器我们需要可重入功能,可 ...
- 【FRDM-K64F学习笔记】使用ARM mbed和Keil MDK下载你的第一个程序
FRDM-K64F开发平台采用MK64FN1M0VLL12微控制器.该控制器包含一个带有浮点单元的ARM Cortex-M4内核.其最高工作频率为120MHz,具有256KB的RAM.1MB闪存以及许 ...
- JZ2440学习笔记之通过J-Link单步裸机程序(Keil+J-Link)
我们还是使用JZ2440学习笔记之第一个裸机程序(Keil-MDK)里面的程序,但是把延时拿掉,要不然单步的时候一直在delay里面: int main(void) { // Set GPF4/5/6 ...
- Spring实战第五章学习笔记————构建Spring Web应用程序
Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第一章:向量代数
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第一章:向量代数 学习目标: 学习如何使用几何学和数字描述 Vecto ...
- Stealth视频教程学习笔记(第一章)
Stealth视频教程学习笔记(第一章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...
- 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试
20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- C#.NET学习笔记2---C#.第一个C#程序
C#.NET学习笔记2---C#.第一个C#程序 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com 6.第一个C#程序: ...
随机推荐
- Python Learning - One
## Create a directory each day, and can create files in the directory. 1. variable 2. comments 1) # ...
- css学习_css3伸缩布局 flex布局
1.flex布局 案例一: 案例二: 保证不至于缩放得太小或太大 案例三:flex的值不一定要写成几份,可以写成固定值 案例四: 竖着3等分(父容器按照高度3等分) !!案例 -----用fle ...
- gitIgnore说明
有些内容不需要提交到git服务器上,这时我们可以配置.gitIgnore文件.可参考:https://www.cnblogs.com/kevingrace/p/5690241.html 可能有时候你会 ...
- ETL数据采集方法
1.触发器方式 触发器方式是普遍采取的一种增量抽取机制.该方式是根据抽取要求,在要被抽取的源表上建立插入.修改.删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表 ...
- c# 存储过程取output 值
DataAccess da = new DataAccess(); da.sqlPath = Config.Get("System", "dataCntString&qu ...
- ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
约束字段为自动增长,被约束的字段必须同时被key约束 没有设置成primary key 时,会报错. 加上primary key 则设置成功.
- 一对一关联模型,HAS_ONE
class UserModel extends RelationModel{ protected $_link = array( 'Profile'=> HAS_ONE, //就这一行就行了 ) ...
- 马拉车算法,mannacher查找最长回文子串
作用: 在线性时间内找到一个字符串的最大回文子串 原理: 奇偶变换:为处理字符串方便,现将给定的任意字符串进行处理,使所有可能的奇数/偶数长度的回文子串都转换成了奇数长度. 具体就是在每个字符的两边都 ...
- seafile ubuntu 安装相关
1,各种原因,需要安装 seafile,好,开始安装. 2,参考 https://github.com/haiwen/seafile-server-installer-cn 1,Ubuntu 16.0 ...
- Movavi Video Editor 15 Plus(视频编辑软件) 中文版
Movavi Video Editor 15 Plus Mac版是Movavi系列中的一款视频编辑器,Movavi Video Editor Plus 15破解版提供了全面的视频功能,另外还支持为视频 ...