作者kjlopin (kjlopin)
看板Soft_Job
标题Re: [请益] 韧体新鲜人请益
时间Wed Dec 20 11:02:39 2017
※ 引述《Severus5566 (正义 从天而降)》之铭言:
: 小弟学士社会新鲜人
: 应徵上一个写韧体的职务
: 但大学只有学过C语言跟玩过一点Arduino
: 说来惭愧 自己不知道怎麽阅读DataSheet
: 然後用韧体来控制硬体(写C语言)
: 有爬文 好像控制暂存器还是记忆体位置?
: 恳请大大给点指点
: 可请写韧体的前辈们给我开些书单 让我工作之余时能自己看
: 目前状态:主管给我一些厂商的范例程式码,可是韧体的函式库里面注解不多
: 所以读起来很吃力,也不确定自己理解的是不是对的
: 就像是去GitHub挖一笔资料来看 但不知道有哪些函式可以应用
: 或是这些函式或变数从哪个H档引用来的
要学韧体,主要就是动手做,如果有连动外部电路,光看程式码没用。
厂商的范例程式码通常都有搭配开发板,如果整体范例不复杂,就先单步执行,
看暂存器值(旗标 Flag)的变化。了解为什麽这些Flag会被改变,这些改变又会
触发什麽事件。
还有了解周边电路在做啥。不要只会低头写程式,适时跟EE和ME交流,
知道他们在做什麽,且让他们知道你会什麽,可以做什麽,什麽需要他们配合,
这样如果出问题,你才有跟他们讨论的筹码。
再来是C语言。
写韧体一定要学会用指标!!!
写韧体一定要学会用指标!!!
写韧体一定要学会用指标!!!
指标(Pointer)不但可以加快程式执行速度,也能节省占存器和记忆体的空间。
尤其到後面写大型专案,更是要节省占存器和记忆体的使用。
最後是Arduino,这套件出来,说不上是好是坏。好处是它简化学习韧体的流程,
套件接一接,简单判断式写一写,API呼叫一下,WOW,会动了耶~
可坏处也就在这里,Arduino把占存器设定简单化,只要呼叫API就可以,但有
人就会以为,暂存器设定只要呼叫API就好,没说这方法不好,我现在也这样用
,但如果你不去了解这API做了啥,如去设定占存器,是否会跟其他API冲突,
这样出问题,你就无法去追根。
书单的话,去各大厂找他们的教育训练资料还比较有用。
最後,为了你和以後接手的人着想,程式码的注解一定要写...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.44.246
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1513738962.A.433.html
1F:推 twinkle38: 为何指标是写"index" instead of "pointer"? 12/20 11:09
2F:→ kjlopin: 我习惯是用index,pointer才是对的,我改一下 12/20 11:29
※ 编辑: kjlopin (218.161.44.246), 12/20/2017 11:31:37
3F:→ hizuki: 我觉得啊其实与其说pointer, MCU更需要reference 12/20 11:36
4F:→ hizuki: 因为多数平台上malloc都是废的,有实现也分不出来多大东西 12/20 11:37
5F:→ kjlopin: 用优化是可以释出很多啦,但通常不会用,因为会有灵异事 12/20 11:47
6F:→ kjlopin: 不知道你所指的reference是指什麽? 12/20 11:48
7F:→ hizuki: c++引入的东西。非ARM的MCU跑去搞memory management真少 12/20 12:23
8F:→ kjlopin: ㄆ,因为不太需要,如果不用到RTOS系统,RAM会用多少 12/20 13:19
9F:→ kjlopin: 大概都知道 12/20 13:19
10F:推 yamakazi: reference是C++才有 但我看过的MCU FW几乎都是C而不是C+ 12/20 13:21
11F:→ yamakazi: + 12/20 13:21
12F:→ hizuki: 我其实只是提概念而已,我早就不在这个领域了 12/20 13:49
13F:推 badyy: "我早就不在这个领域了" XD 12/20 17:05
14F:嘘 cia1099: 虚标准的用嘴巴写code 12/20 17:57
15F:→ odahawk: 哦..."我早就不在这个领域了" XD 12/20 23:53
16F:→ hizuki: 讨论语言设计有什麽好嘘的,你说说看动态记忆体管理的用处 12/21 01:18
17F:推 tommie: mcu只有大多只有单核,某些情况下不要被中断应该都还好 12/22 08:47
18F:→ tommie: 因为大都自己排程XD 12/22 08:49
19F:→ james732: 指标会多透过一层间接取值又多占一个位置耶… 12/22 21:36
20F:→ james732: 在嵌入式系统用粗暴的全域变数反而比较有效率又省空间 12/22 21:36
21F:→ james732: (当然滥用全域变数搞成bug地狱这种问题就不用我说了) 12/22 21:38