編輯:關於android開發
截止到今天,我個人已經折騰了四個小玩意兒:高歌一曲(音樂播放器)、LMOS(x86_64體系的操作系統內核)、LMOSEM(ARM體系的操作系統內核),和剛上架不久的計算機圖書(《深度探索嵌入式操作系統:從零開始設計、架構和開發》)如下圖:
小學四年級時,學校開設了信息課,那是我人生中第一次見到真實的計算機,還是那種又小又厚的CRT顯示器,那些計算機放在學校唯一一間鋪了地面磚的教室裡,那是學校最干淨的教室。由於學校當時僅有12台計算機,所以我們同學不得不6、7個人為一小組共用一台計算機,上課時要脫掉鞋子,不一會兒就會聞到滿室的腳臭,上課時老師也不講什麼,就是讓我們在一台安裝DOS的計算機上玩著超級瑪麗,這款游戲00後的孩子們可能不會記得了,大家操作計算機時都是小心翼翼的,生怕弄壞了它,後來才知道其實計算機不那麼容易壞的。由於我的身體原因,動作慢,上機的機會總是被同學搶占,最後只能獨自一人趴在窗戶前看遠方的山和樹,我承認那時候心中還是有遠方的……
時間是最殘忍的,轉眼已到2008年,那年我20歲了,也就是那一年我有了自己的第一台計算機,那天晚上電腦城的師傅從組裝機器到安裝操作系統到最後打開千千靜聽試聽了一首《一剪梅》,僅僅用了差不多10分鐘,那熟練輕快的手法,在我心中灌滿了欽佩,當時就想什麼時候我也能成為這樣的高手。吃過晚飯,我想再次打開千千靜聽播放那首歌,那時就感覺計算機聽歌比家裡的磁帶機爽多了,那位師傅站在我身後,著我折騰了半天也沒成功運行那個千千靜聽軟件,只得搖了搖頭幫我完成了,我居然連WINXP的開始菜單都不會使用,那時內心沮喪到了極點,感覺不能更丟人了………結果是2008年的6月我就達到了那位師傅的境界,我不屑的對自己說了一句,我要成為一個裝機人員嗎。
2008年8月,我開始了我的編程之路,編程就要學習各種編程語言,我學的第一門編程語言是VB。其實我是受人所騙,聽別人說VB是很牛逼的語言,我才學的,學了之後感覺VB編程就是繪制控件……設置控件屬性……編寫少量的響應事件的代碼……後來才發現VB是大學中文系的萌妹子們都必學必會的語言,也知道了VB編程如此簡單,是因為微軟幫我們做了很多很多的事情……但是要證明自己學過VB,就得用它寫個軟件,寫什麼呢,我想到了當時自己非常佩服的千千靜聽,於是我准備寫個音樂播放器,開始是准備直到2009年的三八節才開始,用了BASS的音頻解碼器庫,大概花了一個多月終於完成了一個像模像樣的音樂播放器,並且不知天高地厚取了個響亮的名字——高歌一曲,高歌一曲是基於.net環境開發的,集播放,音效,強大的擴展性於一身的音樂播 放器.支持 DirectSound、內核音頻流(Kernel Streaming)音頻流輸出,支持mp3;ape;wma;;flac;ogg;cda;tta;acc+;ac3;MOD等十多種音頻格式.支持10波段均衡器、多級杜比環繞、 淡入淡出音效.高歌一曲還有智能文件判斷程式,超強解碼程式,高效動態內存分配程式,音樂文件管理程式.如下圖:
後來我開始上網,發現很多高精尖的軟件用VB是不可能實現的,這時我才猛然醒悟原來VB是如此的LOW,接著我知道了C語言,當時就感覺這是一門高逼格的語言,於是又開始風一樣的學C,像很大學生一樣看的第一本C教程就是那“老譚C”,看了之後,除了能寫那個聞名整個計算機界的“hello world”程序,其它什麼也干不了,干不了就不干,接著折騰C++、JAVA,結果是如出一轍,還是只能寫個“hello world”程序,每天上10遍的問自己這是為什麼,為什麼會這樣,還好我有互聯網,它讓我又發現了算法與數據結構,折騰完之後,總算可以寫一些小功能的軟件了,或許那根本就稱不上功能,既然如此那就繼續折騰,果不其然,我又發現了操作系統API,就是這樣操作系統這個詞第一次正式出現在我腦海中,在此之前,我認為計算機買來就應該這樣,它從電路上就應該支持如此多的功能,現在想來以前是有多傻逼才會有這樣的想法……
操作系統是什麼,它究境干了些什麼,為了解決這些問題我看了不下五本操作系統理論書籍。這些書籍不是讓人們開發操作系統的,但是卻讓我明白了無論多高逼格的應用軟件都是操作系統支撐的,同時也知道了操作系統也是軟件它的下層才是硬件,但總的來說操作系統在我印象中留下了神秘的感覺,其實我對神秘的東西是非常感興趣的,面對這種神秘,只有兩個選擇:要麼放棄,要麼刨根問底,我選擇了後者,因為我不能放棄,最終我像極度瘋狂的下了一個決定:操作系統才我想寫的軟件。
我想我已經開始入魔了,為了一探究竟,我像一個變態一樣折騰現有的操作系統:LINUX NT MACH FREEBSB SOLARIS MINIX L4,凡是與這些比較相關的書都找來看,但是這並不能讓我寫出操作系統,因為我不了解硬件平台體系,所以又看了各種硬件層相關的書籍,這其實大部分來至intel官方的PDF。在此之前還學習了微機原理與匯編語言。
書看的多了也就漸漸的有了自己的想法和見解,我就想啊,既然是寫操作系統,我為什麼不能把這些想法用代碼實現出來,放在真正的計算機上驗證一下呢,就這樣就有了我的LMOS的雛形了。從第一行引導代碼開始,一次又一次的代碼重構,一次又一次的面對莫名的死機而絕望,但內心卻不願放棄,那麼剩下的就是不斷的改進,不斷的折騰,最終於變成了現在的LMOS。經過我這幾年的獨立開發,現在已經發布了7個測試版本。先後從32位單CPU架構發展到64位多CPU架構,現在的LMOS已經是多進程、多線程、多CPU、支持虛擬內存的x86_64體系下的全64位操作系統內核,代碼量已經有10萬多行了。我深知一個全新的操作系統要進入日常實用,那需要走很長很長的路,並且路的盡頭很可能是失敗。因為一個人從零開始獨立開發操作系統這種行為有點瘋、有點神精病。索性用LMOS(liberty,madness,operating,system)命名了我的操作系統。管它呢,我反正也不是正常人。
由於ARM的出現,人們生產了各種小型、低功耗的智能硬件,這些智能硬件被嵌入到移動電話、手表、冰箱、空調、電視機、洗衣機等常用電子產品中,使這些常用電子產品功能更加強大,更加智能,而且它們可以連接到網絡,便於用戶遠程操控,從而大大改善了人們的生活。所以2013下半年,我又沒忍住自己的好奇心開始學習嵌入式系統了,並寫了個嵌入式操作系統——LMOSEM。由於有先前的功底,加上ARM體系很簡單,所以學習和實現嵌入式操作系統不算困難。LMOSEM是基於ARM體系的,但是LMOSEM和LMOS是完全不同的操作系統,不同的架構、不同的代碼,除了重用了LMOS驅動模型中相關數據結構。同時LMOSEM也比LMOS簡單的多,內核部分僅僅只有10000多行代碼。
由於LMOSEM代碼量很小,非常適合寫成書,分享出來不是很好嗎,代碼都寫了,寫書又有多難呢,心一橫,說寫就寫,寫著寫著才發現寫書比寫代碼難多了,但是我是個不願放棄的人,所以就硬著頭皮往下寫,本書以從零開始設計編寫一個可工作的嵌入式操作系統為宗旨,從詳細介紹ARM平台體系結構開始、到討論嵌入式操作系統的開發環境和安裝開發工具鏈,再到嵌入式操作系統架構設計,然後接著從嵌入式操作系統的第一行代碼開始,詳細討論實現嵌入式操作系統的HAL層、內存管理、中斷管理、驅動模型、進程管理、文件系統,系統API等重要組件,每個組件都從設計數據結構開始,詳細討論其實現細節以及它和硬件平台、其它組件之間的關系,最後呈現一個完整的、可工作的嵌入式操作系統給讀者,讓讀者從實踐者的角度了解操作系統的本質。本書名為《深度探索嵌入式操作系統:從零開始設計、架構和開發》現在已經出版上架。
最新版本的LMOS加入了圖形驅動和ACPI電源管理驅動如下所示 以後我會繼續折騰LMOS、LMOSEM兩大操作系統,會讓這兩個操作系統變得越來越強大,也許會有更多的書籍,我的宗旨是生命不息,折騰不止,所以這不是結束,這才開始……
關於我的博客:
http://blog.chinaunix.net/uid/28032128.html
http://www.it168.com/redian/lmos/
QQ:609379965
微博:http://weibo.com/LMOSKERNEL
關於LMOS:
http://www.iqiyi.com/w_19rs4e0k05.html#vfrm=2-3-0-1
關於LMOSEM:
關於《深度探索嵌入式操作系統:從零開始設計、架構和開發》
若有意支持請點擊:http://product.china-pub.com/4879889,或者分享擴散此博文也是對LMOS的支持,先在此謝謝了!!
Android群英傳-拼圖游戲puzzle-代碼設計和實現 上個周末,3個小時總體上讀完了《Android群英傳》,本周主要在研究代碼層次的設計和實現。 編譯安裝在手
手機影音4--視頻播放器的基本功能(1),4--基本功能 1.MediaPlayer和VideoView介紹 Android 系統中提供開發者開發多媒體應用(音視頻方面)
小波Linux安卓Sqlite數據庫實現用戶登錄注冊,通俗易懂!,安卓sqlite看了很多別人寫的安卓SQlite數據的操作代碼,都是浮雲,瞎弄!一點也不通俗易懂,我覺得
Android Studio添加Parcelable序列化小工具(快速提高開發效率) Android Studio添加Parcelable序列化小工具(快速提高開發效