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

做个记号,学习!
页: 1 [2] 3 4
查看完整版本: ARM从零开始学--点灯^_^