共2条
1/1 1 跳转至页
ARM 问一个以前问过的问题,一个很简单的ARM程序?

问
我想请问DX,用S3C4510B怎样设计一个LED闪烁程序(包括ARM的启动代码,生成可以下载到ARM上的文件的整个过程)。在网上抄了一个程序,不知道是不是完整的。
1、如果芯片商提供了BOOTLOADER,那么是不是就写下面的两个程序就可以实现LED闪烁?
2、还有就是我怎样保证程序运行在用户模式呢?
3、我怎样改变用户模式呢(通过软件,而不是靠异常中断)?
4、这个汇编程序能在下面的一个C程序一起实现吗(只想用一个C程序)?
5、程序怎样可以复制到SRAM中呢?
;**************************************************************
;汇编部分
;**************************************************************
IMPORT Main
AREA Ini,CODE,READONLY
ENTRY
LDR R0, =0x3FF0000
LDR R1, =0xE7FFFF80
STR R1, [R0]
LDR SP, =0x3FE1000 ;这个在BOOTLOADER没有初始化吗?BOOTLOADER
;究竟做了些什么呢?
BL Main
B .
END
//***************************************************************
//C语言程序
//***************************************************************
#define IOPMOD (*(volatile unsigned *)0x03FF5000) //IO port mode register
#define IOPDATA (*(volatile unsigned *)0x03FF5008) //IO port data register
void Delay(unsigned int);
int Main()
{
unsigned long LED;
IOPMOD=0xFFFFFFFF; //将IO口置为输出模式
IOPDATA=0x01;
for(;;){
LED=IOPDATA;
LED=(LED<<1);
IOPDATA=LED;
Delay(10);
if(!(IOPDATA&0x0F))
IOPDATA=0x01;
}
return(0);
}
void Delay(unsigned int x)
{
unsigned int i,j,k;
for(i=0;i<=x;i++)
for(j=0;j<0xff;j++)
for(k=0;k<0xff;k++);
}
答 1: 没有人在乎我们这些小虾吗? 帮帮忙吧????????? 答 2: 看来真的是没有人愿意出手了吗? 答 3: re我愿意出手,但是上面的程序直接烧到flash不会好用吧,我现在也是为ARM的初始化工作过程头痛呢? 答 4: 我出该出手时就出手啊,风风火火闯九洲啊 答 5: 可以看看这里周立功的ARM启动代码中有一个文件startup.s其中对你提出的问题会有点帮助。
1、如果芯片商提供了BOOTLOADER,那么是不是就写下面的两个程序就可以实现LED闪烁?
2、还有就是我怎样保证程序运行在用户模式呢?
3、我怎样改变用户模式呢(通过软件,而不是靠异常中断)?
4、这个汇编程序能在下面的一个C程序一起实现吗(只想用一个C程序)?
5、程序怎样可以复制到SRAM中呢?
;**************************************************************
;汇编部分
;**************************************************************
IMPORT Main
AREA Ini,CODE,READONLY
ENTRY
LDR R0, =0x3FF0000
LDR R1, =0xE7FFFF80
STR R1, [R0]
LDR SP, =0x3FE1000 ;这个在BOOTLOADER没有初始化吗?BOOTLOADER
;究竟做了些什么呢?
BL Main
B .
END
//***************************************************************
//C语言程序
//***************************************************************
#define IOPMOD (*(volatile unsigned *)0x03FF5000) //IO port mode register
#define IOPDATA (*(volatile unsigned *)0x03FF5008) //IO port data register
void Delay(unsigned int);
int Main()
{
unsigned long LED;
IOPMOD=0xFFFFFFFF; //将IO口置为输出模式
IOPDATA=0x01;
for(;;){
LED=IOPDATA;
LED=(LED<<1);
IOPDATA=LED;
Delay(10);
if(!(IOPDATA&0x0F))
IOPDATA=0x01;
}
return(0);
}
void Delay(unsigned int x)
{
unsigned int i,j,k;
for(i=0;i<=x;i++)
for(j=0;j<0xff;j++)
for(k=0;k<0xff;k++);
}
答 1: 没有人在乎我们这些小虾吗? 帮帮忙吧????????? 答 2: 看来真的是没有人愿意出手了吗? 答 3: re我愿意出手,但是上面的程序直接烧到flash不会好用吧,我现在也是为ARM的初始化工作过程头痛呢? 答 4: 我出该出手时就出手啊,风风火火闯九洲啊 答 5: 可以看看这里周立功的ARM启动代码中有一个文件startup.s其中对你提出的问题会有点帮助。
共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
宏定义和const关键字定义被打赏5分 | |
【功率监测与控制系统DIY活动成果贴】DIY功率计与LabVIEW数据采集被打赏100分 | |
【Freertos】任务管理被打赏10分 | |
分享博世的两种不同的喷射系统模式被打赏5分 | |
汽车+开路实验与短路实验被打赏10分 | |
多点式电子控制汽油喷射系统知识分享被打赏10分 | |
分享机械控制式汽油喷射系统被打赏5分 | |
【分享开发笔记,赚取电动螺丝刀】解决基于CH341制作无线模块时芯片发热问题被打赏31分 | |
【分享开发笔记,赚取电动螺丝刀】使用STM32F103ZE主控调试RS485通讯的避坑经验被打赏36分 |