共2条
1/1 1 跳转至页
icc 请教改变icc向导文件好的方法?谢谢!
问
答 1:
修改启动文件根据目标MCU的种类和功能,ICCAVR编译器将从下面默认的启动文件中选择一个:
crtAVR.o:非ATmega类芯片默认的启动文件。
crtatmega.o:ATmega类芯片默认的启动文件。
ICCAVR也提供了下面四种常用的启动文件,用户可以在工程选项对话框中(Project->Options->Target->Non Default Startup)中指定一个启动文件(或用户自定义的启动文件),应注意必须指定启动文件的绝对路径,如果没有指出启动文件的路径,则默认启动文件位于工程选项库路径所指定的目录中(默认为c:\icc\lib)。
crtAVRram.o:与crtAVR.o相比,增加了初始化外部SRAM。
crtatmegaram.o:与crtatmega.o相比,增加了初始化外部SRAM。
crtboot.o:与crtAVR.o相比,增加了boot的内容,只有ATmega类的芯片才能选用。
crtboothi.o:与crtboot.o相比,增加了使用ELPM/RAMPZ内容,一般在需要读取大于64K字节存储器中的常数表格或字符串时才用。
上面的非ATMega类芯片的每一个中断入口地址使用一个字(2个字节),而ATMega类的每个中断入口地址使用2个字(4个字节)。
下面简单介绍如何修改和创建一个新的启动文件:
使用ICCAVR的IDE或UlterEdit32打开需要修改的启动文件(crtAVR.s、crtatmega.s或其它文件),对启动文件进行相应的修改并保存,在IDE中选择“File”菜单的“Compile File To->Object”,生成相应的目标文件(crtAVR.o、crtatmega.o或其它的文件名)。要注意,在默认设置的情况下,应在libsrc.AVR文件夹中生成目标文件,再将修改后的目标文件复制到c:\icc\lib文件夹中,并且应在工程选项对话框中指定修改后的启动文件。
答 2: 这是以前的方法,现在不是这样做的了:) 答 3: 现在怎样做? 答 4: 按以前的方法生成的启动OBJ文件,是死循环的。生成启动OBJ文件的方法不同,其余的相同。 答 5: 我刚才试一下,好像生成的启动文件正常。能否说说您的设置? 答 6: 真的是死循环!!!先前忘了在工程选项对话框中指定启动文件。
指定改进后新的启动文件,第一句就是死循环!!
我再试试,等试完后将结果再贴上来。 答 7: 是有问题,我以前问过,没人回答根据ICC提供的文档,链接器会自动将启动文件crtatmega.o 连接到程序之前。编辑修改crtatmega.s 文件后编译到目标文件创建一个新的crtatmega.o再拷贝到库目录。
可我直接编译crtatmega.s后,并替换原有crtatmega.o,
以后程序开始都变成
JMP 0x00000000
接着开始调用INIT.O里的内容,中断入口地址都被占用了
好象是我的crtatmega.s没有任何关于中断的语句,crtAVR.s编译后也是这样,请问有没有哪位老兄遇到过这个问题,如何解决。
这是经ICC编译后的汇编代码
+00000000: 940C0000 JMP 0x00000000
+00000002: BFCD OUT 0x3D,R28
+00000003: BFDE OUT 0x3E,R29 +00000004: 51C0 SUBI R28,0x10
一旦调用新的启动文件,就会出现这种情况,、
未对ICC的源代码做任何修改
答 8: 正版用户可以升级到最新版,File菜单中会多一项。多的一项为:Compiler File... Startup File to Object
而老版本的ICCAVR,要生成正确的启动文件必须用命令行来做,才可以得到正确的启动OBJ文件。 答 9: to:AVR您说得对,的确可以生成正确的启动文件。
不过不一定要正版用户,演示版也一样有这个菜单,一样可以生成启动文件。 答 10: 有没有将现有项目关闭 答 11: 老兄们说的都不错看来俺是吃盗版软件的亏了,不过口袋里没有银子,将就着用吧
crtAVR.o:非ATmega类芯片默认的启动文件。
crtatmega.o:ATmega类芯片默认的启动文件。
ICCAVR也提供了下面四种常用的启动文件,用户可以在工程选项对话框中(Project->Options->Target->Non Default Startup)中指定一个启动文件(或用户自定义的启动文件),应注意必须指定启动文件的绝对路径,如果没有指出启动文件的路径,则默认启动文件位于工程选项库路径所指定的目录中(默认为c:\icc\lib)。
crtAVRram.o:与crtAVR.o相比,增加了初始化外部SRAM。
crtatmegaram.o:与crtatmega.o相比,增加了初始化外部SRAM。
crtboot.o:与crtAVR.o相比,增加了boot的内容,只有ATmega类的芯片才能选用。
crtboothi.o:与crtboot.o相比,增加了使用ELPM/RAMPZ内容,一般在需要读取大于64K字节存储器中的常数表格或字符串时才用。
上面的非ATMega类芯片的每一个中断入口地址使用一个字(2个字节),而ATMega类的每个中断入口地址使用2个字(4个字节)。
下面简单介绍如何修改和创建一个新的启动文件:
使用ICCAVR的IDE或UlterEdit32打开需要修改的启动文件(crtAVR.s、crtatmega.s或其它文件),对启动文件进行相应的修改并保存,在IDE中选择“File”菜单的“Compile File To->Object”,生成相应的目标文件(crtAVR.o、crtatmega.o或其它的文件名)。要注意,在默认设置的情况下,应在libsrc.AVR文件夹中生成目标文件,再将修改后的目标文件复制到c:\icc\lib文件夹中,并且应在工程选项对话框中指定修改后的启动文件。
答 2: 这是以前的方法,现在不是这样做的了:) 答 3: 现在怎样做? 答 4: 按以前的方法生成的启动OBJ文件,是死循环的。生成启动OBJ文件的方法不同,其余的相同。 答 5: 我刚才试一下,好像生成的启动文件正常。能否说说您的设置? 答 6: 真的是死循环!!!先前忘了在工程选项对话框中指定启动文件。
指定改进后新的启动文件,第一句就是死循环!!
我再试试,等试完后将结果再贴上来。 答 7: 是有问题,我以前问过,没人回答根据ICC提供的文档,链接器会自动将启动文件crtatmega.o 连接到程序之前。编辑修改crtatmega.s 文件后编译到目标文件创建一个新的crtatmega.o再拷贝到库目录。
可我直接编译crtatmega.s后,并替换原有crtatmega.o,
以后程序开始都变成
JMP 0x00000000
接着开始调用INIT.O里的内容,中断入口地址都被占用了
好象是我的crtatmega.s没有任何关于中断的语句,crtAVR.s编译后也是这样,请问有没有哪位老兄遇到过这个问题,如何解决。
这是经ICC编译后的汇编代码
+00000000: 940C0000 JMP 0x00000000
+00000002: BFCD OUT 0x3D,R28
+00000003: BFDE OUT 0x3E,R29 +00000004: 51C0 SUBI R28,0x10
一旦调用新的启动文件,就会出现这种情况,、
未对ICC的源代码做任何修改
答 8: 正版用户可以升级到最新版,File菜单中会多一项。多的一项为:Compiler File... Startup File to Object
而老版本的ICCAVR,要生成正确的启动文件必须用命令行来做,才可以得到正确的启动OBJ文件。 答 9: to:AVR您说得对,的确可以生成正确的启动文件。
不过不一定要正版用户,演示版也一样有这个菜单,一样可以生成启动文件。 答 10: 有没有将现有项目关闭 答 11: 老兄们说的都不错看来俺是吃盗版软件的亏了,不过口袋里没有银子,将就着用吧
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |