历史上的今天
今天是:2025年02月13日(星期四)
2019年02月13日 | S3C2440 GPIO例子在ISRAM内仿真分析
2019-02-13 来源:eefocus
在mini2440(S3C2440)的板子上运行LED 的程序,使GPB5输出低电平,点亮LED.
将代码在ISRAM 内仿真
1.Led_on.s的完整程序如下
程序代码:
-----------------------------led_on.S----------------------------------------------------
PRESERVE8 ;保持堆栈8字节对齐,符合新的ARM ABI标准
AREA LED,CODE, READONLY
ENTRY
START1
LDR R0,=0x56000010 ;@ R0设为GPBCON寄存器。此寄存器
;@ 用于选择端口B各引脚的功能:
;@ 是输出、是输入、还是其他
MOV R1,#0x00000400
STR R1,[R0] ;@ 设置GPB5为输出口, 位[10:9]=0b01
LDR R0,=0x56000014 ;@ R0设为GPBDAT寄存器。此寄存器
;@ 用于读/写端口B各引脚的数据
MOV R1,#0x00000000 ;@ 此值改为0x00000020,
;@ 可让LED1熄灭
STR R1,[R0] ;@ GPB5输出0,LED1点亮
MAIN_LOOP
B MAIN_LOOP
END
---------------------------------------------------------------------------------------------
2.使用分散加载文件GPIO.sct
;*************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
;LR_IROM1结尾地址不能超过4KB
;因为S3C2440的内部Stepingstone只有4KB,如果超过了4KB ,就必须从NAND搬移代码到SDRAM
;而主程序里并没有搬移的程序,也就是保证装载的程序必须在4KB以内的nand flash里。
;其实还有个隐形的条件。LR_IROM10x00000FE0 最大也只能为0x00000FE0,因为第一条指令的反汇编是
LDR R0,[PC,#0x0014],要保证PC+0X0014是小于0x1000,当设置为0x00000fe0,这条指令的是把
地址0x00000fe8+0x0014=0x00000FFC的内容装载到R0里,仔细看代码,果真如此。
;PC指针是指向下两条指令的位置:(执行A,取指B,译码C),当执行A指令,PC已经指向C指令位置了。
如果设置成0x00000fe4,那么地址是0x00000fec+0x0014=0x1000,已经不小于0x1000,所以不能设置成0x000000FE4。
------------------------------disassembly----------------------------------------------------
6: LDR R0,=0x56000010 ;@ R0设为GPBCON寄存器。此寄存器
7: ;@ 用于选择端口B各引脚的功能:
8: ;@ 是输出、是输入、还是其他
0x00000FE0 E59F0014 LDR R0,[PC,#0x0014]
9: MOV R1,#0x00000400
0x00000FE4 E3A01B01 MOV R1,#0x00000400
10: STR R1,[R0] ;@ 设置GPB5为输出口, 位[10:9]=0b01
0x00000FE8 E5801000 STR R1,[R0]
11: LDR R0,=0x56000014 ;@ R0设为GPBDAT寄存器。此寄存器
12: ;@ 用于读/写端口B各引脚的数据
0x00000FEC E59F000C LDR R0,[PC,#0x000C]
13: MOV R1,#0x00000000 ;@ 此值改为0x00000020,
14: ;@ 可让LED1熄灭
0x00000FF0 E3A01000 MOV R1,#0x00000000
15: STR R1,[R0] ;@ GPB5输出0,LED1点亮
16: MAIN_LOOP
0x00000FF4 E5801000 STR R1,[R0]
17: B MAIN_LOOP
0x00000FF8 EAFFFFFE B 0x00000FF8
0x00000FFC 56000010 ???PL
0x00001000 00000000 ANDEQ R0,R0,R0
-------------------------------------------------------------------
---------------GPIO.sct-----------------------------------------
LR_IROM1 0x00000FE00x04000000 { ; load region size_region
ER_IROM1 0x00000FE0 0x04000000 { ; load address = executionaddress
led_on.o (LED, +First)
;*(InRoot$$Sections)
.ANY (+RO)
}
RW_RAM1 0x30000000 UNINIT 0x04000000 { ; RW data
.ANY (+RW +ZI)
}
}
--------------------------------------------------------------------------------
3.实际操作发现进入调试,程序pc会首先跑到0x00000000,而不是我们装载的地方0x00000FE0,
所以我们必须另写一个调试的启动脚本文件,并载keil 里设置
-------------------------GPIO.ini--------------------------------------------
FUNCvoid Setup(void) {
PC = 0x00000FE0;
}
Setup();
---------------------------------------------------------------------------------
代码都准备好了,剩下的工作是在Keil里设置了
在Option for Target“Target1”,或者点击工具栏的魔法棒
下一篇:S3C2440 FLASH 介绍
史海拾趣
|
Proteus版本7.1,可以在迅雷搜狗里面搜,可以下载。 里面附源程序 [ 本帖最后由 cqzy6666 于 2009-4-10 20:39 编辑 ]… 查看全部问答> |
|
北京三恒星科技公司(www.sanhengxing.com)是一家专门研发DSP/EDA/ARM开发板、仿真器、实验箱,从事单片机硬件和软件应用及教育的企业,承接单片机项目、电子产品设计开发板的开发(包括DSP、ARM、EDA、51单片机编程器,仿真器等系列产品),并整理了 ...… 查看全部问答> |
|
我从网上下的一个2440的CE 6.0的BSP包,基于它想构建一个CE 6.0的系统,但是编译出错: mdk2440a_ARMV4I_Debug\\postproc\\PBUserProjects.reg fmerge for Windows CE (Release) (Built on Apr 5 2006 11:32:16) Error - variable \ ...… 查看全部问答> |
|
1.一定要是主机驱动 2.NXP LPC 24XX 系列以下的,我都看过,是模拟设备的,和我们的任务开发板处理设备数据不符。 留下我的联系方式 msn:lvz89871037@163.com … 查看全部问答> |
|
求助(为什么在vista下我的usb driver一直在IRP_MJ_PNP例程中出不来,直到超时) 在vista下我的usb driver一直在IRP_MJ_PNP例程中出不来,直到超时,但能进行读写, 只是移出设备后,设备管理器没有反应了,要强行重启计算机.我猜应该是PNP配置的时候出了问题,但不知道在vista下usb PNP块有什么特别要求,(在XP上一切正常).不知道那位高 ...… 查看全部问答> |
|
我今天插U盘的时候,忽然说你的磁盘未被格式化,我晕,我昨天还好好的今天为什么变成这样的,麻烦大家给想想办法,来挽回我的1GU盘的数据,我谢谢大家了,再次提醒:我的U盘上有重要东西啊… 查看全部问答> |
|
关于PIC单片机的“休眠”和“唤醒”自己还是不太会用。希望各位大虾能给点指导。现在主要是用PIC12F635单片机。用其中一个引脚GP0做为按键输入,其中一个引脚GP4作为输出。要达到的效果就是:平时都是“休眠”状态,当有按键按下时,单片机立即“唤 ...… 查看全部问答> |
|
需要输出500hz的方波,但是只输出20个周期。 我自己的方案,使用定时器输出500hz的方波,利用系统滴答始终计数40ms,然后关闭定时器。(此方案有个问题,经常会出现,定时器不工作的时候,一直处于高电平。) 在网上看到有用两个定时器,一 ...… 查看全部问答> |




