如何开始(上手)一款新芯片的开发工作

嵌入式 TOMORROW 2年前 (2017-06-17) 1484次浏览 1个评论 扫描二维码

本文来自TOMORROW 星辰博客。

原文链接:https://www.tomorrow.wiki/2017/06/17/如何开始(上手)一款新芯片的开发工作/

        本文主要讲述如何开始(上手)一款陌生不熟悉的嵌入式芯片的开发工作。主要分享对象是正在入门嵌入式的朋友(已经有了一两款嵌入式芯片学习经验),而不是嵌入式高手或者完全不懂嵌入式芯片的大白。

        学嵌入式的朋友都知道,有不少经典的嵌入式芯片,在网上可以找到海量的教程,不但有图文教程还有视频教程,有零基础的教程也有高级教程。在这些教程指导下,这些经典的芯片任何人学起来都比较简单。

        然而,在实际的嵌入式开发中,根据实际需求,常常需要用到的不是那些经典的芯片,而是比较定制化的,在网上找不到入门教程的芯片。这样的芯片,它的开发环境,芯片架构,函数库对于初学者来说都是非常陌生的,想要用它来开发也会感到无从下手。接下来本文将分享一下作者的一些个人经验和体会。

        一、首先,不管这款芯片多么的稀罕,少见,都是可以从这款芯片的生产商(官网)那里得到官方的用户指南和芯片手册的。虽然很肯能是英文版的,不过也没关系,有总是好的。通常,在官网上你可以找得到很多份文档,那么多的文档,选择看哪一份先?通常是先看和开发环境相关的用户指南新。

        二、第二步,就是对照着用户指南,一步一步地把开发环境搭建好。

        三、接着,就是要找到例程(通常在找芯片相关文档的时候就可以一起找到),最好是官方的,如果找不到官方的,在网上也是可以找得到其他大神的例程的。这时候就要对照着开发环境的使用教程(官方文档或者网上查找),把例程导入到开发环境之中,把文件包含路径配置好,编译。如果编译出错的话,对于官方例程就对着官方的文档重新操作,检查是哪一步操作漏了错了;对于非官方例程,也可以参考着官方文档操作配置,一般情况是环境没有设置好,而不应该考虑是代码的问题。编译成功后无需运行就可以接着开始下一步了。

        四、这一步就是解读源码,这也是最重要的一步。代码这么多从哪里读起?当然是 main 函数了。

        1.首先从 main 函数开始,根据函数和变量名称还有相关注释找到和时钟配置相关的代码,然后呢,找到芯片手册(芯片本身的技术参考文档),从中找到时钟系统的内容,找到时钟树,代码和文档结合着看,把时钟树的结构大概看懂(时钟源和时钟去向)。为什么要看时钟先呢?因为时钟系统是任何一款芯片最基本的东西,如果时钟系统不能正常工作,整个芯片就不能正常工作。

        2.对时钟系统和相关代码有了基本印象之后就可以开始解读其他的源码了,读其他的源码的时候,应该也应该是从 main 函数开始,按顺序读下去,碰到封装函数的时候要,一层一层的剥开,直到剥到寄存器或者地址的相关代码,在剥的过程中要注意看一下当前的代码的源文件名和路径,并且同时简单浏览一下同一层的其他源码,留个印象。

        五、把一个例程认真的读完之后,对这个芯片的时钟系统,芯片架构,函数封装都有了一个整体的认知。这样就可以愉快的开自己的开发工作了,遇到问题再从文档(或者网上)中找到答案。

        

        以上只是作者个人的一些个人经验,其实就是一种思路,并没有提及细微之处和提供操作实例。在实际学习中遇到问题是可以从网上找到答案解决的,或者是自己凭着对错误提示信息来解决。这种问题解决能力也是一个开发人员必备的,因为无论是初学者,还是资深工程师,在开发过程中也总会碰到一些没见过的问题,这时候就非常考验个人的问题解决能力了。

        希望以上分享能帮到一些正在学习嵌入式的朋友。

本文来自TOMORROW 星辰博客。

原文链接:https://www.tomorrow.wiki/2017/06/17/如何开始(上手)一款新芯片的开发工作/


TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何开始(上手)一款新芯片的开发工作
喜欢 (0)
TOMORROW
关于作者:
一个从石头坑掉到泥坑里的攻城狮。
淡然的黑猫发表我的评论  请填写正确的 个人信息
取消评论
表情 加粗 斜体 签到
(1)个小伙伴在吐槽
  1. No 1 Pharmacy viagra online Provera Dysmenorrhea Cialis Super Active Comprar Cialis Generico En Sevilla
    MatWounny2019-05-31 18:44 回复 Windows 8.1 | Chrome 67.0.3396.79