書籍
我的嵌入式知識也不是很精通,中文版只看了三本:
1.Tonardo/VxWorks入門與提高,現在早就不出版了,我看的也是影印版的。書裏的內容比較基礎,也基本覆蓋了各個知識點,作爲一本入門的書籍已經是很好的了。介紹的是5.5的開發和它的集成開發環境Tornado2.2。
2.VxWorks下設備驅動程序及BSP開發指南,我看的時候基本是掃着過的,感覺內容也比較一般。
3.VxWorks設備驅動開發詳解,前幾章簡單講了VxWorks的操作系統,如果以前對操作系統有深入的瞭解,看起來一定會事半功倍,不瞭解的話也還好,它講的並不是很深,並且由於vxWorks不是開源的,很多地方也都是點到爲止。後面主要講解設備驅動,即使不做驅動的話也很有必要把中間兩篇的驅動基礎知識掌握好一點,最後的設備驅動主要給開發人員的參考吧,我也主要是做應用,所以瞭解並不是很多。
做嵌入式軟件時間並不長,對很多東西瞭解不多,VxWorks方面主要看過這三本,mark一下,方便自己,也希望能幫助他人。
實時操作系統:保證在一定時間限制下完成特定功能,對外部的異步事件作出響應
微內核:提供最基本的服務,如進程調度、進程間通信、存儲管理、I/O,其他服務如文件管理、網絡支持等通過接口連接到微內核
任務
任務狀態
狀態轉移
任務調度
優先級搶佔
時間片輪轉
任務調度的時機:從內核態退出(系統調用,中斷)任務操作
創建:spawn, 相當於linux中fork+exec;任務棧的大小初始固定
共享內存空間,相當於linux線程,調度的基本單元,共享內存空間
根進程爲usrRoor,不存在僵死進程
可分爲用戶態,內核態,但沒有內核棧的概念
調試
- 經常在開發過程中遇到硬件系統比較稀缺的情況,這時如果程序不涉及驅動程序,可以通過仿真主機vxSim作爲目標進行調試,也可以嘗試在安裝虛擬機,然後把程序下到虛擬機中運行。對於一般純軟件的問題,基本都和在實際系統運行效果一致。
- 說說vxWorks的交叉編譯環境,因爲風河提供了windows下的集成開發環境,所以大多數人都是直接應用Tornado或Workbench,它們對應的vxWorks版本不一致。工具提供了兩種編譯工具鏈,diab和gnu。因爲gnu是免費的,所以我開發時也是應用的這個,gnu包括gcc,gdb等。關於它們的用法可以查看相關資料。
3.一般新建工程的時候可以選擇帶有操作系統的程序和不帶操作系統的兩種,也對應兩種調試方式。一種就是不帶操作系統,首先將純淨版的系統下載到目標板運行,然後再單獨編譯應用程序進行下載,但要注意涉及到重啓之類的調試需慎重。另一種就是帶有操作系統的程序,由於目標程序比較大,所以下載時間也比較長。
4.對於單任務程序,或者完全可控的多任務程序或者帶有中斷的程序,都可以通過單步調試的方法進行調試,此時需要使target server運行於目標板,並通過BACK END方式保持server和agent之間的通信。但是對於調試實時性的多任務程序,一般不建議進行單步調試,因爲此時可能會丟失很多有用信息。
to be continued