呃,如果是用 arm-elf-gcc (挂newlib,专为嵌入式设计的C库)来开发ARM裸机程序的话,其实要学的更加多一点 ......
1,Makefile ,其实makefile不大,写个20来行足够,所以目标就是学会怎么将多个文件加入编译,学会设置编译参数就OK
makefile本身只是一个组织的功能,编译程序真正在工作的是gcc
2,学VIM,真的有必要学学,这东西效率是有点高,就是入门学的有点痛苦.....
3,学习3巨头, as gcc ld ,其实本身没什么,重点是那一堆编译参数 ...... 其中连接脚本 ld script 是重点,嵌入式
系统上面整个程序镜像怎么分布都靠ldscript来处理,总之一些很神奇的功能就靠他。如果学PC机linux编程的话,连接脚本
其实是不需要学的,用默认的就OK了,但是嵌入式不行,嵌入式的灵活性实在太大,必须得自己控制。
4,要调试程序的话得学习 GDB,是的,又是打命令 .... 不过有个GUI界面,叫 insight
5,学习C库代码(源代码),这是作为高级学习,理解整个C库函数是怎么实现的,就能做到胸有成竹。
6,学习操作系统的原理,从ucOS入门,注意了,ucos只是基本原理,非常基本的原理,跟linux的设计相差的实在有点远...
接着必须学习 linux0.11版的代码,这个简单点,就1-2万行代码而已,而且基本linux核心思想都包括了,非常有价值。
如果你将上面的都学会了,就会有种“庖丁解牛”的感觉,牛看起来已经不是一只牛,只是一堆肉和骨头,同样的,程序在
你眼中已经不是程序,因为你了解里面所有的运行机理。
开源的意义不单单在于免费,开源的意义在于你能接触到核心代码,能通过读代码理解每个动作
进一步学习,上面的这些工具的源代码 .....cpp gcc as ld ar objdump objcopy gdb .....这不是必要,但是学完之后你
就是一个极品的高手了 ..... 当然了,有能力学这些的都不简单 .....
当然,我们可以不搞的那么极品,用好现成的工具做开发就OK,这个就是各人的兴趣了
阅读(1303) | 评论(3) | 转发(0) |