[请益] 1~3年韧体工程师求前辈指点

楼主: zzss2003 (brotherD)   2019-01-22 14:12:27
嗨,今天大家过的好吗。
小弟写FW已经有一两年了,大概了解这个领域的工作内容以及涉及的范围。目前技术能力
卡在一个瓶颈,想上来请教各位大大该如何精进自己。
先说说我已具备的能力。
1.有办法读懂OS手册,并正确使用该API。
花了两个月把uC/OS-III的手册看完一遍,且成功使用semaphore与message queue。有办法
融会贯通手册想要表达的观念以及kernel的实作细节。但仅止于此,就是会用而已。
2.有办法快速上手新的硬件,并写出该硬件的driver。
3.其他抓硬件bug,用示波器...blabla的基本能力就不赘述了
目前欠缺的能力
1.物件导向的观念
我发现我之前写的code在乱写,很像是把一堆东西东凑西凑然后混著用。我希望自己能写
出具有模组化的程式码,且有办法在未来需要扩充的时候不用牵一发而动全身。
上网查,如果在C语言加入物件导向的观念,可以改善这部分(请帮举证?),所以我最近试
着想要用C语言的角度了解、写出物件导向的程式码
但我找不到一本好的入门书,请各位网友建议,谢谢。
2.欠缺读code的能力
当coder把user用不到的资讯全部放在header file,会让user越读越混乱。好的code应该
具有information hiding的特色(我自己说的),
我没办法在一堆混乱的资讯中过滤出有用的资讯,并且了解对方在写什么。看到会让人误
会的变量命名、没有注解的function prototype、没有意义的档名以及没有把每个file分
层的project,我真的必须要一直问对方才有办法了解对方的逻辑。
我知道可以要求对方多加点注解,或者是要求改善他的写法。但我相信我更应该做的是提
升自己的阅读能力,而不是去要求别人。想请问这部分需要如何提升自己呢?
3.程式组织能力
这部分有一点抽象。比如在写一支application,我可能会自定义很多型别(struct),但我
发现我有时候会搞错各个成员(member)该摆放的位置,比如A结构的成员我可能会放到B结
构里去,导致在写struct of struct的时候会卡住。
常常搞混type的命名与identifier的命名。
拿int number做比喻好了,我们很清楚知道number的型别是int,但我有时候就会命名成相
反。该怎么说呢,就是有点还没办法明确地分清楚各个struct要担任的角色,以及type的
定义吗?(我自己也不知道问题出在哪)
这部分我目前不知道该怎么办,感觉搞懂物件导向后有办法改善? 还是看资料结构?(我买
来但都没时间翻)
4.无法明确掌握自己该精进的方向
比如最近看到一个网址: https://www.state-machine.com/
它好像在提倡它的工具比RTOS好用,什么framework还有state-machine的,还加上UML。
我脑袋就出现一堆问号,诸如:
什么是UML?
在RTOS的环境下没办法写state-machine吗?
RTOS跟它的framework不能共存吗?感觉是同一种东西啊!...blablabla
这些问题我也有上网google过,但也只能懂表面,没办法了解他们在干嘛
希望有位好心的大大可以跟我聊一聊Q_Q让我知道我目前在roadmap的哪里,以及该怎么前
进,谢谢!(如果打的很乱请见谅)
作者: kain777 (想妳在0:01分)   2019-01-22 14:21:00
你完全搞错方向= =
作者: ggBird (ggBird)   2019-01-22 14:22:00
c的物件导向去看 linux码, 一堆都是或是jserv有教学影片
作者: trink (逸)   2019-01-22 14:23:00
问题1~3,可以看clean code/clean architecture
作者: owenais   2019-01-22 14:29:00
了解设计模式,及多看code 会有帮助
作者: i386 (i386 cpu)   2019-01-22 14:39:00
第1点怪怪的,uC/OS-III需要自己实做semaphore和message queue? OS本身就有这功能吧
作者: LinuxKernel (Linus Torvalds)   2019-01-22 14:47:00
第一句听到有点烦
作者: leonEEman (EE)   2019-01-22 14:54:00
你可以去问油土伯
作者: i386 (i386 cpu)   2019-01-22 14:54:00
读code能力,除非自己有毅力去找open source的专案慢慢看里面code, 不然就是接一堆帮人擦屁股的解软件bug的工作来做韧体的话,建议你站稳一块domain knowledge,ex:USB, TCP/IP,File system....这是做韧体最核心的价值
作者: loadingN (sarsaparilla)   2019-01-22 15:27:00
吃饱太闲可以去trace Linux kernel啊
作者: su27 (su27)   2019-01-22 15:35:00
1.的话就是指标+strict,就差不多能用了Struct
作者: ahlolha (啊囉哈)   2019-01-22 16:22:00
linux下面不同的subsystems很多都有搭物件导向写法
作者: vul3kuo (Glory)   2019-01-22 16:25:00
C不是物件导向语言 不需要完全用物件导向硬要用C写OO 可读性会很差
作者: csfgsj (切割对半)   2019-01-22 16:39:00
FW code 扯进 OO 就完了
作者: xu3fu6xup6 (轮胎一枚)   2019-01-22 16:44:00
youtube搜寻你所不知道的c语言
作者: Hack (RYeh)   2019-01-22 17:22:00
写FW谈OO.. 是不是搞错重点了
作者: azukikao (对大小金无欲无求....)   2019-01-22 17:28:00
整个linux kernel都很OO 可以去看看如何用C写OO的资讯搭配kernel读 认真看保证会有收获
作者: ggBird (ggBird)   2019-01-22 17:44:00
看你是信 linux kernel 还是信不认识的乡民
作者: i386 (i386 cpu)   2019-01-22 18:23:00
你的问题1,建议你找一段自己写的程式然后把他画成流程图,看看这图是不是很丑,是的话,请重画出好看的图,然后照图的步骤去写code问题1其实跟懂不懂物件导向关系不大
作者: PBDS (风城男子)   2019-01-22 18:42:00
其实韧体就只要做到,讯号进的来,资料出的去,工程师发大财!
作者: join183club (183club)   2019-01-22 23:08:00
可以说说你写过那些driver吗?
作者: since0258741 (回O忆)   2019-01-22 23:11:00
你不是夜市学店那一位吗?电池没做了?
作者: ohohohya (安安你好我草泥马)   2019-01-22 23:21:00
来写BIOS啊你讲的这些来写UEFI bios都有
作者: badyy (nick)   2019-01-23 00:02:00
拿现成BIOS/bootloader精进coding能力喔......XD ! 怎么跟高级长官说的都不太一样XD
作者: future314 (未来π)   2019-01-23 00:12:00
UEFI程式比较简单环境也较单纯 作为学C的OO其实还可以但是应用面很窄 还是直接学kernel或RTOS比较快
作者: badyy (nick)   2019-01-23 01:09:00
真的环境简单XD OS BSOD,chip 莫名reset都算你的XD
作者: chuegou (chuegou)   2019-01-23 02:21:00
1. 21世纪C语言 / OOP in C可以拿来翻2. 资料流和领域知识可以辅助你更快进入状况 就认真问吧4. 目的是要做啥?好维护?那还是选比较多人用的比较好
作者: aoqq12 (阿任)   2019-01-23 03:05:00
其实不是OO不好 是每个人写的OO都不一样写久了就乱七八糟了在C++上已经有IDE帮你统一写法 在C上各自发挥会用OO来写code很好,但是如果四不像的OO简直灾难\Kernel code是一群高手的集散地,也一群人一直在修改公司的写code 光是人力 时程问题就会让你的code产生灾难
作者: GTX9080 (你有Bootloader吗)   2019-01-23 08:52:00
推讯号进的来,资料出的去XD
作者: askacis (ASKA)   2019-01-23 10:03:00
Linux kernel的code漂亮又洗炼,OO精神无所不在,不是mcu等级的code可以比的
作者: brianhsu (坟墓)   2019-01-23 12:22:00
Linux kernel 必看吧!
作者: DSB520 (Yankees and Sox)   2019-01-23 22:23:00
Linux kernel跟OO差的远了 不是模组化就是OO勒
作者: usan (usan)   2019-01-24 20:18:00
不用急,多做几件案子,从经验中学习
作者: jeff12302000 (介甫)   2019-01-28 21:24:00
FW 有芯片容量限制......有时候你还得抛弃高阶语言然后RTOS跟State-machine 根本两码子事情...你那句什么意思我完全看不懂

Links booklink

Contact Us: admin [ a t ] ucptt.com