Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1163257
  • 博文数量: 53
  • 博客积分: 1165
  • 博客等级: 下士
  • 技术积分: 1811
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-19 14:56
个人简介

专注于操作系统内核的实现

文章分类
文章存档

2015年(2)

2014年(16)

2013年(18)

2012年(17)

分类: IT业界

2015-10-25 23:12:05

截止到今天,我个人已经折腾了四个小玩意儿:高歌一曲(音乐播放器)、LMOSx86_64体系的操作系统内核)、LMOSEMARM体系的操作系统内核),和刚上架不久的计算机图书(《深度探索嵌入式操作系统:从零开始设计、架构和开发》)如下图:


小学四年级时,学校开设了信息课,那是我人生中第一次见到真实的计算机,还是那种又小又厚的CRT显示器,那些计算机放在学校唯一一间铺了地面砖的教室里,那是学校最干净的教室。由于学校当时仅有12台计算机,所以我们同学不得不67个人为一小组共用一台计算机,上课时要脱掉鞋子,不一会儿就会闻到满室的脚臭,上课时老师也不讲什么,就是让我们在一台安装DOS的计算机上玩着超级玛丽,这款游戏00后的孩子们可能不会记得了,大家操作计算机时都是小心翼翼的,生怕弄坏了它,后来才知道其实计算机不那么容易坏的。由于我的身体原因,动作慢,上机的机会总是被同学抢占,最后只能独自一人趴在窗户前看远方的山和树,我承认那时候心中还是有远方的……

       时间是最残忍的,转眼已到2008年,那年我20岁了,也就是那一年我有了自己的第一台计算机,那天晚上电脑城的师傅从组装机器到安装操作系统到最后打开千千静听试听了一首《一剪梅》,仅仅用了差不多10分钟,那熟练轻快的手法,在我心中灌满了钦佩,当时就想什么时候我也能成为这样的高手。吃过晚饭,我想再次打开千千静听播放那首歌,那时就感觉计算机听歌比家里的磁带机爽多了,那位师傅站在我身后,着我折腾了半天也没成功运行那个千千静听软件,只得摇了摇头帮我完成了,我居然连WINXP的开始菜单都不会使用,那时内心沮丧到了极点,感觉不能更丢人了………结果是2008年的6月我就达到了那位师傅的境界,我不屑的对自己说了一句,我要成为一个装机人员吗。

       20088月,我开始了我的编程之路,编程就要学习各种编程语言,我学的第一门编程语言是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万多行了。我深知一个全新的操作系统要进入日常实用,那需要走很长很长的路,并且路的尽头很可能是失败。因为一个人从零开始独立开发操作系统这种行为有点疯、有点神精病。索性用LMOSlibertymadnessoperatingsystem)命名了我的操作系统。管它呢,我反正也不是正常人。

由于ARM的出现,人们生产了各种小型、低功耗的智能硬件,这些智能硬件被嵌入到移动电话、手表、冰箱、空调、电视机、洗衣机等常用电子产品中,使这些常用电子产品功能更加强大,更加智能,而且它们可以连接到网络,便于用户远程操控,从而大大改善了人们的生活。所以2013下半年,我又没忍住自己的好奇心开始学习嵌入式系统了,并写了个嵌入式操作系统——LMOSEM。由于有先前的功底,加上ARM体系很简单,所以学习和实现嵌入式操作系统不算困难。LMOSEM是基于ARM体系的,但是LMOSEMLMOS是完全不同的操作系统,不同的架构、不同的代码,除了重用了LMOS驱动模型中相关数据结构。同时LMOSEM也比LMOS简单的多,内核部分仅仅只有10000多行代码。

