打印

DEMO版也可以** 就成了正版了

[复制链接]
2168|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
救火车|  楼主 | 2008-11-28 19:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assembling Startup.s...
compiling main.c...
linking...
Program Size: Code=1236 RO-data=16400 RW-data=0 ZI-data=1256  
FromELF: creating hex file...
"IO_2101.axf" - 0 Error(s), 0 Warning(s).

版本 RealView MDK-ARM Version:3.24

我用的是LPC2101 只有8K。这个编译器给我放到16K多的地方。我很郁闷.



相关帖子

沙发
luhuaren| | 2008-11-28 22:15 | 只看该作者

re

不明白为什么你RW段的大小会是0

使用特权

评论回复
板凳
jack.king| | 2008-11-29 10:35 | 只看该作者

LZ的软件那里下啊?

使用特权

评论回复
地板
古道热肠| | 2008-11-29 16:57 | 只看该作者

Keil有评估版软件,在英蓓特网站上下载

最大支持16K代码上限的编译.

使用特权

评论回复
5
avocationA| | 2008-11-29 19:19 | 只看该作者

俺有**文件

使用特权

评论回复
6
avocationA| | 2008-11-29 19:21 | 只看该作者
7
avocationA| | 2008-11-29 19:22 | 只看该作者

呵呵 火车都来ARM版了,

使用特权

评论回复
8
jack.king| | 2008-11-29 20:49 | 只看该作者

avocationA能说明下选c51和arm的区别不?

使用特权

评论回复
9
avocationA| | 2008-11-29 20:59 | 只看该作者

C51注册51的 ARM注册 ARM的

使用特权

评论回复
10
jack.king| | 2008-11-29 21:12 | 只看该作者

网站上面搞不下来什么都填写了

http://arm.embedinfo.com/ApplyDemo_Save.asp

使用特权

评论回复
11
救火车|  楼主 | 2008-11-30 18:20 | 只看该作者

我用的就是KEIL的DEMO版(32K限制)

只把管口置高、置低所以RW段是0
我用的是LPC2101 只有8K。这个编译器给我放到16K多的地方。
谁知道怎么设置?让编译器编到8K以里的地方去。

使用特权

评论回复
12
avocationA| | 2008-11-30 18:41 | 只看该作者

DEMO版也可以** 就成了正版了

使用特权

评论回复
13
救火车|  楼主 | 2008-12-1 12:17 | 只看该作者

我是想问如何让编译器编到8K以里的地方去。

使用特权

评论回复
14
dld2| | 2008-12-1 16:45 | 只看该作者

16k大小的内容怎么也放不到8k里面

是字库吗?

使用特权

评论回复
15
救火车|  楼主 | 2008-12-1 18:09 | 只看该作者

也许是我没说明白。

#include <LPC21xx.h>

#define  LED_PIN   21 
#define  LED_OFF (IO0CLR=(1<<LED_PIN))
#define  LED_ON  (IO0SET=(1<<LED_PIN))


int main (void)

    unsigned long i;    

    IO0DIR  |= (1 << (LED_PIN)); 
    for (i = 0; i < 6000000; i++);    
    while(1)
    {
    LED_ON;
    for (i = 0; i < 6000000; i++);
    LED_OFF;    
    for (i = 0; i < 6000000; i++);
    }
    
}

以上是源程序,以下是Disassembly窗口的内容
   239: Vectors         LDR     PC, Reset_Addr          
0x00000000  E59FF018  LDR       PC,[PC,#0x0018]
   240:                 LDR     PC, Undef_Addr 
0x00000004  E59FF018  LDR       PC,[PC,#0x0018]
   241:                 LDR     PC, SWI_Addr 
0x00000008  E59FF018  LDR       PC,[PC,#0x0018]
   242:                 LDR     PC, PAbt_Addr 
0x0000000C  E59FF018  LDR       PC,[PC,#0x0018]
   243:                 LDR     PC, DAbt_Addr 

。。。。。。。。//中间省略若干行。。。。。。。

    13:     IO0DIR  |= (1 << (LED_PIN));  
0x000041C4  E59F1074  LDR       R1,[PC,#0x0074]
0x000041C8  E5911008  LDR       R1,[R1,#0x0008]
0x000041CC  E3811602  ORR       R1,R1,#0x00200000
0x000041D0  E59F2068  LDR       R2,[PC,#0x0068]
0x000041D4  E5821008  STR       R1,[R2,#0x0008]
    14:     for (i = 0; i < 6000000; i++);     
0x000041D8  E3A00000  MOV       R0,#0x00000000
0x000041DC  EA000000  B         0x000041E4
0x000041E0  E2800001  ADD       R0,R0,#0x00000001
0x000041E4  E59F1058  LDR       R1,[PC,#0x0058]
0x000041E8  E1500001  CMP       R0,R1
0x000041EC  3AFFFFFB  BCC       0x000041E0
    15:     while(1) 
    16:     { 
0x000041F0  EA000011  B         0x0000423C
    17:     LED_ON; 
0x000041F4  E3A01602  MOV       R1,#0x00200000
0x000041F8  E59F2040  LDR       R2,[PC,#0x0040]
0x000041FC  E5821004  STR       R1,[R2,#0x0004]
    18:     for (i = 0; i < 6000000; i++); 
0x00004200  E3A00000  MOV       R0,#0x00000000
0x00004204  EA000000  B         0x0000420C
0x00004208  E2800001  ADD       R0,R0,#0x00000001
0x0000420C  E59F1030  LDR       R1,[PC,#0x0030]
0x00004210  E1500001  CMP       R0,R1
0x00004214  3AFFFFFB  BCC       0x00004208

使用特权

评论回复
16
救火车|  楼主 | 2008-12-1 18:11 | 只看该作者

LPC2101程序最大地址才到0x2000,编译器给我弄到0x000041C4

我想问的就是怎么把程序编译到8K(0x2000)以内去.

使用特权

评论回复
17
dld2| | 2008-12-1 18:51 | 只看该作者

按照连接信息

Program Size: Code=1236 RO-data=16400 RW-data=0 ZI-data=1256

也就是说:
    只读数据有16K。
    ZI变量有1K多。  
这不象是这个程序能得到的结果。

另外,需要看看linker设置。

使用特权

评论回复
18
救火车|  楼主 | 2008-12-2 18:51 | 只看该作者

Linker

使用特权

评论回复
19
救火车|  楼主 | 2008-12-3 11:33 | 只看该作者

原因找到了,原来是DEMO版的限制。

http://www.keil.com/demo/limits.asp

The vector table, reset handler, and library initialization code are linked at the base address. The remaining user code and constants are offset from the base address by 0x4000 (16 KBytes). Programs generated with the Evaluation Version of the tools may not be programmed into single-chip devices with less than 16 KBytes of on-chip ROM/Flash.

使用特权

评论回复
20
古道热肠| | 2008-12-4 10:09 | 只看该作者

哈哈,好象是说评估版前16K不给您用

幸好俺用的那芯片有64K空间,空掉16K也不心疼.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

113

主题

1249

帖子

2

粉丝