C_and_CPP 板


LINE

我觉得embedded看规模与需求,大概会有几个层次 1.没有任何os,可能只有一个 while (1) 循序处理与一些中断处理 学生时代会写的8051点亮LED之类的程式就是这种 我现在的工作也是这样的 主要就是在RAM与ROM都极少的情况下 与外部的Hardware做一些不会非常复杂非常即时的交互 在这个架构下,最主要的挑战应该是怎麽在有限资源达到需求 并且在没有os帮忙调度的情况下,各功能要怎麽协调 另外就是要怎麽透过register与晶片的硬体做互动 但这个部份每个系列的晶片都不同 而且厂商通常会提供sample code使用 但不幸sample code不符合需求或有bug时 就会需要研究相关的datasheet 因为没有OS或任何的软体框架,基本上Code也很好写,爱怎麽写就怎麽写 直接在逻辑里存取硬体暂存器也没人会阻止你 但如果有需要跨晶片的需求,就要考虑适当的切分软硬体逻辑 2.有一个简单的multi-task调度,或者使用一个RTOS Google Chomebook所使用的EC (Embedded Controller) 就是这样的 https://chromium.googlesource.com/chromiumos/platform/ec/ 它虽然没有使用现有的RTOS,但它也实作了相关的context switch机制 这种情况下就是要在现有的软体架构下再去新增或修改 可能是与硬体有关,或者与硬体无关的部份,框架会切得比较明确 如果是硬体有关,就要去研读硬体的datasheet,并实作相关的API 如果是硬体无关,就要看软体的逻辑怎麽做,并呼叫已有的API 跟1比起来,这种就是会用在比较复杂、即时、需要类似multi-task的情况 第一个难点会是要先弄懂它所使用的软体框架现有的规则与限制 然後就看你是要写偏向软体或者偏向硬体,或者一个全新贯穿软硬体的东西 3.直接以Linux Kernel为基底 这个写起来就会跟你拿台PC灌Linux写程式的感觉有点像了 但如果使用的embedded硬体是现有Linux kernel不支援的话 就要自己看datasheet然後去实作相关的Kernel module 这个难点就是跟Linux相关的部份,要怎麽跟核心正确的互动等等 如果是写应用端的话,跟PC写的感觉应该会非常像了 我觉得embedded system非常看「应用」 同样是点个红绿灯,你可以写个 while (1) 加上 sleep 就做到 你也可以弄个linux kernel然後从gpio driver写到application (有人会这样干吗) 但我觉得有几个基本功应该都躲不掉 1.关於C语言本身,特别是指标的部份,不管哪种一定都会用 2.关於OS的基本概念,除了while (1) 型的以外都会很吃重 3.晶片硬体的基本概念,譬如register怎麽写,你要把一根pin拉high要怎麽拉等等 4.中断(interrupt)流程的概念与处理,这绝对是会用到的(感谢板友建议) 一般来说,不管是哪种架构,操作硬体的程式码应该都会有C语言的API 如果不幸没有,自己写的话,读写暂存器大概也不一定要用到组合语言 除非是非常需要最佳化,或者一些C语言真的翻不出来的东西,才要用组语 因此我觉得学习好C语言会是非常重要的 如果是想练功的话,就可以买个开发板回来玩玩看 最简单的LED、按键,到复杂的点亮萤幕、处理camera,能玩的东西非常多 基本概念有了,就算换个晶片,细节不同,大致上的道理还是互通的 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.71.212.152 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1600856804.A.056.html
1F:推 s4300026: 赞 09/23 18:49
2F:推 rain45: 简单明了推 09/23 21:06
3F:推 Dinowchang: 写得很棒,建议基本功再加一个中断 09/23 21:26
感谢建议,已加上 ※ 编辑: james732 (111.71.212.152 台湾), 09/23/2020 22:11:42
4F:→ petercoin: GPIO完了之後就是I2C,SPI,UART等等的使用了吧 09/24 08:46
5F:→ TuringNTU: 真的谢谢大大优秀的回文 09/24 14:52
6F:推 EdisonX: 写51和 driver porting 或改kernel 深深认知是不同领域 09/27 17:33







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP