紀客老白【每日答疑】(1)目前的狀況(2)現(xiàn)在說下自己的不足(3)期待解決的問題

和白老師詳細介紹下我的情況:
(1)目前的狀況:
A、畢業(yè)四年,從事低壓電器行業(yè)研發(fā)工作,獨立完成項目五個(軟硬件都是獨立開發(fā)。
B、技能水平:通過業(yè)余時間學習和項目的積累,自己和公司里十幾年的工程師比差的是行業(yè)經(jīng)驗,理論知識和設計能力已經(jīng)強于公司其他工程師,就拿羅氏線圈來說,身邊普通工程師通過測試得出不同頻率下線圈的一次測和二次測變比不同,并不知道原理。而我通過建模,推導傳遞函數(shù),根據(jù)零極點分析得到幅頻,相頻特性曲線,分析得到不同頻率下增益不同。我對自己的期許是當一個小公司的總工,所以學習的范圍也比較廣,硬件有開關電源(反激和以及其他拓撲的dcdc)、運放電路設計及運放穩(wěn)定性分析,以我目前知識層面上來看硬件設計是電源、采樣、執(zhí)行器件三大塊。軟件方面會基于M0+和M3的多款MCU的固件開發(fā),但都是基于裸機開發(fā),不涉及操作系統(tǒng)。最近泛在電力物聯(lián)網(wǎng)興起,因此簡單學習了物聯(lián)網(wǎng),能用docker指令部署EMQ和nodered,以emq為后端,nodered為前端,實現(xiàn)設備端和用戶端之間的通信。后期有精力會去學一下開發(fā)手機APP。
(2)現(xiàn)在說下自己的不足:
A、第一,經(jīng)常性會忘記學過的東西,比如反激開關電源的變壓器計算,自己也通過計算做了個實戰(zhàn)項目,過了幾個月沒做了又忘了怎么計算了。
B、不會RTOS。
(3)期待解決的問題:
A、現(xiàn)在在的公司工資比較低,工資最高的同事也才11k。因此我想跳槽,下一份工作的薪資要求多少是合適的,坐標杭州。
B、低壓電器行業(yè)待久了,對其它行業(yè)的未知使我害怕,不知道以現(xiàn)在的水平能不能勝任,需要多久才能適應其它行業(yè)。另外招聘信息很多是要求會rtos的,需要學習一下嗎?
C、希望白老師能給我指點下接下來的學習路線。
白紀龍老師解答如下:
(1)首先作為公司的總工必須縱向的技術能力和橫向的個人軟性能力一定要兼顧,而且去小公司的話,這個時候對于你個人的軟性能力要求更高,溝通,協(xié)調,資源分配,項目管理,技術管控各個方面非常考驗人,所以除了技術能力以外,我覺得你橫向的軟性能力也要注意培養(yǎng)。
(2)作為公司的總工,我們構建的知識體系更多的要基于產(chǎn)品,所以我們要構建自己的能力需要很多方面,軟件,硬件,結構,工藝,測試,成本,EMC等各個方面我們都需要有所了解,最好從市場調研開始到產(chǎn)品停產(chǎn)的整個產(chǎn)品周期跟過幾個產(chǎn)品,這樣你構建起來才是實用可靠的。
(3)經(jīng)常忘記,其實是我們沒有構建自己的知識體系出來或者說筆記做的不夠勤快,最好是可以用思維導圖等把自己的知識體系實時梳理,然后打印出來作為參考工具,以后要用的時候立馬拿出來,直接使用,而且在實踐的過程中實時更新自己的知識體系。
(4)至于說跨行業(yè),首先你得技術綜合能力已經(jīng)初具規(guī)模了,這個時候更多的你應該關注你想要跨的行業(yè)的產(chǎn)品的架構是怎么樣的,然后現(xiàn)在開始儲備這一塊的知識,比如說目前很多稍微比較高精尖的工業(yè)或者醫(yī)療領域,其如果是大型設備的話,那么他們產(chǎn)品的整個架構首先其交互的方式已經(jīng)逐漸淘汰通過PC來進行交互,而是直接在產(chǎn)品表面嵌入一個比較大的屏幕,如LVDS的顯示器等。然后整個產(chǎn)品如果比較復雜的話,其一般都是通過CAN bus來鏈接不同的模塊,一般這種情況下我們都會有一個主控板,主控板的處理器都比較復雜,之前都是A8之類的,然后其他輔助模塊如運動模塊,其MCU選型一般是CortexM3之類的,主控板做處理計算交互等功能,而其他子模塊負責專門的功能,如信號處理模塊則專職信號處理,運動模塊專職運動,溫度模塊專職溫度,類似這樣,而所有的子模塊都通過can bus鏈接到主控板。
(5)RTOS還是很有必要學習一下的,就像我前面所說的稍微復雜點的系統(tǒng),一般都是cna bus.架構,基本上主控板都是基于linux居多,我個人的學習經(jīng)歷,如果你想快速入門linux整個RTOS還是很有必要好好的學習的,當然兩種操作系統(tǒng)的架構是非常不同的,一個是實時的一個是通用的非實時的操作系統(tǒng),但是軟件架構,操作系統(tǒng)對于任務的調度等等其思想還是非常類似的。
(6)針對于RTOS或者linux的學習我個人推薦的學習路線是:首先是標準庫的軟件架構該軟件架構非常簡單,不會指針跳來跳去,所以軟件的復雜度非常低,但是她告訴了我們如何將幾十個甚至上百個程序文檔組合起來;然后是HAL庫的軟件架構,他更進一步的我們移植的難度,其關鍵是他確實做到了對底層的的屏蔽,比如說你從F4移植到F1你可能只要改變全局宏定義,啟動文件,以及IO口宏定義等等,非??旖?,但是如果你用標準庫的話你需要改變的東西了非常多,出了剛才的需要改動的以外,還有很多初始化函數(shù),功能函數(shù)可能也需要改,移植的工作量會非常大。其實HAL庫雖然有些初始化配置函數(shù)會有一些冗余,但是瑕不掩瑜,他想做的事情給我們尤其是不同平臺的移植帶來了非常大的移植,其風格上也是逐漸像操作系統(tǒng)上靠攏,比如說其最大的特色是多了所謂的句柄,其實就是一個結構體指針,而指向的結構體其又包含了整個外設所有相關的內容,所以這個結構體里面其成員變量有的是結構體,有的是函數(shù)指針,如此就使得其變得非常復雜,但是如果你搞懂了其中的機制然后再去學習RTOS以及LINUX你會非常有感覺,因為你已經(jīng)熟悉了這個風格;其次,在操作系統(tǒng)里面,指針指來指去的現(xiàn)象非常多,你很容易搞混淆,所以這種風格我們必須熟悉,也必須搞明白,等你完全搞明白了以后你反而覺得哇C語言原來這么用,你突然覺得果然高人就是不一樣,如此登峰造極的去使用一門編程語言,然后你也會學到很多。
(7)我們首先還是把RTOS學習路線給大家明確一下:標準庫(學會如何組織多個文本)-->HAL庫(學會如何用一個結構體去表達某個外設的所有功能)-->RTOS(學會多任務在實時比較精簡的操作系統(tǒng)里面是如何被調度的)-->Linux(學會任務在一個非常大型的且通用的操作系統(tǒng)里面其如何調度任務等等)
(8)對于linux這種比較通用的非實時的操作系統(tǒng)其其相較于試試操作系統(tǒng),其有個最大的機制其實要在操作系統(tǒng)真正開始被調度進來需要做很多準備工作,所以一般都是首先通過uboot做好相應的準備機制,然后才把操作系統(tǒng)調度進來。
(9)而uboot為操作系統(tǒng)調度進來之前所做的準備工作或者所做的努力其必須想辦法傳遞給包操作系統(tǒng),重點是如何傳遞,比較古老的linux版本,其一般是通過ATAG參數(shù)來傳遞的,而目前比較新的版本都是通過設備樹來進行傳遞,不管那種傳遞當時,其基本是都是通過指針一頓操作。如果大家能在HAL首先做了學習,然后再進入linux的學習,你會非常簡單的無縫鏈接,不然你會很痛苦,你要花很多時間去跨越。
(10)而我們前邊講的關于HAL關于標準庫關于RTOS的這些關鍵都會在我的測溫儀的課程里面詳細的跟大家分享到。
(11)至于薪資的問題我覺得基于你目前的情況15K是OK的。