Re: [請益] 韌體初學者
其實從Arduino開始玩也有很多樂趣,初始成本也低 (20€/35€)。
一張Uno(AVR)或是Due(ARM M3),加上電腦和一條USB線就可以開工了。
開發工具容易安裝,不需要什麼設定,ATMEL (處理器廠商)的文件也算齊全。
Arduino開發軟體內建的範例程式 (如那個九九乘法表) 簡單易了解。
在初期可以多花點時間在程式技巧上,不用煩心那些開機程序。
隨意寫寫小程式,也寫些電腦端的程式,透過USB 序列埠讓電腦和Arduino互動。
(比如說寫個AES或是SHA,讓慢到不行的AVR把電腦傳過去的資料加密或算雜湊)
然後因為總總原因 (處理器就是慢、c/c++編譯器很鳥),想把程式寫快一點,
這時可以去電腦的暫存目錄把執行檔elf找出來,反編譯成組合語言,
看看自己或編譯器做了什麼蠢事,能不能在c語言做些最佳化。
還是不夠快/小,就試試把程式的一小段改成in-line asm。
一開始在c程式內夾組合語言會有點痛苦,語法不直覺,但網路上有不少範例。
然後就是越玩越大,變成整個程式只有頭尾是c,第三行開始就是組合語言,
(naked function) 這時就要了解AVR或是ARM的函式呼叫規則 (ABI)。
ps, Arduino的開發環境大概只能玩到這樣了。
然後有個分支任務。Arduino內建了一些函式,控制處理器每根針角的輸出入。
透過那個函式,最基本就是能控制板子上的那個LED燈。
試著去了解那些程式怎麼寫的,印象七八年前的版本非常沒效率,又肥又慢。
試著用c語言,自己去填記憶體 (SFR) 控制那些針角。順便讀一讀處理器的手冊。
玩到這邊,還是只需要電腦/USB/Arduino,可能加買幾棵LED。
之後還有興趣,可以考慮買條除錯線。ATMEL的除錯線不貴,
但我印象開發環境是綁定visual studio的介面,... orz ...
有了除錯線就能單步執行、修改暫存器和記憶體內容 ...
不要太依賴除錯線,除錯線是用來對付硬體bug的,軟體bug請用自己的大腦 ;p
ps, Arduino的開發環境的軟體,完全沒有除錯功能 :)
到這邊就有最基本的能力,之後可以考慮升級玩有作業系統的平台。
或是像Zynq這類的FPGA,不過這又是另外一條很長的路了。
※ 引述《lihgong ( )》之銘言:
: 如果還在學校,就買以下東西開始玩,看看受不受得了
: 1. STM32F103最小系統
: 2. J-Link EDU(到mouser買最便宜)
: ps. 或是買STM的Nucleo板,上面有MCU和開發工具(STLINK可刷J-Link)
: 正版開發工具,報價不到1000元更便宜
: 這樣子一套可以在3000塊以內(更便宜當然有),試著讓板子上的LED一閃一閃亮晶晶
: 當然,這裡不要用Arduino,用STM32CUBE MX產生開機程式,然後操作他的GPIO點亮LED
: 試著讀一下data sheet,追一下這段程式怎麼變成操作register,用用示波器,看看信號
: 如果第一步三千塊花下去,覺得索然無味,那就這個領域你可能不適合而已
: 附帶一提,示波器也不貴,淘寶一台4ch約莫台幣10000就有了
: 接下來就看想玩點什麼,MCU外面的書很多,很容易找到有趣的題目
: 有些經驗了,建議可以把作業系統掛上去,比如FreeRTOS,用起來又會是另一種感覺
: 實際上路了,缺什麼再去學,其實走這行就是得不斷學習,天天都覺得自己什麼都不會
: ※ 引述《SmallBeeWayn (喵喵叫的蜜蜂貓)》之銘言:
: : ※ 引述《t7365443 (U彥)》之銘言:
: : : 各位版友好
: : : 目前就讀國立科大碩(電機)
: : : 大學是資工系的
: : : 本人一直想走韌體工程師這方面
: : : 但是實驗室又是做網路相關的
: : : 想找個網路設備的韌體的領域
: : : 想知道如果要走韌體這方面需要補足什麼地方
: : : 有什麼比較重要的地方 可以自己自學或是去修大學部的課
: : : 大學是稍微有玩過arduino開發版
: : : 但尤其是硬體這方面 (電子 電路 嵌入式系統等等)以前資工教的比較少
: : : 謝謝各位的意見
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 80.123.24.139 (奧地利)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1581885770.A.85C.html
留言