Re: [请益] 非本科韧体技能树该怎么点

楼主: descent (“雄辩是银,沉默是金”)   2023-02-12 16:13:45
不知道你说的韧体是指什么? 嵌入系有很多种:
* embedded linux
* 使用 rtos, 例如: freertos/vxworks
* bare metal 程式
* 手机
* 其他:
每种都有自己需要修练的功课, 但大概都脱离不了 c 语言,
除了 bare metal 都需要一些 os 相关知识,
也不是 bare metal 不需要 os 相关知识,
而是在 bare metal 要打造 os 机制蛮难的,
选一个 os 来用会比较容易。
虽然 OS 观念大同小异, 但大同之中的小异就足够让人伤透脑筋。
细节很多, 提一些大方向。
embedded linux:
device driver
porting 到新 chip
user mode 应用程式
这 3 个各有其功课要修练, porting 到新 chip 大概是最难的,
一般人也比较没有机会练习到, 大概连第0手资料也没有。
device driver 由于和硬件有关, 会和硬件打交道, 需要使用
一些硬件相关工具, 示波器之类的。也要熟悉 linux device driver
架构。这个要练习比较麻烦, 书籍大概都过时, 需要自己看第0手资料,
也就是自己要看 device driver souce code, 然后想办法把
自己要 porting 的硬件写出来。
user mode 应用程式有很多书籍可以学习, 要看懂他们并不容易,
需要花费不少时间。
尤其是 signal/fork/thread 议题都很难搞懂,
但这只是其中一部分而已。
https://descent-incoming.blogspot.com/2020/03/linuxunix-signal.html
signal 议题可以看看这篇, 知道 signal 有哪些复杂的议题。
rtos 则是看使用那一套, 就需要去学习其中的用法,
使用起来应该会和 linux 有点差异。
有 ice 会比较容易 debug, 一般大概也会需要用 ice。
bare metal 程式也是很难, 需要从开机程式开始撰写,
如果 chip 厂商有给范例或是相关函式库, 也许会简单一些。
但如果 c 基础不够, 可能有 bug 时, 不太容易找到问题。
会需要使用 ice 的经验。
至于课本的算法, 资料结构, 不能说不重要,
但可以从基本先熟悉, 不用着急学比较难的,
例如 queue, linked list, 基本 tree,
avl tree, rbtree 可以先缓点。
另外大概都会需要一些反组译的能力,
所以还需要略懂该 cpu 的组合语言。
在没有 ice 下或是没有开发版, 可以使用 qemu 来练习开发,
例如可以使用 qemu 模拟 raspberry pi 2/3,
因为通常没有 ice 来连接 raspberry pi 2/3,
这样就可以得到 ice 等级的 debugger,
使用 qemu + gdb 来除错, 一开始应该会觉得很痛苦,
但取得这个能力是很重要的。
我甚至用 qemu + gdb 来 debug uefi 程式,
因为都是使用 gdb, 所以只要痛苦过一次,
很多平台都可以用。
※ 引述《ming0071 (ming)》之铭言:
: 背景:北科非电资大四,毕业后也是在北科读硕非电资(不打算再重考),硕班未来是跟自
: 走车相关的,目标大概是远离机构设备做韧体/嵌入式系统(不太确定这两个的详细差别
: ),也不太清楚这个校名科系有没有办法
: 目前有修过资工系的资料结构了,不过是用python,现在在考量是该怎么选择
: 1. 接着继续修算法的课为主,硕班的课有余力再修
: 2. 修硕班的课为主,把学分拿到,有余力再修算法
: 3. 买一块板子来把C再好好的练熟,也用C练著写基础的资料结构,再多了解一些硬件的
: 知识
: 爬了文后目前的理解是 硬件的知识>C、C++ >资结、算法、OS,但是算法、OS也是蛮
: 重要的,不知道该先着重去了解哪一块好?
: 也想请教修算法的课是必要的吗?或者是修作业系统会比算法来的有效益呢?因为爬文
: 后发现提到作业系统的次数其实还比算法多一些,但又怕直接读作业系统会看不太懂。
: 如果要挑选一个先了解的话要选哪个好呢? 又或者其实都一起了解才最优?
: 最后想问是该多练C还是C++好,发现有的人说C,有的人说C++,似乎都各有各的说法
作者: withoutshine (何必帮别人想那么多)   2023-02-12 16:40:00
Design house 的 firmware engineer 还要看懂奇怪的 register 跟帮忙做各种 workaround
作者: nicetw20xx (哇爱台湾)   2023-02-12 17:26:00
谢谢大大分享
作者: ming0071 (ming)   2023-02-12 21:58:00
谢谢分享!
作者: alex70266 (小眼)   2023-02-12 22:26:00
推一下,编制中型以下的公司是差不多很可能前三个都要碰一点。如果你还遇到有些产品即时性需求高会用自己os的公司,那porting还有os概念都是逃不掉的但实际上如果是在公司里面实战,很少让新人自干,也不太可能希望一个新人这些都会XDLinux userspace progrmming的话圣经就是TLPI
作者: viper9709 (阿达)   2023-02-12 23:54:00
推分享
作者: v86861062 (数字人:3)   2023-02-13 08:58:00
推推
作者: e12518166339 (耐纶)   2023-02-13 09:49:00
推推
作者: DrTech (竹科管理处网军研发人员)   2023-02-13 12:27:00
清楚明了,连我这外行都看得懂,而且很有系统化的介绍
作者: timofEE (新人)   2023-02-15 22:56:00
推推
作者: knme (knem)   2023-02-17 11:40:00
推推

Links booklink

Contact Us: admin [ a t ] ucptt.com