→ breeze08: 你的kernel指的是linux kernel還是RTOS? 08/31 23:02
→ breeze08: RTOS原始碼量比較少,花些時間是可以看完整個核心的 08/31 23:12
→ breeze08: 但前提是你對作業系統的運作有基本認識 08/31 23:14
→ breeze08: 否則直接看原始碼會有很高的機率看不懂,挫折感極大 08/31 23:15
→ breeze08: 所以建議是先了解作業系統的概念再來看原始碼 08/31 23:19
→ enthos: github.com/gurugio/lowlevelprogramming-university 08/31 23:19
→ breeze08: 會比較好入手 08/31 23:19
→ breeze08: 如果要快速上手的話,稍微了解一下scheduler跟context 08/31 23:22
→ breeze08: switch的概念,然後就直接看實際範例可能會比較快 08/31 23:22
推 TWkobe: Rtos 算很短易懂了,先看文檔怎麼操作建立task,怎麼註冊 08/31 23:29
→ TWkobe: int, 再來理解kernel實作 08/31 23:29
推 NerVGear: SourceInsight打開啊 08/31 23:46
推 NerVGear: 如果真要看整個流程去看Bare metal是怎麼init就知道了 08/31 23:49
→ NerVGear: 很多東西都是被toolchain預設的東西藏起來 08/31 23:59
→ NerVGear: 像main function怎麼被call到的這個你就可以研究一陣子 08/31 23:59
→ NerVGear: 了 08/31 23:59
推 henry4343: Task的entry point不就是建立這個task時丟進去的func 09/01 00:12
→ henry4343: tion pointer嗎 09/01 00:12
→ henry4343: 如果是os的entry point可以試試找start.S之類的應該會 09/01 00:13
→ henry4343: 有接到c的main 09/01 00:13
推 bena5mail13: 直接從elf反組譯就可以找到第一行程式碼在那裡進入了 09/01 00:21
推 labbat: 懷疑新手能不能拿到os原始碼,一般不是.a檔包一包就動了 09/01 01:56
→ labbat: 能看到的只有介面的交換資料,真正原始碼得找資深同事 09/01 01:57
推 WYchuang: 進入點通常是組合語言 往那邊找找看吧 09/01 09:53
推 ihatesmith: RTOS的話可以參考"野火"的RTOS教學pdf 09/01 10:06
推 alex70266: 先確認你老闆是要你知道怎麼用,還是要你下手去改。如 09/01 11:24
→ alex70266: 果是rtos類的通常是從main找到他註冊task function的地 09/01 11:25
→ alex70266: 方,然後看他怎麼呼叫排程開始 09/01 11:25
推 alex70266: 然後免不了要看一下每一個task怎麼分配stack空間跟管理 09/01 11:30
→ alex70266: ,如果你不用牽涉修改os裡面的排程行為應該先知道你手 09/01 11:30
→ alex70266: 上的版本有什麼功能跟怎麼用就好.. 09/01 11:30
→ alex70266: 如果是要親自去改(比方說porting到另外一個chip)或者 09/01 11:34
→ alex70266: 需要要細看怎麼做排程跟context switch的話,那就要去 09/01 11:34
→ alex70266: 看你手邊的code的中斷向量/exception handler怎麼實作c 09/01 11:34
→ alex70266: ontext switch(通常在handler中間會看到一段搬動stack 09/01 11:34
→ alex70266: 的動作跟還原的動作)通常這邊是用組語或者用c的setjum 09/01 11:34
→ alex70266: p/longjump,怎麼操作就跟你手邊的mcu是什麼版本的arm 09/01 11:34
→ alex70266: 有關聯,排程的話一定有一個演算法決定下次切換到的tas 09/01 11:34
→ alex70266: k是誰,就是看就好 09/01 11:34
推 neo5277: 推推 想寫 09/01 12:16
→ leolarrel: 回原po,只要你基礎沒打好,就沒有"有效率"的方法. 09/01 13:13
推 lplpkkk: 成大資工wiki有freertos教學可以看 09/01 22:25
推 leoloveivy: grep -r無敵 09/02 00:52
推 OnlyRD: 你需要先有kernel的概念,然後分模組看。 09/02 15:01