AVR单片机GCC编程
make
make load
T这样就编译和载入软件了.我并不想详细描述所有的命令. 你可以打开那个 Makefile 查看,它们都是一样的.我自己都不能把它们完全记下来.我只是知道我只需要做"make load".如果你想写不同的程序你只要把Makefile中所有出现avrledtest的地方用你的程序名字替换就行了.
一些有趣的binutils
比实际编译过程更有趣的是一些小工具软件.avr-objdump -h avrledtest.out
S显示程序的不同段的大小..text是调入falsh EEPROM的指令代码,.data是象static char str[]="hello";
这类的初始化数据..bss是非初始化全局数据,在我们这个里面全是零..eeprom用于存储倒eeprom的变量,我从没有用过这个..stab和.stabstr是调试信息,不会载入AVR的.
avrledtest.out: file format elf32-avrSections:Idx Name Size VMA LMA File off Algn 0 .text 0000008c 00000000 00000000 00000094 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000000 00800060 0000008c 00000120 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000000 00800060 0000008c 00000120 2**0 ALLOC 3 .eeprom 00000000 00810000 00810000 00000120 2**0 CONTENTS 4 .stab 00000750 00000000 00000000 00000120 2**2 CONTENTS, READONLY, DEBUGGING 5 .stabstr 000005f4 00000000 00000000 00000870 2**0 CONTENTS, READONLY, DEBUGGING你也可以用avr-size命令得到一个更精简的形式:
avr-size avrledtest.out
text data bss dec hex filename 140 0 0 140 8c avrledtest.out在AVR上工作你必须特别注意.text+data+bss不超过4K,data+bss+stack(你可以不考虑stack的大小,它取决于有多少嵌套调用)不能超过128字节.
下面这个命令也非常有意思:
avr-objdump -S avrledtest.out
它会生成你的代码的汇编列表.结论
现在你已经了解到足以开始我们的工程的AVR硬件和GCC方面的知识.LinuxFocus将来会有更多更复杂的,更有趣的关于硬件这方面的文章.参考文献
- Libc and uisp: /www.amelek.gda.pl/avr/libc/
- GCC and binutils: ftp://gatekeeper.dec.com/pub/GNU/
- avrfreaks (watch out some people on that site are still using windows !?): http://www.avrfreaks.net/
- the tavrasm assembler for Linux: www.tavrasm.org
- AVR webring: R.webring.com/hub?ring=avr&list
- Pre-compiled versions of gcc: combio.de/avr/
- All software and documents mentioned in this article
- The atmel website: www.atmel.com/
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论