准备工作   内核开发是编写代码以及调试各种系统组件的漫长过程.一开始这似乎是一个让人畏惧的任务,但是并不需要大量的工具集来编写自己的内核.这个内核开发教程主要涉及使用GRUB将内核加载到内存中.GRUB需要被定向到受保护的二进制镜像中,这个镜像就是我们将要构建的内核.   使用本教程,你至少需要具备C语言基础,并且强烈推荐了解x86汇编知识,它允许你操作处理器中特定的寄存器.所以你至少需要一个可以生成32位编码的编译器,一个32位的链接器和一个能生成32位x86的汇编器.   对于硬件,你必须…
介绍   内核开发不是件容易的事,这是对一个程序员编程能力的考验.开发内核其实就是开发一个能够与硬件交互和管理硬件的软件.内核也是一个操作系统的核心,是管理硬件资源的逻辑.   处理器或是CPU是内核需要管理的最重要的系统资源之一.内核对其的管理体现在:给特定操作分配时间,并允许在另一个调度事件发生时中断任务或进程.也就是多任务处理(multitasking).多任务处理的实现方式有: 协作式多任务处理(cooperative multitasking):当程序自身想要放弃处理下一个可执行进程或…
目录 创建main函数和链接C文件 PS: 下面是我自己写的 Win10安装gcc编译器 本节教程对应的Linux下的编译脚本 _main的问题 创建main函数和链接C文件   一般C语言使用main()函数作为程序的入口点, 为了符合我们平时的编程习惯, 这里我们也使用main()函数作为C代码的入口点, 并在"start.asm"文件中添加中断服务程序来调用C函数.   在这一节教程,我们将尝试创建一个"main.c"文件和一个包含常用函数原型的头文件&quo…
全局描述符表(GDT)   在386平台各种保护措施中最重要的就是全局描述符表(GDT).GDT为内存的某些部分定义了基本的访问权限.我们可以使用GDT中的一个索引来生成段冲突异常, 让内核终止执行异常的进程.现代操作系统大多使用"分页"的内存模式来实现该功能, 它更具通用性和灵活性.GDT还定义了内存中的的某个部分是可执行程序还是实际的数据.GDT还可定义任务状态段(TSS).TSS一般在基于硬件的多任务处理中使用, 所以我们在此并不做讨论.需要注意的是TSS并不是启用多任务的唯一方…
目录 内核初步 内核入口 链接脚本 汇编和链接 PS: 下面是我自己写的 64位Linux下的编译脚本 内核初步   在这节教程, 我们将深入研究一些汇编程序, 学习创建链接脚本的基础知识以及使用它的原因.最后, 我们将学习如何使用batch(批处理)文件自动汇编.编译和链接这个最基本的受保护模式下的内核.本教程假定你已经安装了NASM和GCC, 并且了解一点点x86汇编语言. 内核入口   内核的入口点是当引导程序(bootloader)调用内核时最先执行的代码段.这段代码一直以来几乎都是使用…
中断描述符表(IDT)   中断描述符表(IDT)用于告诉处理器调用哪个中断服务程序(ISR)来处理异常或汇编中的"int"指令.每当设备完成请求并需要服务事, 中断请求也会调用IDT条目.异常和ISR将在下一节进行详细的说明.   每一项IDT都与GDT相似, 两者都有一个基地址, 一个访问标志, 而且都长64bits.这两类描述符表最主要的区别在于这些字段的含义: 在IDT中的基地址是中断时应调用的ISR的地址.IDT也没有边界(limit), 而是需要一个指定的段, 该段与给定的…
中断服务程序(ISR)   中断服务程序(ISR)用于保存当前处理器的状态, 并在调用内核的C级中断处理程序之前正确设置内核模式所需的段寄存器.而工作只需要15到20行汇编代码来处理, 包括调用C中的处理程序.我们还需要将IDT条目指向正确的ISR以正确处理异常.   异常是导致处理器无法正常执行的特殊情况, 比如除以0结果是未知数或者非实数, 因此处理器会抛出异常, 这样内核就可以阻止进程或任务引起任何问题.如果处理器发现程序正尝试访问不允许其访问的内存, 则会引起一般保护错误.当你设置内存页…
打印到屏幕   现在, 我们需要尝试打印到屏幕上.为此, 我们需要管理屏幕滚动, 如果能允许使用不同的颜色就更好了.好在VGA视频卡为我们提供了一片内存空间, 允许同时写入属性字节和字符字节对, 可以更简单地在屏幕上显示信息.VGA控制器负责自动绘制屏幕上的更新.屏幕滚动由内核软件来管理.从技术上讲, 这将是我们写的第一个驱动程序.   如上所述, 文本空间只是我们地址空间的一块存储区域, 这片缓冲区位于物理内存的0xB800地址, 缓冲区的数据类型为"short"类型, 这意味着这片…
http://www.cnblogs.com/liloke/archive/2011/12/21/2296004.html 最近在看<orange’s>一书,有点想自己写一个轻量级OS的想法,设计和架构上会参照orang’s和Linux 0.11 kernel. 这个网站,上面的资料对于我这样的新手无疑是一份宝贵的财富啊.它详细介绍了内核程序必不可少的几大模块,并且对于每一个模块都有一些代码示例.看着文章代码,边做边学,真是一件愉快的事情 本来还想翻译成中文献给大家,不过google了一下,已…
目录 1 Linux-RT内核简介 3 2 Linux系统实时性测试 3 3 rt_gpio_ctrl案例 10 4 rt_input案例 15 本文为Linux-RT内核应用开发教程的第一章节--Linux-RT内核简介.Linux系统实时性测试,欢迎各位阅读!本期用到的案例板子是创龙科技旗下的A40i工业级别开发板,是基于全志科技A40i处理器设计,4核ARM Cortex-A7的高性能低功耗国产开发板,每核主频高达1.2GHz. 基于全志科技A40i开发板,其接口资源丰富,可引出双路网口.…
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝不允许重名,我取名叫“快乐贪吃蛇”.应用宝链接:http://sj.qq.com/myapp/detail.htm?apkName=net.chengyujia.happysnake 同时我也将本游戏的源代码上传到了GitHub,欢迎大家Fork.GitHub链接:https://github.co…
要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方审核,审核通过之后,会在后台顶部出现“高级功能”菜单. 使用“高级功能”>“开发模式”之前,必须有一个已经部署在Internet上,可以用80端口访问的网站(域名或IP访问都可以),一些开发的准备工作见文章:Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者 首次进入“高…
摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等内容. 3.2 Linux常见命令 本节对进行嵌入式Linux开发经常会用到的一些操作和相关命令,进一步加深对Linux的了解.命令是Linux最重要的人机交互界面之一,学习和掌握Linux命令是学习Linux不可逾越的阶段.在Shell下,一些命令加上一些参数,或者几个简单命令进行组合,可以完成在图形界面下…
嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核锁? Linux的内核锁主要是自旋锁和信号量. 自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用.要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行.自旋锁可以在任何时刻防止多于一个的执行…
YAML 文件是新引入的重要项目文件,在 Drupal 8 中,无论是模块.主题还是安装配置文件,都需要 .info.yml 文件来为其存储项目相关的基础信息. 在 Drupal 中,.info.yml 文件通常会被作为以下用途进行使用: 向 Drupal 声明模块.主题.安装配置文件的存在情况 向 Drupal Web管理界面提供信息 提供模块启.禁用条件以及版本兼容性信息 其它管理用途 Hello World 示例 以下是一个简单的 hello_world.info.yml 文件,你可以在本…
blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C 这课的主要内容有 iOS包括四层 内核 Core Sevices层 多媒体层 Cocoa Touch 层 介绍平台的组成 重点介绍下MVC 三大阵营 model  view  controller 有了这三个阵营剩下的就是他们之间管理和通信了 mvc群 objective-c语言的基本概念 Obj…
原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8113948   2.开发环境配置 2.1 系统要求 1)      支持的操作系统 A.      Windows XP(32位).Vista(32/64位).Windows 7(32/64位) B.      Mac…
原文地址: ArcGIS Runtime for Android开发教程V2.0(1)基本概念 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8113183   1.基本概念 1.1 Android简介         2007年11月,Google推出移动操作系统Android,并宣称Android是首个为移动终端打造的真正开放和完整的移动操作系统.自此,基于And…
Unity网络多玩家游戏开发教程第1章Unity自带网络功能 Unity拥有大量的第三方插件.专门提供了对网络功能的支持. 可是.大部分开发人员第一次接触到的还是Unity自带的网络功能.也就是大家常常说到的Unity Networking API.这些API是借助于组件NetworkView发挥作用的,而它能够简化开发人员大量的网络功能编码任务.本文选自<Unity网络多玩家游戏开发教程(大学霸内部资料)> NetworkView组件 在Unity中,NetworkView组件用于处理游戏在…
Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 第一节: 前言(技术简介) EasyUI 是一套 js的前端框架 利用它可以快速的开发出好看的 前端系统 web 它是在jquery的框架基础上面 现在越来越多的 企业用它来开发web系统 extjs (功能很强大 但是非常复杂 速度 我感觉也没有 easyui快) easyui (比较适合初学者 小巧 而且 速度感觉还是可以 相对ext来说 ) ASP.NET MVC Sqlite 数据库 (一个小型的数据库…
PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行. 1.线程安全宏定义 在TSRM/TSRM.h文件中有如下定义 #define TSRMLS_FETCH()       void ***tsrm_ls = (void ***) ts_resource_ex(0, NULL)#define TSRMLS_FETCH_FRO…
仙剑奇侠传 开发  游戏 开发 教程 Xianjian qixia development Game development tutorial 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com 2D游戏技术.游戏地图系统.GUI系统.战斗系统设计.任务系统.声音系统和C.C++编程技术 1 1. RPG游戏的概述   | 18:24  2 2. 游戏的初始化  | 20:15  3 3. 开…
关注,QQ群,微信应用号社区 511389428,511389428 微信应用开放的服务和组件包含如下: 视图容器:视图(View).滚动视图.Swiper 基础内容:图标.文本.进度条 表单组件:按钮.表单等等 操作反馈 导航 媒体组建:音频.图片.视频. 地图 画布 文件操作能力 网络:上传下载能力.WebSocket 数据:数据缓存能力 位置:获取位置.查看位置 设备:网络状态.系统信息.重力感应.罗盘 界面:设置导航条.导航.动画.绘图等等 开放接口:登录,包括签名加密,用户信息.微信支…
Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于是我们发现游戏里的精灵,即使是跳入“万丈深渊”,也依然存活,显然这种游戏逻辑无法让人接受.因此,本节就来说明为精灵添加死亡和重生这两种状态的方法,并使用脚本实现这两种状态的逻辑.具体的实现步骤如下: (1)在Hierarchy视图里,新建一个Empty对象,并命名为Death Trigger,设置其…
Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以及游戏逻辑的想象空间.看来有必要让精灵拥有更多的状态,而这就是本章要讲解的主要内容. 摄像头追踪功能 游戏里的精灵可以在游戏场景中任意移动,这没什么问题,可是这就导致了一个问题,就是精灵可能移动到我们的视野之外,或者说游戏视图之外.为了解决这个问题,很多游戏都采用了“摄像头追踪”的方法,使得摄像头的…
Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态.但是这其中还有一些问题.例如,我们无法使用键盘控制精灵当前要进入的动画状态,而且精灵也只是在原地播放动画而已.但我们希望精灵在进入到PlayerWalkingAnimation状态时,位置应该发生改变. 要解决这些问题,就需要编写脚本.也就是说,要使用脚本来实现动画的播放控制,以及其它一些游戏的逻辑…
Unity 2D游戏开发教程之游戏精灵的开火状态 精灵的开火状态 “开火”就是发射子弹的意思,在战争类型的电影或者电视剧中,主角们就爱这么说!本节打算为精灵添加发射子弹的能力.因为本游戏在后面会引入敌人,而精灵最好具备开火的能力,否则会被敌人轻易干掉!具体的实现方法是: (1)导入一个表示子弹的图片到Unity,本示例中选用的子弹图片,名为PlayerBullet,如图2-23所示.   图2-23  导入到游戏项目的表示子弹的图片 (2)拖动此图片到Scene视图,即可在当前的游戏场景中添加此…
Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却无法从低的地面移动到高的地面,因为当前的游戏精灵只能左右移动,即left和right.为了解决这个问题,本节就来为精灵添加跳跃状态.   图2-14  精灵从一个地面移动到另一个地面 (1)如果要为精灵添加跳跃状态,即jump,就不得不再引入其它状态: q   landing:用于表示精灵接触到地面…
关于Bootstrap,相信大家一定不陌生,它已经成为现在主流产业的一个重要工具,Bootstrap提供了优雅的HTML和CSS规范,它基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件.今天,我们带来6款Bootstrap实现的几款小应用,希望可以对你们有所帮助! 移动为先的Bootstrap3 在线演示 Bootstrap3已经发布好几周了, 现在该是我们看看Bootstrap有什么新鲜内容的时候了…
总结linux内核开发的coding style, 便于以后写代码时参考. 下面只是罗列一些规则, 具体说明可以参考: 内核源码(Documentation/CodingStyle) 01 - 缩进 缩进用 Tab, 并且Tab的宽度为8个字符 swich 和 case对齐, 不用缩进 switch (suffix) { case 'G': case 'g': mem <<= 30; break; case 'M': case 'm': mem <<= 20; break; cas…