ba1731
发表于 2008-9-17 08:47:08
额。。LZ人呢。。。我还想继续下去昂。。。
pinocchio
发表于 2009-2-20 00:12:06
不错,值得学习。
xiangyuan_122
发表于 2009-2-20 16:28:39
./emotion/em181.gif丢了好多 附件也还有 不知还能不能恢复
dgdzor
发表于 2009-2-24 16:19:00
顶一下,不错的东东。
dgdzor
发表于 2009-2-24 16:30:59
楼主,期盼你的再次到来,呵呵。
能不能详细解释一下启动文件!!!
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
这是什么语法啊?
ZI区是怎么定义的呢?
glen_cao
发表于 2009-3-7 14:38:56
学习中
yaonui
发表于 2009-3-20 22:17:40
....学习
csformat
发表于 2009-3-24 21:36:44
呵呵,很低幼的说
帮顶
要是2440点灯这么简单多好啊
brightsm
发表于 2009-3-26 10:11:26
mark
eduhf_123
发表于 2009-3-26 10:33:23
MARK
lk546
发表于 2009-3-31 23:25:05
记号先,顶楼主
kbdcj2000
发表于 2009-4-1 00:49:17
mark
kevinavr
发表于 2009-4-2 15:02:38
mark
wuyingsheng
发表于 2009-4-7 17:20:04
终于找到适合新手学习的程序了
wuyingsheng
发表于 2009-4-10 11:44:15
楼主:
可以在config.h和LPC2124.两个头文件中作一些批注吗?在代码后面加一些批注。因为我ARM还没入门,所以看不懂这些ARM的头文件。
wuyingsheng
发表于 2009-4-10 11:46:00
最好 在C语言的代码里加。汇编不懂
wuyingsheng
发表于 2009-4-11 17:20:48
我proteus有正面问题1。 1.8V Vore'(0.00v)is outside specified range(1.65v-1.95v)
2. 3.3v VDD (5.00v)is outside specified range(3v-3.6v)
如何在这里面修改电源电压值??
gggyuan
发表于 2009-4-14 08:40:25
向楼主学习
tb8246
发表于 2009-4-15 20:30:54
支持
xiangyuan_122
发表于 2009-4-16 10:51:56
【104楼】 dgdzor
积分:15
派别:
等级:------
来自:
楼主,期盼你的再次到来,呵呵。
能不能详细解释一下启动文件!!!
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
这是什么语法啊?
ZI区是怎么定义的呢?
---------------------------------------------------------------
IMPORT是个导入的指令 和C语言的include 差不多 ZI是区时初始化为0的存储区域 如果有 跟在RW后面的 详细点的可以看看 杜云海 的 ARM映像文件及执行机理
映象文件及执行机理-杜云海ourdev_436802.pdf(文件大小:2.34M) (原文件名:ARMtLoader.pdf)
【107楼】 csformat
积分:121
派别:
等级:------
来自:
呵呵,很低幼的说
帮顶
要是2440点灯这么简单多好啊
-------------------------------------------------------------------
呵呵 是比较低幼 2440点灯也这就这么简单
你将程序烧进NOR FLASH 选择重NOR启动 一样的 当然 你IO口的端口地址要做相应的改变 还有 编译选项要注意
【116楼】 wuyingsheng
积分:10
派别:
等级:------
来自:
我proteus有正面问题1。 1.8V Vore'(0.00v)is outside specified range(1.65v-1.95v)
2. 3.3v VDD (5.00v)is outside specified range(3v-3.6v)
如何在这里面修改电源电压值??
-------------------------------------------------------------------------------------------------
这个估计是你接的电源有点问题 双击电源上面的数字可以改电源值 正电源要加个+号前面哦
config.h和LPC2124.h 如果看不懂 就多看看书吧./emotion/em030.gif
squallssck
发表于 2009-4-16 13:52:56
太感谢你了。。。
squallssck
发表于 2009-4-16 15:05:14
现在大家用keil的很多,以至于普遍教材上都是ads的情况下入门有点麻烦。。。
squallssck
发表于 2009-4-16 16:00:50
DELAY
MOV R0,#100
0
MOV R1,#1000
1
SUBS R1,R1,#1
BNE %B1
SUBS R0,R0,#1
BNE %B0
MOV PC,LR
这段delay函数里第三行那个0和第四行那个1是什么意思?还有那个%b1,%b0是什么意思。请指教以下,谢谢啦!!
xiangyuan_122
发表于 2009-4-17 09:37:51
【122楼】 squallssck
积分:3
派别:
等级:------
来自:
DELAY
MOV R0,#100
0
MOV R1,#1000
1
SUBS R1,R1,#1
BNE %B1
SUBS R0,R0,#1
BNE %B0
MOV PC,LR
这段delay函数里第三行那个0和第四行那个1是什么意思?还有那个%b1,%b0是什么意思。请指教以下,谢谢啦!!
----------------------------------------------------------------------------------------------------------
局部标号
*主要有两部分组成:开头时一个0~99之间的数字。后面紧跟一个通常表示
该局部变量作用范围的符号。
*局部标号的作用范围通常为当前段,也可用伪操作ROUT来定义局部变量的
作用范围。
语法格式:
N{routname}
*N为0~99之间的数字。
*routname为符号,通常为该变量作用范围的名称(用ROUT伪操作定义的)。
局部变量引用的语法格式如下:
%{F|B}{A|T} N{routname}
其中:
routname为当前作用范围的名称(用ROUT伪操作定义的)。
%表示引用操作。
F指示编译器只向前搜索。
B指示编译器只向后搜索。
A指示编译器搜索宏的所有嵌套层次。
T指示编译器搜索宏的当前层次。
*如果F和B都没有指定,编译器先向前搜索,再向后搜索。
*如果F和T都没有指定,编译器搜索所有从当前层次到宏的最高层次,
比当前层次低的层次不再搜索。
*如果指定了routname,编译器向前搜索最近的ROUT伪操作,若routname
与该ROUT伪操作定义的名称不匹配,编译器报错,汇编失败。
参考 ARM体系结构与编程4.3.1 ourdev_437246.pdf(文件大小:18.12M) (原文件名:ARM体系结构与编程.pdf)
zhenghaifeng
发表于 2009-4-20 16:33:58
楼主:本人也是ARM的爱好者,现在准备学习中,能否加下QQ,到时有问题请教下啊。438982473
xydrj
发表于 2009-4-20 18:49:56
留名贴。强。
gggyuan
发表于 2009-4-21 16:32:34
强人
iiset
发表于 2009-4-22 00:51:45
膜拜中
ou513
发表于 2009-4-23 18:05:38
我是刚学的,我在Keil中都还不会用来编译ARM,我下来了楼主给的例子,就是点灯的,编译出现下面的错误,我不知道是什么原因,楼主能否帮我指点已而啊,谢谢啦!~!~!
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_439130.JPG
(原文件名:01.JPG)
xiangyuan_122
发表于 2009-4-23 20:42:26
keil下点灯的工程文件ourdev_439181.rar(文件大小:78K) (原文件名:keilarm2.rar)
你看看这个 ADS下的程序转到KEIL有些变化
xiangyuan_122
发表于 2009-4-23 20:48:59
还是开始的点灯程序,最最简单的,全汇编的,不需要别的设置,直接拉过来用,编译通过,Proteus仿真,没问题,哈哈,以为好了呢,换C程序的,带个汇编的启动文件,问题来了,开始是error: L6236E: No section matches selector - no section to be FIRST/LAST. 什么原因呢,呵呵,原来是S文件里面的AREA init,CODE,READONLY ;出问题了,由于选了分散加载文件,系统默认的模块是RESET,而这里是init,换掉,问题又来了 Error: L6238E: startup.o(RESET) contains invalid call from '~PRES8' function to 'REQ8' function main. 这个问题原来是(百度了一篇文章)
This RVDS/RVCT linker error is given where a stack alignment conflict is detected in object code. The "ABI for the ARM Architecture" demands that code maintains 8-byte stack alignment at its interfaces. This allows efficient use of
Symbols like '~PRES8' and 'REQ8' are "" of the objects.
This link error typically occurs in two cases:
where assembler code (that does not preserve 8-byte stack alignment) calls compiled C/C++ code (that requires 8-byte stack alignment), and
when attempting to link legacy SDT/ADS objects with RVCT 2.x objects. Legacy SDT/ADS objects that do not have these attributes are treated as '~PRES8', even if they do actually happen to preserve 8-byte alignment.
For example:
This means that there is a function in the object
A similar warning that may be encountered, where the address of an external symbol is being referred to, is:
Solutions
There are two possible approaches to dealing with this issue:
1) If you have access to all your source code and are allowed to rebuild it
In this case you should rebuild all your objects/libraries using the latest version of the compilation tools. Note that if you have any assembler files, you will need to:
i) check that all instructions preserve 8-byte stack alignment, and if necessary, correct them.
e.g. change:
to:
and:
ii) add the
e.g. change:
to:
AREA Init, CODE, READONLY (the
2) If you cannot rebuild all of your source code
If you have any legacy objects/libraries that cannot be rebuilt, either because you do not have the source code, or because the old objects must not be rebuilt (e.g. for qualification/certification reasons), then you must inspect the legacy objects to check whether they preserve 8-byte alignment or not. Use "" to disassemble the object code. C/C++ code compiled with ADS 1.1 or later will normally preserve 8-byte alignment, but assembled code will not.
If your objects do indeed preserve 8-byte alignment, then the linker error If you are linking with legacy objects/libraries then you should also read the information on the option "" in the FAQ entry "Are legacy ADS objects/libraries compatible with RVCT 2.0 ?".
改了这个 又出现新问题了
Error: L6915E: Library reports error: scatter-load file declares no heap or stack regions and __user_initial_stackheap is not defined。由于我的S文件也是用的最简单的,堆栈指针就( LDR SP,=0x40003F00 ; 设置堆栈指针)这样设置了,看来这样行不通了,取消分散加载选项
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_439183.jpg
(原文件名:910008599706778538.jpg)
也就是Use Memory Layout from Target Dialog这个前面的勾去掉,删除Scatter File选项里的文件,就成下面的图了
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_439182.jpg
(原文件名:886646176639981858.jpg)
看下面的Linker control string ,ro-base:0x00000000,entry 0x00000000 rw-base 0x40003000,就是我想要的嘛,编译,通过,哈哈,以为OK了,proteus仿真,问题来了,完全没反应啊,找原因,呵呵,还是和上次ADS的问题一样,需要在Misc controls里面写上 --first startup.o(init) ,只是设置方法不同而已,后面的startup就是S启动文件的名称啦,init是程序开始入口的模块名称,根据自己的换就是了,再编译,通过,仿真,哈哈,没问题啦
ooxxooxx
发表于 2009-4-24 16:11:08
mark
djwan
发表于 2009-4-29 20:33:08
楼主我先膜拜下~能抽空帮我看个程序么?我的这个问题是程序一跑起来就进入外部中断,我设置的是下降沿触发~
#include "LPC21xx.h"
intputchar(int p)
{
if(p=='\n')
{
while(!(U0LSR & 0x20) ) ;
return(U0THR = 0x0d) ;
}
while(!(U0LSR & 0x20));
return ( U0THR = p) ;
}
void putstr(char *p)
{
for(;*p!='\0';p++)
{
putchar(*p);
}
/* while(*p)
putchar(*p++); */
}
void __irq IRQ_Eint1(void)
{
int i,j;
i = VICIRQStatus;
putstr("DJwan\n");
while((EXTINT&0x02)!=0)
{
EXTINT=0x02;
}
VICVectAddr=0x00;
VICVectAddr = 0;
}
int main()
{
PINSEL0 = 0x20000005;
VICIntSelect = 0x0;
EXTMODE = 0x02;
EXTPOLAR = 0x00;
VICVectCntl1 = 0x2f;
VICVectAddr1 = (int)IRQ_Eint1;
U0LCR = 0x83;
U0DLL = 97;
U0LCR = 0x03;
putstr("Hello123");
VICIntEnable = 0x00008000;
/*for(i=0;i<15;i++)
for(j=0;j<1000;j++); */
while(1);
}
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_440984.jpg
Proteus 的电路图 (原文件名:未命名.jpg)
我还没有操作开关,也就是说根本没下降沿就进中断服务程序了~这是为什么啊~
xiangyuan_122
发表于 2009-4-30 11:11:26
【132楼】 djwan
积分:1
派别:
等级:------
来自:
你的程序没什么别的问题,波特率不知道你用的多少,你的U0DLL设置的97,Proteus里的串口终端默认好像是9600吧(这个可以改成对应的就行),我把这个改成0x12了。电路里 你那个和按钮串着接地的电阻100K太大了,100就可以了 不然按下也不会把IO口拉成低电平 触发不了中断
传个工程点击此处下载 ourdev_441066.rar(文件大小:59K) (原文件名:UART0.rar)
djwan
发表于 2009-4-30 22:42:55
谢谢大虾这么快回复~不过咱俩的Protues版本貌似不一样,我的打不开你的dsn文件,另外,我用的是Keil编译的,我把那个电阻改成100欧了,但是还是一上来就进中断了,这个愁人啊~
xiangyuan_122
发表于 2009-5-1 08:31:46
这个不是你程序的问题吧 你的程序除了波特率设置的我改了下以对应串口终端 别的都没改我仿真是正确的
djwan
发表于 2009-5-1 09:17:08
太诡异了~Proteus里我把那个Button改成个switch就好使了~!
另外,大虾,再问个问题,这个波特率我觉得好奇怪,我在Protues里设置LPC2124的Clock是12M,我设置的U0DLL的值是按照别人的例子写的,那里面注释说VPB的频率是15M~对应的串口波特率就是9600,而如果我把LPC2124的频率改成12M,就不能正确执行了~这是为啥啊,Protues里设置的clock和Uart波特率究竟是什么关系呢?
xxf86326
发表于 2009-5-2 12:04:44
开始学习arm了 mark
jiandanqinxin
发表于 2009-5-12 19:12:17
楼主 我想请教一下看过你的程序但是又点不解 为什么你在 Startup.s这个文件中没有用到BL TargetResetInit这条指令
来初始化 硬件
xiangyuan_122
发表于 2009-5-12 20:09:49
......BL TargetResetInit并不是初始化硬件的指令啊 我这个硬件初始化的代码已经包含在了config.h里面 你说的这个只是周立功把硬件初始化的代码封装在这个函数里面的 叫了这个名字 并不是说这个就是初始化硬件的指令
yubing19851008
发表于 2009-5-20 17:08:38
mark
sharpufo
发表于 2009-5-21 09:46:38
从0地址开始放代码其实我觉得不太妥当。就算一般的51之类的单片机都会在0地址后保留中断向量地址。
在0地址放的一般是一条绝对跳转指令,跳转到真正复位程序的开始处。0x04地址后每隔一个字(4字节)存放一个中断向量,这些地址最好是保留给中断向量。不然你使用不了中断功能。
学ARM还是得先搞懂Bootloader,我也正在努力中。搞了块S3C2440的板子,刚刚学会装WINCE和LINUX.
ideality0214
发表于 2009-6-1 12:19:54
标记一下
yangyb
发表于 2009-6-5 20:10:54
记号
abbing
发表于 2009-6-12 13:49:49
请问楼主,最初的那个汇编程序在实际板子上跑过么?我用lpc2103的班子跑,怎么没有反应啊。
仿真是对的,用到实际中需要注意些什么?
xiangyuan_122
发表于 2009-6-12 14:22:44
我没有LPC的板子 但是有在44B0上跑过 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1530698&bbs_page_no=5&bbs_id=1032
googse
发表于 2009-6-12 14:27:10
这个肯定要标记
abbing
发表于 2009-6-12 16:43:53
非常感谢楼主,能否加个qq?以后还要多请教。78306478
chinamanzhong
发表于 2009-6-18 13:00:43
mark
tiger1125
发表于 2009-7-14 13:11:51
mark
SHMI
发表于 2009-8-24 14:12:26
mark
ajin505
发表于 2009-8-24 23:17:05
mark
tgl3721
发表于 2009-8-27 17:09:04
码一下
xinjie1023
发表于 2009-9-24 22:19:23
标记
ggyyll8683
发表于 2009-9-24 22:27:31
学习,最近也在学ARM
0620222
发表于 2009-10-5 20:47:04
mark
hejiangzai
发表于 2009-10-7 21:36:15
mark
skyward
发表于 2009-10-11 11:07:49
标记个先
sange
发表于 2009-10-13 22:39:42
留个记号。。。
sunnydragon
发表于 2009-10-14 20:05:37
Mark~~~
ycbx1569
发表于 2009-10-16 23:35:33
留个记号。。。
253283342
发表于 2009-10-20 21:25:15
MARK!
beipan1982
发表于 2009-10-23 16:11:10
做个记号跟楼主学习
hejianji
发表于 2009-10-26 21:42:50
mark
kevinp
发表于 2009-11-1 16:51:09
mark
dizhonghui
发表于 2009-11-2 21:40:31
mark
YUZH282
发表于 2009-11-3 11:03:41
顶
yyzhong
发表于 2009-11-12 11:18:14
mark
tmylovemcu
发表于 2009-11-17 13:34:21
记号
zyz9074
发表于 2009-11-23 16:57:11
mark
liushui
发表于 2009-11-24 17:30:01
顶
pengyouhao
发表于 2009-11-28 00:41:06
楼主太伟大啦
liubinghui
发表于 2009-12-1 10:24:38
谢谢楼主,学习了!
Yaksa
发表于 2009-12-11 14:34:43
连载啊,我喜欢,mark
xytzc
发表于 2009-12-11 15:04:17
跟着楼主学一学!!
moon0213
发表于 2010-1-22 15:22:29
学习
tota2004
发表于 2010-3-23 12:05:52
谢谢楼主,学习了
KevinLee
发表于 2010-3-23 12:36:53
学习。
iisi
发表于 2010-3-23 13:26:40
mark
lixinpeng1007
发表于 2010-3-23 14:27:49
菜鸟,学习了,最爱ourdev
sanluli
发表于 2010-3-23 16:25:46
刚开始学习啊,看了觉得清晰了很多,谢谢楼主!!
linguolong
发表于 2010-3-24 10:55:49
学习一下~
wilson_jiang
发表于 2010-3-24 21:43:11
楼主继续哦
tonydh
发表于 2010-3-25 08:52:44
学习一下
dreamfy236
发表于 2010-3-27 00:11:58
太好了,楼主,我一直都想找个可以仿真的例子来学习arm谢谢了
dreamfy236
发表于 2010-3-27 00:34:14
楼主真的好强
gzyang
发表于 2010-3-29 16:18:47
有点意思
liouravr
发表于 2010-4-2 16:53:44
xiang 向LZ学习啊
tonydh
发表于 2010-4-3 14:04:44
最近也在学ARM
zxl2431
发表于 2010-4-5 12:31:26
好
gxy508
发表于 2010-4-5 16:21:19
mark
wilson_jiang
发表于 2010-4-7 16:48:06
楼主继续哦,简单易学
hjy3000
发表于 2010-4-16 17:10:14
阿南的ARM入门调试笔记
sange
发表于 2010-4-17 10:39:06
mark
justbegin
发表于 2010-4-18 10:17:02
mark
zhangjinbo
发表于 2010-4-20 18:53:35
顶
shi_869160
发表于 2010-4-23 15:03:27
我也是刚刚开始学,先做个标记
binaimei2007
发表于 2010-4-23 17:00:12
mark
memoedit
发表于 2010-4-24 10:12:03
好办法
xmjulytiger
发表于 2010-4-26 10:24:53
做个记号,学习!