/ 学习笔记  

Embedded-Hardware

0x00 前言

终于有时间了,整理一下嵌入式硬件的东西,在过去的一个学期里选修了嵌入式课程,然后相对完整的了解了嵌入式开发过程,咱物联网专业比较好的一点就是可以结合软硬件,都可以了解,上学期还做了一些WSN ZigBee,RFID 的实验,当时觉得用不到,没想到,这次实训竟然也做嵌入式开发,也使用了ZigBee模块完成一些功能,感觉所有东西并不是绝对没用,多了解一点总是好的。

0x01 嵌入式入门

关于硬件的东西,之前几乎是从来没有接触,完全不懂什么SOC,也不知道什么MCU,更别说是做开发了,之前唯一对硬件感兴趣的就是树莓派,听说是一块很不错的板子,但由于各种情况,也没有入坑。知道这个学期选了嵌入式,然后因为要完成实验所以入坑了一块EK-TM4C123GXL 开发板,麻雀虽小五脏俱全,这块板子基本能够满足所有嵌入式的基本开发,用来学习还是很不错的。

关于硬件的学习,其实最主要还是要了解硬件资源,熟悉硬件提供的功能,包括GPIO,时钟,中断等,这些都是最基本的,另外就是一些ADC,DAC,时钟频率,高低电平,这些也是要十分熟悉才行。硬件开发有很多东西是记不住的,所以学会查文档很重要的,学习路线可以大致为:看文档了解硬件资源–找案例照葫芦画瓢–网上查阅资料–查开发文档;有些东西不用刻意去记,用的时候去查就行。但构建思路,开发步骤是需要明确的,比如说要使用GPIO时要初始化寄存器,使用模块功能时要考虑时钟的影响,使用中断时要了解如何调用中断处理函数,如果有要连接传感器的话,还要参考传感器的资料,了解其电气特性等。总之,查资料,阅读资料,理解资料在硬件开发中尤为重要。

0x02 实训硬件开发

实训时使用的是CC2530,搭载了ZigBee模块,在开发中都是使用IAR软件,刚好和我们wsn实验ZigBee联系上了,不过我们在wsn实验中我只使用了ZigBee协议栈组网通信,而这次我是利用ZigBee通信来控制硬件功能,而硬件功能实现就是需要嵌入式开发的知识了,刚好把所学内容进行了结合,在嵌入式开发中,不同的硬件资源可能开发就有所不同,但大多数底层逻辑是相同的,所以重点是理解思路。但嵌入式开发仍然有很多烦人的问题,这些Bug出现的原因各种各样,有的是硬件本身故障,有的程序错误,甚至可能的电路连接错误,所以在开发中遇到Bug,排查问题方式方法很关键,我个人认为先从硬件开始检查,最后再检查软件程序,逐层排查是一个相对较好的思路。

当将嵌入式硬件和网络连接起来后,功能开始就更强大了,当然问题出现几率也开始变大了,在物联网传感器硬件开发中,一般使用ZigBee进行硬件组网,网络协议是单独的且复杂的,很多时候我们在开发过程中是不允许修改协议栈的,都已经封装好的,我们需要的是理解代码,了解功能实现思路,然后再做简单的自定义开发,所以读代码也物联网硬件开发需要的能力。

在硬件开发中调试是一个不得不进行的过程,而硬件开发的调试不像软件那么方便,它需要在开发板或是硬件资源中运行,这是一个比较繁琐的过程,构建,编译,烧录,运行,测试输出这是一个最基本的流程,也是一个相对花费时间的过程,所以想要提升开发效率,最好的办法是理解问题本质并细心的修改问题,而不是盲目的测试,企图用巧合来达到成功。

0x03 总结

本来是准备写一篇详细嵌入式硬件开发的文章,把自己使用的TM4C123GXL 开发和CC2530开发时使用的核心技术,关键代码总结一下,后面发现硬件开发这玩意儿,只要理解了解很简单,实现起来也是多变的,没有一个很固定的标准,所以也不太好总结,也没太必要,下一次遇到是查资料就行。这次在完成项目时参考了很多网上的资料,学到很多东西,比如博客园的小蜜蜂老师和csdn的Bruceoxl老师,他们的博文很全面也很详细,给了我很大的帮助,同时也挺佩服他们能够输出那么多优质内容,应该向他们学习。

写到这也要告一段落了,关于硬件嵌入式ZigBee开发,我究竟理解多少,掌握了多少,过段时间后我是否还能记起,这些都是无法量化和衡量的,只希望自己总结的方法能够适用于以后的问题。