从零学习嵌入式

从零学习嵌入式

作为一个非科班出身,目前从事嵌入式软件编程的小菜鸟,本博客(专栏)将记录并分享自己从零开始学习嵌入式的经历。包括但不限于技术分享类博文、代码分享类博文、编程感悟类博文以及学习性博文。
也许有人问了,你写的东西有什么价值呢?我会说,有没有价值不知道,但是如果能够记录自己在学习以及工作中针对嵌入式编程所遇到的问题,并且能够给出一个系统的解决方案,我相信对自己还是有用的。
从零学习嵌入式,将从真正的零开始,把自己从一个门外汉到现在的所学所感分享出来,希望有人看,希望能够帮到别人。

一、 跨专业找工作

在学校的时候学的是机械专业,当然大学课程会有一些和程序以及电路相关的,但是,和大多数的同学们一样,大学课程只是为了求个及格,并不了解真正的编程含义,甚至可以说,连编程的门都没有进。后来机缘巧合读了研究生,学的也非编程,但是会用到一些数据处理的程序,有时候的一些小的算法需要自己编写。研究生期间用的是MATLABLabVIEW,相信工科的同学们都知道这两个软件,他有着强大的数据处理和运算能力,但是,不管是语法还是编程思想,MATLAB的编程自己并不感兴趣,因为我在这个平台上做的最多的就是寥寥几行的数据处理语句,大多数的时间停留在做实验和获取实验数据上,所以,不管是本科还是研究生,自己对嵌入式的理解几乎为零,更别提对C语言的理解,仅仅停留在C语言必须要有一个main()作为起始语句这个层面。
研究生毕业找工作时,同学们许多都找了对口的工作,有的去了国企,有的去了航天院,站在人生的十字路口,我也面临着抉择。
机械行业的枯燥让我不想从事相关的工作,国企央企的加班和工作氛围也让我有些抗拒,其实那时候最想去的是外企,虽然自己的英语不能说很好,但是至少六级过了,当时自己幻想的自己还是去一家外企。可是找了几家外企发现自己的能力达不到别人家的要求,最后作罢。
当时给自己定的方向是,第一不找机械相关工作,第二找和编程相关工作,虽然自己当时的编程能力水平可以说不高,但是自己还是一门心思想往这个行业钻。后来机缘巧合投了一家做嵌入式软件开发的公司,面试的时候并没有针对技术做很强的面试,自己竟然顺利通过,而且公司给的待遇也很好,自己纠结了几天,最后欣然签约。毕业去了这家公司,随后便开始了一个门外汉在一家公司一遍学习一边做项目一边受鄙视的苦逼工作生涯。

一句话,跨专业找工作有风险。要能抗压,也要能受鄙视。

二、 C语言初入门

现在我在用Markdown编辑器写博文,如果自己没有从事编程行业,或许自己现在正坐在办公室了加着班,用着Solidworks在画着3D零件图,自己或许永远也不会知道有Markdown这种编辑器可以使用,而且如此方便。

刚工作第一天,老同事扔给我一个项目工程,让我熟悉。花了半天的时间安装开发环境。记得当时同事问我,你电脑上有XX IDE么,我脑袋一蒙,IDE什么意思,但是自己没有好意思问,怕露怯。随口说了一句没有。他说那等会我给你发一个,顺便把工程发给你你先熟悉一下。

做回自己工位,打开百度,第一件事输入”IDE什么意思”。

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。

看到这,心里舒了一口气,原来就是开发程序的软件啊,这把我吓了一跳,要不要这么欺负新人?

可见自己当时对于嵌入式的理解,完全为零。这之后,每次听到同事们说起一个新的名词,自己都会默默地记下来,然后找个时间去问度娘。多亏了百度,让我慢慢的明白了什么是内存泄漏、仲裁机制、上拉电阻、开漏输出、大小端存储、堆、栈等等等等的专有名词,自己也慢慢的有信心和同事们讨论代码及其运行机理。这是后话。

打开项目工程的第一件事,自己便是浏览代码,天哪,这是天书啊!这都是啥意思?

花了半个小时,找到了main(),可是为啥别的文件中也有个main()函数,不是说一个工程中只能有一个main()的么?

看到 (void*)这种代码,自己便开始怀疑自己大学学没学过C语言。
看到 recive->buf这种代码,自己开始怀疑自己选择嵌入式有没有错。
看到#pargam location = 0x00001000这种代码,自己开始怀疑人生。

对着电脑工程,苦逼学习了半个月,期间不停地问同事,指针什么意思,环形缓冲啥意思。刚开始同事很耐心的讲解,后来同事不耐烦了,自己去去查吧!

好,查就查,谁怕谁。

一边学习项目背景,一边学习C语言知识,一边查资料。

就这样,对嵌入式一窍不懂的我,跌跌撞撞奔着嵌入式的门走了过去,虽然已经现在也不敢说自己已经入门,但是自己感觉已经比之前更有信心,面对不懂得东西也更加从容。

对了,从毕业到现在,跌跌撞撞一年了。所以自己打算开通CSDN的博客,记录自己学习嵌入式的经历。

算起来,从刚开始到现在,自己接触到的项目中,第一个是做纯应用程序的编写,实际上一小块代码,并不难,难得是项目背景的原理。对我影响最大的是后来学习并维护一款国产8位单片机的过程,以及在该单片机上编写BootLoader用于升级的经历,因为感觉正是这个过程,使自己真正触碰到了嵌入式的门槛,也正是因为有了这个经历,让我在后来的切换ARM 内核编写BootLoader时特别有信心,而且事实证明,自己有信心是正确的。

从零学习嵌入式这个专栏,自己打算根据自己这一年的项目经历以及学习到的知识,从以下几个方面慢慢讲起。当然,自己毕竟经验和知识有限,所写内容不可避免出现纰漏,还望发现的童鞋积极指正,我们一起进步。

从零学习嵌入式(目录)

本专栏主要包括以下知识点。

  • 结构体与联合体
  • 指针与内存地址
    -函数指针及其应用
    -指针传递
  • 预编译及相关代码
    -#Pargam 语句
    -#define 语句
  • 定时器
  • 寄存器
  • 堆栈
    -芯片内存分配机制
    -堆区和栈区
  • 单片机组成原理
    -CPU
    -外设
    -串口通信
    -645协议
    -485总线
  • Bootloader升级原理
  • BootLoader代码段分享

暂时想到这么多,以后会根据自己遇到的实际情况追加新的内容。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值