RTT之内核服务函数】的更多相关文章

一 延时函数: rt_thread_delay(t) //调用时进入系统调度. rt_kprintf()函数在kservice.c中实现,如果不使用设备驱动,则由自定义函数void rt_hw_console_output(const char *str)实现.前提是在rt_hw_board_init()中调用串口初始化函数.…
转自:http://blog.csdn.net/ubuntulover/article/details/5988220 早上听人说到某个程序的一部分是内核态,另一部分是用户态,需要怎么怎么.当时突然想知道,用户的程序可以直接调用内核函数吗?(现在突然发觉这问题有点可笑,若是可以随便调,那系统岂不是乱套了)从网上找到下面这篇文章,讲的还算透彻. 现在自己的理解是,用户程序不可用直接调用内核函数,除非通过系统调用接口.如果想调用哪个内核函数(或自己写的内核函数),怎么办?增加一个系统调用就行了. 原…
其实这不是我的优化,我是借用了BBR之力.         借了什么力呢?这是我一再强调的,BBR最大的共享不是为Linux贡献了一个TCP拥塞控制算法(它同时在也BSD上被实现...),而是它重构了Linux TCP的实现!借助BBR对Linux TCP实现的重构,很多之前做不到的事情,现在可以做到了.         简而言之,BBR算法对Linux TCP实现的重构中,将以下三件事完全分离: 1.重传哪些包: 2.传输多少包: 3.实际传输. 拥塞控制算法侧重解决上述第2点问题. ----…
信号分类 不可靠信号 Linux信号机制基本上是从UNIX系统中继承过来的.早期UNIX系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是: 1.进程每次处理信号后,就将对信号的响应设置为默认动作.在某些情况下,将导致对信号的错误处理:因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号. 2.因此导致, 早期UNIX下的不可靠信号主要指的是进程可能对信号做出错误的反应以及信号可能丢失. Linux支持不可靠信号,但是对不可…
APC:异步过程调用.这是一种常见的技术.前面进程启动的初始过程就是:主线程在内核构造好运行环境后,从KiThreadStartup开始运行,然后调用PspUserThreadStartup,在该线程的apc队列中插入一个APC:LdrInitializeThunk,这样,当PspUserThreadStartup返回后,正式退回用户空间的总入口BaseProcessStartThunk前,会执行中途插入的那个apc,完成进程的用户空间初始化工作(链接dll的加载等) 可见:APC的执行时机之一…
32位系统中有4GB的虚拟地址空间 每个进程有一个地址空间,共4GB,(具体分为低2GB的用户地址空间+高2GB的内核地址空间) 各个进程的用户地址空间不同,属于各进程专有,内核地址空间部分则几乎完全相同 虚拟地址如0x11111111,  看似这8个数字是一个整体,其实是由三部分组成的,是一个三维地址,将这个32位的值拆开,高10位表示二级页表号,中间10位表示二级页表中的页号,最后12位表示页内偏移(2^12=4kb),因此,一个虚拟地址实际上是一个三维地址,指明了本虚拟地址在哪个二级页表,…
让一个LED灯闪烁不过瘾,我们应该让这块开发板完成一点更高难度的任务:比如让两个LED灯闪烁. …… 当然了,以我们的现在使用的空循环技术,还是可以实现这点的.但是这样显得略为低端.所以我们使用一个高端点的技术:中断.还有就是会介绍一下在CMSIS里怎么使用中断. 一.电路 二.实现思路 第一个LED的闪烁还是用之前使用的空循环吧,别把世界弄得太复杂了. 第二个LED的闪烁就稍微自动化一点了:使用一个定时器,让它在到了需要切换引脚电平的时候通知我们一下.这样做的好处就是我们只需在定时器通知时关注…
后文rtt代表RT-Thread 在官网公众号中,看到rtt发布了rtt nano,这个就很轻量级的rtos内核,把多余的驱动都裁剪了,因此移植工作量小,可以哪来学习一番,体验rtt之美 rtt现在也集成到cubemx5.0以上的平台,类似于freertos中间件,这个做法,倒是有点类似于大厂的风格了,看好rtt. 在keil5中,有两种方法可以移植rtt nano.前提条件是:cubemx生成一个最小的裸机led系统.MRTE的方法,1.这个需要下载pack包RealThread::RT-Th…
Windows的地址空间分用户模式与内核模式,低2GB的部分叫用户模式,高2G的部分叫内核模式,位于用户空间的代码不能访问内核空间,位于内核空间的代码却可以访问用户空间 一个线程的运行状态分内核态与用户态,当指令位于用户空间时,就表示当前处于内核态,当指令位于内核空间时,就处于内核态. 一个线程由用户态进入内核态的途径有3种典型的方式: 1. 主动通过int 2e(软中断自陷方式)或sysenter指令(快速系统调用方式)调用系统服务函数,主动进入内核 2. 发生异常,被迫进入内核 3. 发生硬…
引子 2006年,中国互联网上的斗争硝烟弥漫.这时的战场上,先前颇为流行的窗口挂钩.API挂钩.进程注入等技术已然成为昨日黄花,大有逐渐淡出之势:取而代之的,则是更狠毒.更为赤裸裸的词汇:驱动.隐藏进程.Rootkit-- 前不久,我不经意翻出自己2005年9月写下的一篇文章<DLL的远程注入技术>,在下面看到了一位名叫L4bm0s的网友说这种技术已经过时了.虽然我也曾想过拟出若干辩解之词聊作应对,不过最终还是作罢了--毕竟,拿出些新的.有技术含量的东西才是王道.于是这一次,李马首度从ring…