做嵌入式软件的一般用什么软件写和看代码比较好?
我认为应该学习一下51和STM32,但是仅限于学习它的原理并了解它的应用,不用用来做太复杂的东西。利用51和STM32巩固自己的C基础、数据结构、计算机组成原理等基础。
阶段一
《The C Programming Language》【美】Brian W. Kernighan David M. Rithie;
《UNIX 环境高级编程》(没必要一口气看完当字典使也是不错的);
《UNIX 网络编程》(同上);
以上两本书重点:进程,线程,IPC以及基于socket的网络编程章节是重点,要掌握基于select/poll/epoll的高并发服务器模型;
看完这两本之后写一些小软件玩玩,天气预报,计算器(逆波兰),网络聊天室之类的,此外看一些开源库,推荐libevent(对于初学者来说难度很大,不过这不是不看的理由),以此强化C语言,加深对网络编程和线程相关概念的理解及应用。
阶段二
此时,题主可以买个STM32的开发板玩玩(基于库开发和寄存器开发都要会),一定要熟读datasheet以及STM32参考手册,这期间一定要将常见的接口与总线搞明白了,如:串口,IIC,SPI,CAN,以太网接口,SD和SDIO等,然后题主可以用其做一些小玩意,如:体温计,平衡车,小四轴等等;
一定要多动手,多练,多动手,多练,多读芯片datasheet,别做伸手党……
然后嵌一个uCOS或者FreeRTOS玩玩,了解一下这些轻量级操作系统的原理,网上有一些电子书籍,题主可以自行查找,推荐邵贝贝的书。
阶段三
这一阶段题主需要买一个ARM开发板了,可以选择ARM+FPGA或者ARM+DSP,题主可以自行上网了解一下具体买哪一个
这时需要的书籍如下:
《鸟哥的linux私房菜》(linux平台下的各种命令一定要熟烂于心啊);
《Linux与Unix Shell编程指南》(此书已绝版可以买二手,影印或者下电子版);
《ARM体系结构与编程》(杜春雷著,一定要配合UBOOT看);
《Linux设备驱动开发》(LDD);
《Linux设备驱动开发详解》(宋宝华);
《深入理解Linux内核》;
《Linux内核源代码情景分析》(毛德操著);
还有一些只要是编程就需要掌握的理论基础:
《算法导论》;
《数据结构与算法分析》;
《深入理解计算机系统》;
《操作系统:精髓与设计原理》;
《编译原理》;
为了扎实C语言还有如下不错的书:
《C和指针》;
《高质量C++/C编程