由于LMOSEM代码量很小,非常适合写成书,分享出来不是很好吗,代码都写了,写书又有多难呢,心一横,说写就写,写着写着才发现写书比写代码难多了,但是我是个不愿放弃的人,所以就硬着头皮往下写,本书以从零开始设计编写一个可工作的嵌入式操作系统为宗旨,从详细介绍ARM平台体系结构开始、到讨论嵌入式操作系统的开发环境和安装开发工具链,再到嵌入式操作系统架构设计,然后接着从嵌入式操作系统的第一行代码开始,详细讨论实现嵌入式操作系统的HAL层、内存管理、中断管理、驱动模型、进程管理、文件系统,系统API等重要组件,每个组件都从设计数据结构开始,详细讨论其实现细节以及它和硬件平台、其它组件之间的关系,最后呈现一个完整的、可工作的嵌入式操作系统给读者,让读者从实践者的角度了解操作系统的本质。本书名为《深度探索嵌入式操作系统:从零开始设计、架构和开发》现在已经出版上架。

       最新版本的LMOS加入了图形驱动和ACPI电源管理驱动如下所示 以后我会继续折腾LMOSLMOSEM两大操作系统,会让这两个操作系统变得越来越强大,也许会有更多的书籍,我的宗旨是生命不息,折腾不止,所以这不是结束,这才开始……

关于我的博客:

http://blog.chinaunix.net/uid/28032128.html


      QQ:609379965
      微博:

关于LMOS


LMOS的视频:

 关于LMOSEM


关于《深度探索嵌入式操作系统:从零开始设计、架构和开发》

若有意支持请点击:,或者分享扩散此博文也是对LMOS的支持,先在此谢谢了!!






阅读(18343) | 评论(19) | 转发(2) |
0

上一篇:裸机版的hello world

下一篇:没有了

给主人留下些什么吧!~~

lmnos2016-03-24 13:37:59

xiaqian369:先说下楼主确实很牛。 要说我接触计算机时间也不少了,从2006年开始到现在。从第一次进公司接触vxworks,到现在接触linux,说实话也一直在这些操作系统上面做着自己的应用开发,但事实上虽然实现了功能,但仍然是一知半解!   举个例子, 这两天在处理一个串口通信的问题的时候, 调用read函数, 从fd当中读数据, 我虽然知道read就是干这事儿的,但却不知道为啥它能干这事,能干到个啥程度,操作系统是怎么一行行代码执行起这个read的,怎么最终把从键盘进去的流搞到串口中去的.......等等等等,   这些鸟事情有时候做完了心里一万个为什么的问号飞奔。 但还是没有楼主的钻研精神,所以很佩服。
   另外,楼主是在chinaunix常驻么? 我对楼主的那本书很有兴趣, 怕有问题之后找不到答疑解惑的......

一直常驻 另外您 过奖了 

回复 | 举报

xiaqian3692016-03-01 13:23:43

先说下楼主确实很牛。 要说我接触计算机时间也不少了,从2006年开始到现在。从第一次进公司接触vxworks,到现在接触linux,说实话也一直在这些操作系统上面做着自己的应用开发,但事实上虽然实现了功能,但仍然是一知半解!   举个例子, 这两天在处理一个串口通信的问题的时候, 调用read函数, 从fd当中读数据, 我虽然知道read就是干这事儿的,但却不知道为啥它能干这事,能干到个啥程度,操作系统是怎么一行行代码执行起这个read的,怎么最终把从键盘进去的流搞到串口中去的.......等等等等,   这些鸟事情有时候做完了心里一万个为什么的问号飞奔。 但还是没有楼主的钻研精神,所以很佩服。
   另外,楼主是在chinaunix常驻么? 我对楼主的那本书很有兴趣, 怕有问题之后找不到答疑解惑的......

lmnos2015-11-23 11:42:53

dyg540:碰到大神了,请问用什么开发板可以跑你的系统?

友善mini2440

回复 | 举报

dyg5402015-11-23 09:25:35

碰到大神了,请问用什么开发板可以跑你的系统?

lmnos2015-11-22 14:15:08

cgweb:这本书不错,加油!我也是在CU混了多年,出过一些Linux书籍。

感谢认同和支持,你也是LINUX大牛吧

回复 | 举报