这段时间做嵌入式系统课程的单片机实验,极度烦躁,对于电子电路等硬件一窍不通的我来说,一个简单的实验就要来回折腾好多遍,总是出现找不到症结的bug。
- 实验平台:STM32F103C8Tx
- 任务:需要编写一个非常简单的boot loader,只需要完成命令行的peek和poke两条命令
然而我在网上找的教程,没有一篇能完全复制跑通的,最终还得自己从头摸索,从最简单的串口轮询收发开始。
好在今晚终于把轮询跑通了,也能做出个像样的命令行界面了。对于单片机这种硬件相关的东西,我现在最大的感想就是:
千万不要抱有偷懒和侥幸的心理
换句话说,就是不要想着去网上找一篇教程完全不动脑跟着做,或者直接把别人的代码拿来自己的板子上跑,因为就算大家都照着同样的教程做,也会一千个人跑出一千个不同的bugs。
硬件实验需要注意
仔细核对硬件型号、软件版本
- 实验板及外设驱动
- IDE/编译器
- 调试器/烧录器
- 软件包
- PC的操作系统及驱动
只要一个型号或版本不对,可能实验就没法复现。而网上的教程大多都没有详细的开发环境说明,因此绝不可盲目照搬照抄。
此外,由于嵌入式开发涉及的软硬件平台较多,各环节之间的对接也极度依赖硬件型号、软件版本的相对应。
参考权威资料
一般纯软件的东西网上搜一搜教程甚至代码,就可以方便快捷直接用了,但是硬件相关的不行。网上的教程质量参差不齐,再加上绝大部分参考资料都是过时的,或者细节交代不完整的,参考网上的资料不太可能迅速顺利完成实验。
权威的资料一是比较详细和完整,尤其是对开发环境的交代,二是本身不容易有bug。我认为比较好的参考资料有:
- 官方手册(但是硬件的手册缺乏也是一大问题)
- 官方例程(例程补充了手册的不足,也是最直观最方便模仿的)
- 正规出版物(手册和例程可能太抽象,也不够详细,那么买一本书来学也可以)
不要急功近利
在不熟悉的硬件平台做实验不要妄图一步登天,要一点一点来,这跟纯软件学习中“先把工程跑通再慢慢读源码”的观念是冲突的。因为硬件平台中,代码或者配置的某一步有一点点偏差,就会导致意想不到的错误,想要原理懂个大概,代码结构模模糊糊,就跑通程序,是非常难的。
因此要一步步来,每一步用到什么软件平台,用到什么硬件资源,产生了怎样的代码框架,函数间有什么调用关系,都要弄清楚。如果调用了库,或者使用工具自动生成代码,那么遇到无法解决的问题时,读源码就是必须的了。
网友评论